{"version":3,"sources":["webpack:///./src/views/pages/developmentDone/consultants/calendar.vue","webpack:///./node_modules/preact/dist/preact.module.js","webpack:///./src/components/elements/Calendars.vue","webpack:///./node_modules/preact/hooks/dist/hooks.module.js","webpack:///./node_modules/preact/compat/dist/compat.module.js","webpack:///./node_modules/@fullcalendar/core/vdom.js","webpack:///./node_modules/@fullcalendar/common/vdom.js","webpack:///./node_modules/@fullcalendar/common/main.js","webpack:///./node_modules/@fullcalendar/core/main.js","webpack:///./node_modules/@fullcalendar/vue/dist/options.js","webpack:///./node_modules/@fullcalendar/vue/dist/utils.js","webpack:///./node_modules/@fullcalendar/vue/dist/custom-content-type.js","webpack:///./node_modules/@fullcalendar/vue/dist/FullCalendar.js","webpack:///./node_modules/@fullcalendar/vue/dist/main.js","webpack:///./node_modules/@fullcalendar/daygrid/main.js","webpack:///./node_modules/@fullcalendar/timegrid/main.js","webpack:///./node_modules/@fullcalendar/interaction/main.js","webpack:///./node_modules/@fullcalendar/bootstrap/main.js","webpack:///./node_modules/@fullcalendar/list/main.js","webpack:///src/components/elements/Calendars.vue","webpack:///./src/components/elements/Calendars.vue?c058","webpack:///./src/components/elements/Calendars.vue?b03e","webpack:///src/views/pages/developmentDone/consultants/calendar.vue","webpack:///./src/views/pages/developmentDone/consultants/calendar.vue?6f69","webpack:///./src/views/pages/developmentDone/consultants/calendar.vue?e772","webpack:///./src/services/consultant.js"],"names":["f","render","_vm","this","_c","_self","attrs","title","items","calendarData","length","on","createBusyTime","deleteEvent","dateClicked","_e","$t","scopedSlots","_u","key","fn","proxy","$event","preventDefault","apply","arguments","_v","_s","directives","name","rawName","value","addData","expression","staticClass","domProps","target","composing","$set","model","start","callback","$$v","end","staticStyle","$bvModal","hide","staticRenderFns","view","ref","calendarOptions","c","s","a","h","n","l","u","v","parentNode","removeChild","y","i","t","r","o","children","call","defaultProps","p","type","props","__k","__","__b","__e","__d","__c","__h","constructor","__v","vnode","d","current","_","k","g","b","setProperty","test","style","cssText","replace","toLowerCase","slice","addEventListener","w","m","removeEventListener","indexOf","removeAttribute","setAttribute","event","x","context","A","P","base","C","setTimeout","T","push","$","__r","debounceRendering","e","sort","shift","__P","M","__n","ownerSVGElement","N","H","Array","isArray","I","z","L","nextSibling","q","S","j","some","appendChild","insertBefore","contextType","__E","prototype","B","sub","state","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","forEach","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","O","diffed","localName","nodeType","document","createTextNode","createElementNS","createElement","is","data","childNodes","dangerouslySetInnerHTML","attributes","__html","innerHTML","checked","unmount","componentWillUnmount","D","firstChild","G","Consumer","Provider","splice","getDerivedStateFromError","setState","componentDidCatch","forceUpdate","Promise","then","bind","resolve","__H","__N","__V","requestAnimationFrame","filter","clearTimeout","cancelAnimationFrame","isPureReactComponent","__f","Symbol","for","map","U","__u","__a","__R","__O","pop","fallback","W","delete","revealOrder","size","containerInfo","get","Map","reverse","set","Z","isReactComponent","Object","defineProperty","configurable","writable","J","K","cancelBubble","Q","defaultPrevented","persist","isPropagationStopped","isDefaultPrevented","nativeEvent","nn","class","tn","multiple","selected","defaultValue","className","enumerable","$$typeof","en","globalObj","globalThis","window","flushSync","runBeforeFlush","oldDebounceRendering","callbackQ","execCallbackSync","FullCalendarVDom","console","warn","Component","createRef","Fragment","createContext","createPortal","unmountComponentAtNode","_super","FakeComponent","ContextType","origProvider","_this","isNew","subs_1","_props","old","node","Error","EventSourceApi","internalEventSource","remove","dispatch","sourceId","refetch","sourceIds","isRefetch","publicId","meta","url","format","removeElement","el","elementClosest","selector","closest","documentElement","contains","elementMatches","parentElement","method","matches","matchesSelector","msMatchesSelector","findElements","container","containers","HTMLElement","allMatches","querySelectorAll","PIXEL_PROP_RE","applyStyle","propName","applyStyleProp","val","getEventTargetViaRoot","ev","_a","_b","composedPath","getElRoot","getRootNode","guid$1","getUniqueDomId","buildDelegationHandler","handler","matchedChild","listenBySelector","eventType","attachedHandler","listenToHoverBySelector","onMouseEnter","onMouseLeave","currentMatchedChild","mouseOverEv","realOnMouseLeave_1","mouseLeaveEv","transitionEventNames","whenTransitionDone","realCallback","eventName","createAriaClickAttrs","onClick","createAriaKeyboardAttrs","tabIndex","onKeyDown","guidNumber","guid","String","disableCursor","body","classList","add","enableCursor","preventSelection","allowSelection","preventContextMenu","allowContextMenu","parseFieldSpecs","input","token","specs","tokens","split","charAt","field","substring","order","func","compareByFieldSpecs","obj0","obj1","fieldSpecs","cmp","compareByFieldSpec","fieldSpec","flexibleCompare","localeCompare","padStart","len","substr","formatWithOrdinals","formatter","args","fallbackText","reduce","str","arg","index","compareNumbers","isInt","computeSmallestCellWidth","cellEl","allWidthEl","querySelector","contentWidthEl","getBoundingClientRect","width","DAY_IDS","addWeeks","dateToUtcArray","arrayToUtcDate","addDays","addMs","diffWeeks","m0","m1","diffDays","valueOf","diffHours","diffMinutes","diffSeconds","diffDayAndTime","m0day","startOfDay","m1day","years","months","days","Math","round","milliseconds","diffWholeWeeks","diffWholeDays","timeAsMs","getUTCFullYear","getUTCMonth","getUTCDate","startOfHour","getUTCHours","startOfMinute","getUTCMinutes","startOfSecond","getUTCSeconds","weekOfYear","marker","dow","doy","weekOfGivenYear","nextW","min","year","firstWeekStart","firstWeekOffset","dayStart","floor","fwd","fwdlw","getUTCDay","dateToLocalArray","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","arrayToLocalDate","Date","getUTCMilliseconds","concat","UTC","isValidDate","isNaN","createEventInstance","defId","range","forcedStartTzo","forcedEndTzo","instanceId","hasOwnProperty","mergeProps","propObjs","complexPropsMap","dest","name_1","complexObjs","unshift","undefined","name_2","filterHash","hash","filtered","mapHash","newHash","arrayToHash","_i","a_1","item","hashValuesToArray","obj","isPropsEqual","getUnequalProps","keys","compareObjs","oldProps","newProps","equalityFuncs","isObjValsEqual","val0","val1","comparator","collectFromHash","startIndex","endIndex","step","res","parseRecurring","refined","defaultAllDay","dateEnv","recurringTypes","parsed","parse","allDay","allDayGuess","duration","typeData","typeId","expandRecurring","eventStore","framingRange","pluginHooks","options","defs","instances","instance","recurringDef","def","defaultAllDayEventDuration","defaultTimedEventDuration","starts","expandRecurringRanges","starts_1","eventDef","typeDef","markers","expand","subtract","INTERNAL_UNITS","PARSE_RE","createDuration","unit","parseString","parseObject","exec","sign","parseInt","month","day","hours","hour","minutes","minute","seconds","second","millisecond","ms","weeks","week","specifiedWeeks","durationsEqual","d0","d1","addDurations","subtractDurations","multiplyDuration","asRoughYears","dur","asRoughDays","asRoughMonths","asRoughMs","wholeDivideDurations","numerator","denominator","localRes","greatestDurationDenominator","buildIsoString","timeZoneOffset","stripZeroTime","toISOString","formatTimeZoneOffset","formatDayString","formatIsoTimeString","doIso","abs","mins","isArraysEqual","a0","a1","equalityFunc","memoize","workerFunc","resEquality","teardownFunc","currentArgs","currentRes","newArgs","memoizeObjArg","currentArg","newArg","EXTENDED_SETTINGS_AND_SEVERITIES","separator","omitZeroMinute","meridiem","omitCommas","STANDARD_DATE_PROP_SEVERITIES","timeZoneName","era","weekday","MERIDIEM_RE","COMMA_RE","MULTI_SPACE_RE","LTR_RE","UTC_RE","NativeFormatter","formatSettings","standardDateProps","extendedSettings","severity","max","buildFormattingFunc","formatRange","betterDefaultSeparator","diffSeverity","computeMarkerDiffSeverity","calendarSystem","biggestUnitForPartial","full0","full1","partialDateProps","computePartialFormattingOptions","partialFormattingFunc","partial0","partial1","insertion","findCommonInsertion","defaultSeparator","before","after","getLargestUnit","standardDatePropCnt","formatWeekNumber","computeWeekNumber","weekText","weekTextLong","locale","buildNativeFormattingFunc","sanitizeSettings","timeZone","zeroFormat","normalFormat","Intl","DateTimeFormat","codes","zeroProps","postProcess","injectTzoStr","trim","toLocaleLowerCase","tzoStr","replaced","num","display","parts","simpleNumberFormat","direction","join","ca","getMarkerYear","getMarkerMonth","getMarkerDay","biggestUnit","partialOptions","i0","found0","before0","after0","i1","found1","before1","after1","expandZonedMarker","dateInfo","markerToArray","array","createVerboseFormattingArg","startInfo","endInfo","localeCodes","CmdFormatter","cmdStr","cmdFormatter","FuncFormatter","createFormatter","BASE_OPTION_REFINERS","navLinkDayClick","identity","navLinkWeekClick","bootstrapFontAwesome","buttonIcons","customButtons","nextDayThreshold","scrollTime","scrollTimeReset","Boolean","slotMinTime","slotMaxTime","dayPopoverFormat","slotDuration","snapDuration","headerToolbar","footerToolbar","defaultRangeSeparator","titleRangeSeparator","forceEventDuration","dayHeaders","dayHeaderFormat","dayHeaderClassNames","dayHeaderContent","dayHeaderDidMount","dayHeaderWillUnmount","dayCellClassNames","dayCellContent","dayCellDidMount","dayCellWillUnmount","initialView","aspectRatio","Number","weekends","weekNumberCalculation","weekNumbers","weekNumberClassNames","weekNumberContent","weekNumberDidMount","weekNumberWillUnmount","editable","viewClassNames","viewDidMount","viewWillUnmount","nowIndicator","nowIndicatorClassNames","nowIndicatorContent","nowIndicatorDidMount","nowIndicatorWillUnmount","showNonCurrentDates","lazyFetching","startParam","endParam","timeZoneParam","locales","themeSystem","dragRevertDuration","dragScroll","allDayMaintainDuration","unselectAuto","dropAccept","eventOrder","eventOrderStrict","handleWindowResize","windowResizeDelay","longPressDelay","eventDragMinDistance","expandRows","height","contentHeight","weekNumberFormat","eventResizableFromStart","displayEventTime","displayEventEnd","progressiveEventRendering","businessHours","initialDate","now","eventDataTransform","stickyHeaderDates","stickyFooterScrollbar","viewHeight","eventSourceFailure","eventSourceSuccess","eventDisplay","eventStartEditable","eventDurationEditable","eventOverlap","eventConstraint","eventAllow","eventBackgroundColor","eventBorderColor","eventTextColor","eventColor","eventClassNames","eventContent","eventDidMount","eventWillUnmount","selectConstraint","selectOverlap","selectAllow","droppable","unselectCancel","slotLabelFormat","slotLaneClassNames","slotLaneContent","slotLaneDidMount","slotLaneWillUnmount","slotLabelClassNames","slotLabelContent","slotLabelDidMount","slotLabelWillUnmount","dayMaxEvents","dayMaxEventRows","dayMinWidth","slotLabelInterval","allDayText","allDayClassNames","allDayContent","allDayDidMount","allDayWillUnmount","slotMinWidth","navLinks","eventTimeFormat","rerenderDelay","moreLinkText","moreLinkHint","selectMinDistance","selectable","selectLongPressDelay","eventLongPressDelay","selectMirror","eventMaxStack","eventMinHeight","eventMinWidth","eventShortHeight","slotEventOverlap","plugins","firstDay","dayCount","dateAlignment","dateIncrement","hiddenDays","monthMode","fixedWeekCount","validRange","visibleRange","titleFormat","eventInteractive","noEventsText","viewHint","navLinkHint","closeHint","timeHint","eventHint","moreLinkClick","moreLinkClassNames","moreLinkContent","moreLinkDidMount","moreLinkWillUnmount","BASE_OPTION_DEFAULTS","center","CALENDAR_LISTENER_REFINERS","datesSet","eventsSet","eventAdd","eventChange","eventRemove","windowResize","eventClick","eventMouseEnter","eventMouseLeave","select","unselect","loading","_unmount","_beforeprint","_afterprint","_noEventDrop","_noEventResize","_resize","_scrollRequest","CALENDAR_OPTION_REFINERS","buttonText","buttonHints","views","initialEvents","events","eventSources","COMPLEX_OPTION_COMPARATORS","isMaybeObjectsEqual","VIEW_OPTION_REFINERS","component","buttonTextKey","dateProfileGeneratorClass","usesMinMaxTime","classNames","content","didMount","willUnmount","mergeRawOptions","optionSets","refineProps","refiners","extra","raw","parseEvents","rawEvents","eventSource","allowOpenRange","createEmptyEventStore","eventRefiners","buildEventRefiners","rawEvents_1","rawEvent","tuple","parseEvent","eventTupleToStore","getRelevantEvents","def_1","newStore","filterEventStoreDefs","lookDef","isEventDefsGrouped","def0","def1","groupId","mergeEventStores","store0","store1","filterFunc","excludeSubEventStore","master","filteredDefs","filteredInstances","normalizeConstraint","parseClassNames","EVENT_UI_REFINERS","startEditable","durationEditable","constraint","overlap","allow","color","backgroundColor","borderColor","textColor","EMPTY_EVENT_UI","constraints","allows","createEventUi","combineEventUis","uis","combineTwoEventUis","item0","item1","EVENT_NON_DATE_REFINERS","id","interactive","EVENT_DATE_REFINERS","EVENT_REFINERS","extendedProps","refineEventDef","computeIsDefaultAllDay","recurringRes","parseEventDef","singleRes","parseSingle","hasEnd","ui","eventDefMemberAdders","memberAdder","freeze","startMeta","endMeta","startMarker","endMarker","startInput","createMarkerMeta","isTimeUnspecified","forcedTzo","computeAlignedDayRange","timedRange","dayCnt","computeVisibleDayRange","startDay","endDay","endTimeMS","isMultiDayRange","diffDates","date0","date1","largeUnit","diffWholeYears","diffWholeMonths","parseRange","createMarker","invertRanges","ranges","constraintRange","dateRange","invertedRanges","compareRanges","range0","range1","intersectRanges","newRange","rangesEqual","rangesIntersect","rangeContainsRange","outerRange","innerRange","rangeContainsMarker","constrainMarkerToRange","sliceEventStore","eventUiBases","inverseBgByGroupId","inverseBgByDefId","defByGroupId","bgRanges","fgRanges","eventUis","compileEventUis","origRange","normalRange","slicedRange","isStart","isEnd","invertedRanges_1","invertedRange","invertedRanges_2","bg","fg","hasBgRendering","setElSeg","seg","fcSeg","getElSeg","eventDefs","compileEventUi","sortEventSegs","segs","eventOrderSpecs","objs","buildSegCompareObj","_seg","eventRange","computeSegDraggable","transformers","isDraggableTransformers","transformers_1","transformer","computeSegStartResizable","computeSegEndResizable","buildSegTimeText","timeFormat","defaultDisplayEventTime","defaultDisplayEventEnd","startOverride","endOverride","eventInstance","wholeEventStart","wholeEventEnd","segStart","segEnd","isStartDay","isEndDay","getSegMeta","todayRange","nowDate","segRange","isPast","isFuture","isToday","getEventClassNames","isMirror","isDraggable","isStartResizable","isEndResizable","isDragging","isResizing","isSelected","buildEventRangeKey","getSegAnchorAttrs","href","emitter","hasHandlers","trigger","jsEvent","viewApi","STANDARD_PROPS","parseDateSpan","defaultDuration","span","parseOpenDateSpan","standardProps","isDateSpansEqual","span0","span1","isSpanPropsEqual","buildDateSpanApi","buildRangeApi","buildRangeApiWithTimeZone","omitTime","toDate","startStr","formatIso","endStr","fabricateEventRange","dateSpan","triggerDateSelect","selection","pev","buildDateSpanApiWithContext","origEvent","calendarApi","triggerDateUnselect","dateSpanTransforms","transform","getDefaultEventEnd","applyMutationToEventStore","eventConfigBase","mutation","eventConfigs","applyMutationToEventDef","applyMutationToEventInstance","eventConfig","startDelta","endDelta","copy","eventDefMutationAppliers","applier","forceAllDay","clearEnd","datesDelta","ViewApi","getCurrentData","viewTitle","dateProfile","activeRange","currentRange","getOption","EVENT_SOURCE_REFINERS","success","failure","parseEventSource","rawObj","buildEventSourceRefiners","metaRes","buildEventSourceMeta","_raw","isFetching","latestFetchId","fetchRange","sourceDefId","eventSourceRefiners","eventSourceDefs","parseMeta","reduceCurrentDate","currentDate","action","dateMarker","getInitialDate","initialDateInput","getNow","nowInput","createNowMarker","CalendarApi","currentDataManager","batchRendering","updateSize","setOption","optionName","rawOptionValue","currentCalendarOptionsInput","getAvailableLocaleCodes","availableRawLocales","handlerName","currentCalendarOptionsRefiners","off","changeView","viewType","dateOrRange","zoomTo","spec","viewSpecs","getUnitViewSpec","toolbarConfig","viewTypes","header","viewsWithButtons","footer","singleUnit","prev","next","prevYear","addYears","nextYear","today","gotoDate","zonedDateInput","incrementDate","deltaInput","delta","formatDate","settings","dateOrObj","endDate","selectionInput","dateSelection","addEvent","eventInput","sourceInput","_def","_instance","currentData","triggerEventAdd","sourceApi","getEventSourceById","newEventApi","eventApi","relatedEvents","revert","eventApiToStore","getEventById","getEvents","buildEventApis","removeAllEvents","getEventSources","sourceHash","sourceApis","internalId","addEventSource","sources","removeAllEventSources","refetchEvents","scrollToTime","timeInput","time","EventApi","_context","setProp","mutate","setExtendedProp","setStart","instanceRange","granularity","maintainDuration","setEnd","endInput","setDates","moveStart","moveEnd","moveDates","setAllDay","formatInput","context_1","eventStore_1","relevantEvents","oldEvent","asStore","toPlainObject","collapseColor","collapseExtendedProps","toJSON","excludeInstance","eventApis","excludeInstanceId","calendarSystemClassMap","registerCalendarSystem","theClass","createCalendarSystem","GregorianCalendarSystem","arrayToMarker","arr","ISO_RE","DateEnv","isNamedTimeZone","namedTimeZoneImpl","canComputeOffset","weekDow","weekDoy","weekNumberFunc","timestampToMarker","getYear","addMonths","greatestWholeUnit","countDurationsBetween","diff","startOf","startOfYear","startOfMonth","startOfWeek","dateOptions","offsetForMarker","isEndExclusive","extraOptions","omitTimeZoneOffset","timestampToArray","getTimezoneOffset","offsetForArray","globalLocales","MINIMAL_RAW_EN_LOCALE","code","list","RAW_EN_LOCALE","eventCnt","organizeRawLocales","explicitRawLocales","defaultCode","allRawLocales","rawLocaleMap","allRawLocales_1","rawLocale","buildLocale","inputSingular","available","queryLocale","parseLocale","codeArg","queryRawLocale","simpleId","merged","NumberFormat","canVGrowWithinCell","DEF_DEFAULTS","startTime","endTime","daysOfWeek","parseBusinessHours","refineInputs","rawDefs","rawDef","pointInsideRect","point","rect","left","right","top","bottom","intersectRects","rect1","rect2","constrainPoint","getRectCenter","diffPoints","point1","point2","getCanVGrowWithinCell","computeCanVGrowWithinCell","position","div","possible","offsetHeight","EMPTY_EVENT_STORE","Splitter","getKeysForEventDefs","_getKeysForEventDefs","splitDateSelection","_splitDateSpan","splitEventStore","_splitEventStore","splitIndividualUi","_splitIndividualUi","splitEventDrag","_splitInteraction","splitEventResize","eventUiBuilders","splitProps","keyInfos","getKeyInfo","defKeys","dateSelections","individualUi","eventStores","eventDrags","eventDrag","eventResizes","eventResize","info","buildEventUiForKey","keyInfo","buildEventUi","eventSelection","dateSpans","getKeysForDateSpan","keys_1","getKeysForEventDef","splitStores","splitHashes","interaction","splitStates","affectedStores_1","affectedEvents","mutatedKeysByDefId","mutatedEvents","mutatedStores_1","populate","isEvent","allUi","eventUiForKey","baseParts","stuff","getDateMeta","isDisabled","isOther","getDayClassNames","theme","getClass","DAY_FORMAT","WEEK_FORMAT","buildNavLinkAttrs","isTabbable","dateStr","zonedDate","handleInteraction","customAction","_scrollbarWidths","_isRtlScrollbarOnLeft","getIsRtlScrollbarOnLeft","computeIsRtlScrollbarOnLeft","outerEl","border","padding","overflow","innerEl","getScrollbarWidths","computeScrollbarWidths","computeScrollbarWidthsForEl","clientHeight","offsetWidth","clientWidth","computeEdges","getPadding","computedStyle","getComputedStyle","borderLeft","borderLeftWidth","borderRight","borderRightWidth","borderTop","borderTopWidth","borderBottom","borderBottomWidth","badScrollbarWidths","scrollbarLeftRight","scrollbarBottom","scrollbarLeft","scrollbarRight","paddingLeft","paddingRight","paddingTop","paddingBottom","computeInnerRect","goWithinPadding","doFromWindowViewport","outerRect","computeRect","edges","pageXOffset","pageYOffset","computeClippedClientRect","clippingParents","getClippingParents","clippingParents_1","clippingParent","intersection","parents","overflowY","overflowX","unpromisify","isResolved","wrappedSuccess","wrappedFailure","Emitter","handlers","thisContext","setThisContext","setOptions","addToHash","removeFromHash","attachedHandlers","optionHandler","handlers_1","PositionCache","originEl","els","isHorizontal","isVertical","originClientRect","buildElHorizontals","buildElVerticals","originClientLeft","lefts","rights","originClientTop","tops","bottoms","leftToIndex","leftPosition","topToIndex","topPosition","getWidth","leftIndex","getHeight","topIndex","ScrollController","getMaxScrollTop","getScrollHeight","getClientHeight","getMaxScrollLeft","getScrollWidth","getClientWidth","canScrollVertically","canScrollHorizontally","canScrollUp","getScrollTop","canScrollDown","canScrollLeft","getScrollLeft","canScrollRight","ElementScrollController","scrollTop","scrollLeft","setScrollTop","setScrollLeft","scrollWidth","scrollHeight","WindowScrollController","scroll","Theme","iconOverrideOption","setIconOverride","iconOverrideHash","iconClassesCopy","buttonName","iconClasses","applyIconOverridePrefix","prefix","iconOverridePrefix","classes","getIconClass","isRtl","rtlIconClasses","baseIconClass","getCustomButtonIconClass","customButtonProps","iconOverrideCustomButtonOption","ScrollResponder","execFunc","handleScrollRequest","request","queuedRequest","drain","fireInitialScroll","detach","update","isDatesNew","ViewContextType","buildViewContext","viewSpec","viewOptions","dateProfileGenerator","registerInteractiveComponent","unregisterInteractiveComponent","addResizeHandler","removeResizeHandler","createScrollResponder","PureComponent","nextProps","nextState","debug","log","propEquality","stateEquality","safeSetState","newState","addPropsEquality","addStateEquality","BaseComponent","create","setRef","DateComponent","uid","prepareHits","queryHit","positionLeft","positionTop","elWidth","elHeight","isValidSegDownEl","isValidDateDownEl","createPlugin","deps","reducers","isLoadingFuncs","contextInit","eventDragMutationMassagers","dateSelectionTransformers","datePointTransforms","viewPropsTransformers","isPropsValid","externalDefTransforms","viewContainerAppends","eventDropTransformers","componentInteractions","calendarInteractions","themeClasses","namedTimeZonedImpl","elementDraggingImpl","optionChangeHandlers","scrollGridImpl","contentTypeHandlers","listenerRefiners","optionRefiners","propSetHandlers","buildPluginHooks","pluginDefs","globalDefs","isAdded","hooks","addDefs","defs_1","combineHooks","buildBuildPluginHooks","currentHooks","currentOverrideDefs","currentGlobalDefs","overrideDefs","hooks0","hooks1","StandardTheme","compileViewDefs","defaultConfigs","overrideConfigs","ensureViewDef","viewDef","buildViewDef","defaultConfig","overrideConfig","queryProp","theComponent","superType","superDef","defaults","rawOptions","overrides","root","tableCellShaded","buttonGroup","button","buttonActive","close","RenderHook","rootElRef","handleRootEl","elRef","hookProps","ContentHook","defaultContent","backupElRef","innerElRef","innerContent","normalizeClassNames","CustomContentRenderContext","renderId","ContentHookInner","renderInnerContent","updateCustomContent","customContentInfo","destroy","getInnerContent","getContentMeta","contentKey","contentVal","buildLifecycleFuncs","normalizeContent","searchKey","MountHook","rootEl","buildClassNameNormalizer","currentGenerator","currentHookProps","currentClassNames","generator","ViewRoot","customClassNames","parseViewConfigs","inputs","parseViewConfig","createViewHookComponent","viewProps","viewElRef","buildViewSpecs","defaultInputs","optionOverrides","dynamicOptionOverrides","localeDefaults","viewDefs","buildViewSpec","durationInput","durationUnit","singleUnitOverrides","createDurationCached","denom","queryButtonText","optionsSubset","buttonTextMap","queryButtonTitle","buttonKey","optionDefaults","buttonTextOverride","buttonTextDefault","buttonTitleOverride","buttonHint","buttonTitleDefault","durationInputMap","json","JSON","stringify","DateProfileGenerator","initHiddenDays","buildPrev","currentDateProfile","forceToValid","prevDate","currentRangeUnit","build","buildNext","nextDate","currentInfo","isRangeAllDay","renderRange","isValid","buildValidRange","trimHiddenDays","buildCurrentRangeInfo","buildRenderRange","adjustActiveRange","buildDateIncrement","validRangeInput","simpleInput","refineRange","buildRangeFromDuration","buildRangeFromDayCount","buildCustomVisibleRange","getFallbackDuration","computeRes","isHiddenDay","skipHiddenDays","runningCount","visibleRangeInput","customAlignment","rangeInput","isHiddenDayHash","inc","isExclusive","reduceViewType","reduceDynamicOptionOverrides","reduceDateProfile","dp","initEventSources","addSources","parseInitialSources","reduceEventSources","removeSource","fetchDirtySources","fetchSourcesByIds","excludeStaticSources","receiveResponse","fetchId","reduceEventSourcesNewTimeZone","computeEventSourcesLoading","eventSourceHash","sources_1","source","isSourceDirty","doesSourceNeedRange","prevSources","sourceIdHash","nextSources","fetchSource","sourceDef","fetch","xhr","error","message","rawSources","rawSources_1","rawSource","ignoreRange","reduceEventStore","receiveRawEvents","excludeEventsBySourceId","subset","transformRawEvents","calEachTransform","sourceEachTransform","transformEachRawEvent","refinedEvents","refinedEvent","expandRange","rezoneEventStoreDates","oldDateEnv","newDateEnv","excludeInstances","removals","reduceDateSelection","currentSelection","reduceSelectedEvent","currentInstanceId","eventInstanceId","reduceEventDrag","currentDrag","newDrag","reduceEventResize","currentResize","newResize","parseToolbars","calendarOptionOverrides","parseToolbar","sectionStrHash","sectionWidgets","hasTitle","sectionName","sectionStr","sectionRes","parseSection","widgets","calendarCustomButtons","calendarButtonTextOverrides","calendarButtonText","calendarButtonHintOverrides","calendarButtonHints","sectionSubstrs","buttonGroupStr","buttonClick","buttonIcon","click","text","hint","textFallback","prevOrNext","navUnit","eventSourceDef$2","arrayEventSourcePlugin","eventSourceDef$1","funcEventSourcePlugin","requestJson","params","successCallback","failureCallback","toUpperCase","injectQueryStringParams","encodeParams","XMLHttpRequest","open","setRequestHeader","onload","status","responseText","err","onerror","send","encodeURIComponent","JSON_FEED_EVENT_SOURCE_REFINERS","extraParams","eventSourceDef","requestParams","buildRequestParams","errorMessage","jsonFeedEventSourcePlugin","customRequestParams","SIMPLE_RECURRING_REFINERS","startRecur","endRecur","recurring","recurringData","clippedFramingRange","expandRanges","simpleRecurringEventsPlugin","dowHash","dayMarker","instanceStarts","instanceStart","changeHandlerPlugin","handleEventSources","unfoundSources","newInputs","inputs_1","inputFound","unfoundSources_1","unfoundSource","newInputs_1","newInput","handleDateProfile","handleEventStore","globalPlugins","html","buildHtmlRenderer","domNodes","buildDomNodeRenderer","currentEl","currentHtml","currentDomNodes","newDomNodes","newDomNodes_1","newNode","DelayedRunner","drainedOption","isRunning","isDirty","pauseDepths","timeoutId","delay","isPaused","tryDrain","pause","scope","resume","force","depth","drained","clear","TaskRunner","runTaskOption","queue","delayedRunner","task","completedTasks","runTask","buildTitle","buildTitleFormat","CalendarDataManager","computeOptionsData","_computeOptionsData","computeCurrentViewData","_computeCurrentViewData","buildDateEnv","buildTheme","buildDateProfileGenerator","buildViewApi","buildViewUiProps","buildEventUiBySource","buildEventUiBases","parseContextBusinessHours","actionRunner","_handleAction","updateData","currentCalendarOptionsRefined","currentViewOptionsInput","currentViewOptionsRefined","optionsData","currentViewType","currentViewData","calendarContext","initialState","renderableEventStore","selectionConfig","contextAndState","reducer","computeIsLoading","resetOptions","append","isEventsLoading","eventUiSingleBase","eventUiBySource","wasLoading","isLoading","onAction","oldData","changeHandlers","oldCalendarOptions","newCalendarOptions","onData","processRawCalendarOptions","refinedOptions","availableLocaleData","warnUnknownOptions","currentRaw","currentRefined","anyChanges","processRawViewOptions","explicitLocale","ThemeClass","DateProfileGeneratorClass","isLoadingFunc","viewName","CalendarDataProvider","handleData","dataManager","prevProps","newOptionOverrides","NamedTimeZoneImpl","SegHierarchy","strictOrder","allowReslicing","maxCoord","maxStackCnt","levelCoords","entriesByLevel","stackCnts","addSegs","hiddenEntries","insertEntry","entry","findInsertion","isInsertionValid","insertEntryAt","handleInvalidInsertion","levelCoord","thickness","stackCnt","touchingEntry","splitEntry","barrier","partCnt","splitHiddenEntries","entrySpan","barrierSpan","intersectSpans","lateral","insertAt","level","buildEntryKey","newEntry","levelCnt","candidateCoord","touchingLevel","touchingLateral","trackingLevel","trackingCoord","trackingEntries","trackingEntry","searchRes","binarySearch","getEntrySpanEnd","lateralIndex","trackingEntryBottom","destLevel","destLateral","toRects","rects","entries","entries_1","groupIntersectingEntries","merges","entries_2","filteredMerges","hungryMerge","merges_1","merge","joinSpans","searchVal","getItemVal","middleIndex","middleVal","Interaction","isHitComboAllowed","parseInteractionSettings","useEventCenter","interactionSettingsToStore","interactionSettingsStore","ElementDragging","setMirrorIsVisible","bool","setMirrorNeedsRevert","setAutoScrollEnabled","config","DRAG_META_REFINERS","parseDragMeta","leftoverProps","ToolbarSection","widgetGroups","widgetGroup","renderWidgetGroup","isOnlyButtons","widgetGroup_1","widget","titleId","isPressed","activeButton","isTodayEnabled","isPrevEnabled","isNextEnabled","buttonClasses","disabled","groupClassName","Toolbar","startContent","endContent","extraClassName","forceLtr","centerContent","renderSection","ViewContainer","availableWidth","handleEl","updateAvailableWidth","handleResize","liquid","labeledById","EventClicking","handleSegClick","segEl","hasUrlContainer","location","EventHovering","handleEventElRemove","currentSegEl","handleSegLeave","handleSegEnter","triggerEvent","removeHoverListeners","publicEvName","CalendarContent","buildViewPropTransformers","buildToolbarProps","headerRef","footerRef","interactionsStore","viewLabelId","settingsInput","DEFAULT_INTERACTIONS","interactionClasses","interactions","TheInteractionClass","listeners","listeners_1","listener","resizeRunner","viewAspectRatio","toolbarProps","viewVGrow","isHeightAuto","forPrint","viewContext","renderView","buildAppendContent","CalendarInteractionClass","ViewComponent","todayInfo","prevInfo","nextInfo","theClasses","TheClass","CalendarRoot","handleBeforePrint","handleAfterPrint","computeFallbackHeaderFormat","datesRepDistinctDays","CLASS_NAME","renderInner$1","TableDateCell","dayMeta","navLinkAttrs","colCnt","extraHookProps","role","colSpan","extraDataAttrs","isSticky","WEEKDAY_FORMAT","TableDowCell","dateMeta","extraClassNames","NowTimer","initialNowDate","initialNowQueriedMs","computeTiming","currentState","unroundedNow","currentUnitStart","nextUnitStart","waitMs","buildDayRange","DayHeader","createDayHeaderFormatter","dates","renderIntro","explicitFormat","dateCnt","DaySeriesModel","indices","dayIndex","cnt","sliceRange","firstIndex","getDateDayIndex","lastIndex","clippedFirstIndex","clippedLastIndex","ceil","dayOffset","DayTableModel","daySeries","breakOnWeeks","daysPerRow","rowCnt","cells","buildCells","headerDates","buildHeaderDates","rows","row","col","buildCell","seriesSeg","nextIndex","firstCol","lastCol","Slicer","sliceBusinessHours","_sliceBusinessHours","sliceDateSelection","_sliceDateSpan","_sliceEventStore","sliceEventDrag","_sliceInteraction","sliceEventResize","forceDayIfListItem","sliceProps","extraArgs","eventSegs","dateSelectionSegs","businessHourSegs","fgEventSegs","bgEventSegs","sliceNowDate","computeActiveRange","rangeRes","sliceEventRanges","affectedInstances","segs_1","eventRanges","eventRanges_1","sliceEventRange","segs_2","isComponentAllDay","isInteractionValid","isNewPropsValid","isDateSelectionValid","calendarState","dateSpanMeta","filterConfig","isInteractionPropsValid","isDateSelectionPropsValid","subjectEventStore","subjectDefs","subjectInstances","subjectConfigs","otherEventStore","otherDefs","otherInstances","otherConfigs","subjectInstanceId","subjectInstance","subjectRange","subjectConfig","subjectDef","allConstraintsPass","eventOverlapFunc","otherInstanceId","otherInstance","otherOverlap","calendarEventStore","subjectAllow","subjectDateSpan","origDef","origInstance","relevantEventStore","relevantDefs","relevantInstances","selectionRange","selectOverlapFunc","relevantInstanceId","relevantInstance","selectionAllow","fullDateSpan","businessHoursUnexpanded","constraints_1","anyRangesContainRange","constraintToRanges","eventStoreToRanges","outerRanges","outerRanges_1","VISIBLE_HIDDEN_RE","Scroller","liquidIsAbsolute","isAbsolute","overcomeLeft","overcomeRight","overcomeBottom","marginLeft","marginRight","marginBottom","maxHeight","needsXScrolling","realClientWidth","getYScrollbarWidth","childEl","needsYScrolling","realClientHeight","getXScrollbarWidth","RefMap","masterCallback","currentMap","depths","callbackMap","handleValue","removed","added","refCallback","collect","getAll","computeShrinkWidth","chunkEls","shrinkCells","largestWidth","shrinkCells_1","shrinkCell","getSectionHasLiquidHeight","sectionConfig","getAllowYScrolling","renderChunkContent","chunkConfig","isHeader","tableClassName","syncRowHeights","minWidth","tableMinWidth","tableColGroupNode","rowContent","isColPropsEqual","cols0","cols1","renderMicroColGroup","cols","shrinkWidth","colNodes","cols_1","colProps","sanitizeShrinkWidth","hasShrinkWidth","cols_2","getScrollGridClassNames","getSectionClassNames","wholeTableVGrow","renderScrollShim","getStickyHeaderDates","getStickyFooterScrollbar","SimpleScrollGrid","processCols","scrollerRefs","scrollerElRefs","_handleScrollerEl","forceYScrollbars","scrollerClientWidths","scrollerClientHeights","handleSizing","computeScrollerDims","sectionConfigs","sections","microColGroupNode","collapsibleWidth","currentConfig","configCnt","configI","headSectionNodes","bodySectionNodes","footSectionNodes","isBuggy","roleAttrs","outerContent","renderChunkTd","chunk","isLiquid","sectionKey","rowSyncHeights","reportRowHeightChange","scrollerEl","section","getSectionByKey","scrollerElRef","scrollbarWidth","scroller","harnessEl","sections_1","EventRoot","timeText","disableDragging","disableResizing","isDateSelecting","standardClassNames","StandardEvent","defaultTimeFormat","renderInnerContent$1","innerProps","NowIndicatorRoot","isAxis","DAY_NUM_FORMAT","DayCellContent","refineDayCellHookProps","showDayNumber","extraProps","dayNumberText","DayCellRoot","refineHookProps","dataAttrs","renderFill","fillType","BgEvent","WeekNumberRoot","defaultFormat","renderInner","PADDING_FROM_VIEWPORT","Popover","handleDocumentMouseDown","handleCloseClick","handleDocumentKeyDown","onClose","extraAttrs","parentEl","alignmentEl","alignGridTop","alignmentRect","popoverDims","popoverTop","popoverLeft","origin_1","offsetParent","MorePopover","startDate","dayClassNames","extraDateSpan","dayEl","layer","MoreLinkRoot","linkElRef","isPopoverOpen","popoverId","handleClick","computeRange","buildPublicSeg","allDayDate","allSegs","hiddenSegs","handlePopoverClose","moreCnt","shortText","renderMoreLinkInner","alignmentElRef","popoverContent","updateParentEl","computeEarliestSegStart","computeLatestSegEnd","pickEarliestStart","seg0","seg1","pickLatestEnd","Calendar","isRendering","isRendered","customContentRenderId","handleAction","renderRunner","handleRenderRequest","currentData_1","setClassNames","setHeight","wasRendering","pauseRendering","resumeRendering","classNames_1","OPTION_IS_COMPLEX","resources","shallowCopy","output","wrapVDomGenerator","vDomGenerator","vue","createVueContentTypePlugin","parent","buildVDomHandler","vDomContent","$destroy","initVue","$mount","initialContent","FullCalendar","extend","initData","mounted","internal","$options","scopedSlotOptions","$scopedSlots","calendar","$el","buildOptions","methods","getApi","beforeUpdate","beforeDestroy","watch","buildWatchers","suppliedOptions","watchers","deep","_loop_1","complexOptionName","GlobalVue","installed","install","Vue","use","TableView","headerElRef","renderSimpleLayout","headerRowContent","bodyContent","renderHScrollLayout","ScrollGrid","chunks","colGroups","splitSegsByRow","byRow","splitSegsByFirstCol","byCol","splitInteractionByRow","TableCellTop","renderTopInner","forceDayTop","dayNumberId","DEFAULT_TABLE_EVENT_TIME_FORMAT","hasListItemDisplay","TableBlockEvent","TableListItemEvent","TableCellMoreLink","compileSegs","singlePlacements","invisibleSegs","isForcedInvisible","visibility","isExpanded","singlePlacements_1","placement","isVisible","DEFAULT_WEEK_NUM_FORMAT","TableCell","dayElRef","rootDataAttrs","showWeekNumber","weekElRef","weekClassNames","fgContentElRef","fgContent","marginTop","moreMarginTop","bgContent","computeFgSegPlacement","eventInstanceHeights","maxContentHeight","hierarchy","hiddenConsumes","segInputs","unknownHeightSegs","eventHeight","segRects","placeRects","singleColPlacements","multiColPlacements","leftoverMargins","moreCnts","moreMarginTops","unknownHeightSegs_1","absoluteTop","resliceSeg","hiddenEntries_1","hiddenEntry","hiddenSpan","allRects","rectsByEachCol","groupRectsByEachCol","currentHeight","currentMarginTop","rects_1","multiPlacements","rects_2","isFirstCol","rects_3","spanStart","spanEnd","DayGridSegHierarchy","forceHidden","excludeHidden","touchingEntryId","placeholderEntry","placeholderEntryId","TableRow","cellElRefs","frameElRefs","fgElRefs","segHarnessRefs","framePositions","businessHoursByCol","bgEventSegsByCol","highlightSegsByCol","getHighlightSegs","mirrorSegsByCol","getMirrorSegs","cell","normalFgNodes","renderFgSegs","mirrorFgNodes","buildMirrorPlacements","showDayNumbers","showWeekNumbers","renderFillSegs","updateSizing","prevState","currentProps","segPlacements","nodes","segPlacements_1","leftRightCss","isExternalSizingChange","frameEls","oldInstanceHeights","newInstanceHeights","queryEventInstanceHeights","limitByContentHeight","computeMaxContentHeight","segElMap","firstKey","fcContainerEl","getCellEls","elMap","mirrorSegs","colPlacements","topsByInstanceId","buildAbsoluteTopHash","colPlacements_1","placements","placements_1","Table","splitBusinessHourSegs","splitBgEventSegs","splitFgEventSegs","splitDateSelectionSegs","rowRefs","businessHourSegsByRow","bgEventSegsByRow","fgEventSegsByRow","dateSelectionSegsByRow","eventDragByRow","eventResizeByRow","limitViaBalanced","colGroupNode","renderRowIntro","isSegAllDay","rowPositions","rowObj","colPositions","getCellRange","getCellEl","DayTableSlicer","dayTableModel","DayTable","slicer","tableRef","headerAlignElRef","DayTableView","buildDayTableModel","headerContent","contentArg","TableDateProfileGenerator","endOfWeek","dayGrid","dayGridDay","dayGridWeek","dayGridMonth","AllDaySplitter","timed","DEFAULT_SLAT_LABEL_FORMAT","TimeColsAxisCell","isLabeled","isoTimeStr","labelFormat","TimeBodyAxis","slatMetas","slatMeta","AUTO_ALL_DAY_MAX_EVENT_ROWS","TimeColsView","allDaySplitter","slatCoords","handleScrollTopRequest","renderHeadAxis","rowKey","frameHeight","renderTableRowAxis","rowHeight","renderAllDayInner","handleSlatCoords","timeContent","isNowIndicator","nowIndicatorTop","safeComputeTop","getAllDayMaxEventProps","TimeColsSlatsCoords","positions","startOfDayDate","timeMs","computeTimeTop","computeDateTop","when","slatIndex","slatRemainder","slatCoverage","TimeColsSlatsBody","slatElRefs","axis","TimeColsSlats","minHeight","onCoords","collectSlatEls","splitSegsByCol","segsByCol","splitInteractionByCol","TimeColMoreLink","renderPlainFgSegs","buildPositioning","hiddenGroups","web","buildWeb","stretchWeb","webToRects","buildNode","cacheable","siblingRange","findNextLevelSegs","nextLevelRes","buildNodes","nextLevelNodes","lateralStart","lateralEnd","pairs","cmpDescPressures","extractNode","subjectLevel","subjectLateral","subjectEntry","afterSubject","searchIndex","topLevelNodes","totalThickness","stretchNode","startCoord","prevThickness","endCoord","allThickness","thicknessFraction","newChildren","nextLevelNodes_1","childNode","newThickness","processNode","stackDepth","stackForward","processNodes","nodes_1","keyFunc","workFunc","cache","computeSegVCoords","colDate","vcoords","computeFgSegPlacements","segVCoords","dumbSegs","segRects_1","segRect","dumbSegs_1","dumbSeg","DEFAULT_TIME_FORMAT","TimeColEvent","isShort","TimeColMisc","TimeCol","isSelectMirror","interactionAffectedInstances","sortedFgSegs","renderNowIndicator","nowIndicatorSegs","segIsInvisible","renderPositionedFgSegs","renderHiddenGroups","segPlacement","vStyle","computeSegVStyle","hStyle","computeSegHStyle","isInset","hiddenGroup","positionCss","compileSegsFromEntries","segHCoords","shouldOverlap","nearCoord","farCoord","zIndex","hiddenInstances","segEntries","segEntry","TimeColsContent","splitNowIndicatorSegs","nowIndicatorSegsByRow","updateCoords","onColCoords","collectCellEls","TimeCols","processSlotOptions","onScrollTopRequest","top_1","handleColCoords","colCoords","onSlatCoords","scrollResponder","snapsPerSlot","colIndex","slatTop","slatHeight","partial","localSnapIndex","snapIndex","dayDate","snapDurationOverride","DayTimeColsSlicer","dayRanges","DayTimeCols","buildDayRanges","timeColsRef","STOCK_SUB_DURATIONS","buildSlatMetas","explicitLabelInterval","slatTime","slatIterator","labelInterval","computeLabelInterval","metas","slotsPerLabel","DayTimeColsView","buildTimeColsModel","hasAttachedAxis","hasDetachedAxis","allDaySlot","timeGridContent","OPTION_REFINERS","timeGrid","timeGridDay","timeGridWeek","touchMouseIgnoreWait","ignoreMouseDepth","listenerCnt","isWindowTouchMoveCancelled","PointerDragging","containerEl","subjectEl","handleSelector","shouldIgnoreMove","shouldWatchScroll","isTouchDragging","wasTouchScroll","handleMouseDown","shouldIgnoreMouse","isPrimaryMouseButton","tryStart","createEventFromMouse","initScrollWatch","handleMouseMove","handleMouseUp","recordCoords","cleanup","handleTouchStart","createEventFromTouch","targetEl","handleTouchMove","handleTouchEnd","handleTouchScroll","startIgnoringMouse","handleScroll","pageX","prevScrollX","prevPageX","pageY","prevScrollY","prevPageY","isTouch","deltaX","origPageX","deltaY","origPageY","passive","listenerCreated","listenerDestroyed","querySubjectEl","downEl","destroyScrollWatch","cancelTouchScroll","isFirst","touches","ctrlKey","onWindowTouchMove","ElementMirror","sourceEl","mirrorEl","sourceElRect","revertDuration","origScreenX","origScreenY","updateElPosition","handleMove","setIsVisible","stop","needsRevertAnimation","done","doRevertAnimation","finalSourceElRect","transition","getMirrorEl","cloneNode","boxSizing","margin","ScrollGeomCache","scrollController","doesListening","handleScrollChange","origScrollTop","origScrollLeft","clientRect","computeClientRect","getEventTarget","ElementScrollGeomCache","WindowScrollGeomCache","getTime","performance","AutoScroller","isEnabled","scrollQuery","edgeThreshold","maxVelocity","pointerScreenX","pointerScreenY","isAnimating","scrollCaches","everMovedUp","everMovedDown","everMovedLeft","everMovedRight","animate","edge","computeBestEdge","handleSide","msSinceRequest","requestAnimation","scrollStartEl","buildCaches","yDelta","xDelta","scrollCache","invDistance","distance","velocity","bestSide","scrollCaches_1","leftDist","rightDist","topDist","bottomDist","queryScrollEls","query","FeaturefulElementDragging","minDistance","touchScrollAllowed","mirrorNeedsRevert","isInteracting","isDelayEnded","isDistanceSurpassed","delayTimeoutId","onPointerDown","pointer","mirror","startDelay","handleDistanceSurpassed","onPointerMove","distanceSq","autoScroller","onPointerUp","tryStopDrag","handleDelayEnd","tryStartDrag","stopDrag","setIgnoreMove","OffsetTracker","origRect","scrollEl","computeLeft","computeTop","isWithinClipping","isIgnoredClipping","tagName","HitDragging","dragging","droppableStore","useSubjectCenter","requireInitial","initialHit","movingHit","finalHit","handlePointerDown","processFirstCoord","handleDragStart","handleDragMove","handlePointerUp","releaseHits","handleDragEnd","subjectRect","origPoint","adjustedPoint","queryHitForOffset","slicedSubjectRect","coordAdjust","forceHandle","hit","isHitsEqual","offsetTrackers","interactionSettings","offsetLeft","offsetTop","bestHit","offsetTracker","originLeft","originTop","componentId","hit0","hit1","buildDatePointApiWithContext","buildDatePointApi","DateClicking","hitDragging","DateSelecting","dragSelection","canSelect","getComponentTouchDelay$1","handleHitUpdate","isFinal","isInvalid","disallowed","joinHitsIntoSelection","dateSpan0","dateSpan1","dateSelectionTransformers_1","EventDragging","subjectSeg","receivingContext","validMutation","mutatedRelevantEvents","origTarget","initialContext","getComponentTouchDelay","fixedMirrorParent","receivingOptions","computeEventMutation","displayDrag","initialContext_1","receivingContext_1","relevantEvents_1","mutatedRelevantEvents_1","clearDrag","updatedEventApi","eventChangeArg","transformed","eventRemoveArg","draggedEl","addedEventDef","addedEventInstance","addedEventApi","eventAddArg","SELECTOR","nextContext","prevContext","initialCalendar","massagers","massagers_1","massager","EventResizing","draggingSegEl","draggingSeg","querySegEl","computeMutation","isFromStart","UnselectAuto","isRecentPointerDateSelect","matchesCancel","matchesEvent","onSelect","selectInfo","onDocumentPointerDown","onDocumentPointerUp","documentPointer","LISTENER_REFINERS","dateClick","eventDragStart","eventDragStop","eventDrop","eventResizeStart","eventResizeStop","drop","eventReceive","eventLeave","ExternalElementDragging","suppliedDragMeta","droppableEvent","dragMeta","buildDragMeta","canDropElOnCalendar","computeEventForDateSpan","finalView","addingEvents_1","getDragMetaFromEl","defProps","getEmbeddedElData","dataAttrPrefix","prefixedName","getAttribute","ExternalDraggable","itemSelector","appendTo","eventData","InferredElementDragging","mirrorSelector","currentMirrorEl","handlePointerMove","ThirdPartyDraggable","containerOrSettings","Element","BootstrapTheme","table","popover","popoverHeader","bootstrap","ListViewHeaderRow","textId","cellId","listDayFormat","sideText","listDaySideFormat","sideNavLinkAttrs","ListViewEventRow","timeHeaderId","eventHeaderId","dateHeaderId","renderEventInnerContent","buildTimeContent","headers","interactiveAttrs","doAllDay","ListView","computeDateVars","eventStoreToSegs","_eventStoreToSegs","dateHeaderIdRoot","setRootEl","dayDates","renderSegList","renderEmptyMessage","noEventsClassNames","noEventsContent","renderNoEventsInner","noEventsDidMount","noEventsWillUnmount","segsByDay","groupSegsByDay","innerNodes","daySegs","dayStr","daySegs_1","eventRangesToSegs","eventRangeToSegs","viewEnd","createFalsableFormatter","listDay","listWeek","listMonth","listYear","default","created","components","dayGridPlugin","timeGridPlugin","interactionPlugin","bootstrapPlugin","listPlugin","editEvent","currentEvents","$router","path","$emit","page","Calendars","Layout","PageHeader","getCallendarEvents","active","GetAllConsultant","element","moment","totalAmount","clientID","AddBusyTime","successmsg","Swal","fire","icon","showConfirmButton","timer","show","checkdates","startDatePlusOneHour","clone","isAfter","msg","isSame","firebaseFunctionURL","firebaseFunctionURL1","agentID","localStorage","getItem","db","firebase","firestore","collectionRef","collection","users","reject","async","promises","querySnapshot","docs","_consultant$clientID","consultant","doc","clientId","clientName","clientDoc","exists","display_name","nanosecondsToISO8601","BookingStart","BookingEnd","isPaid","all","catch","GetConsultantById","findByFFUID","where","limit","_consultantData$clien","consultantData","clientData","updateDocumentData","docId","updatedData","docRef","pushNotification","setIsPaid","uuid","axios","post","GetAllPrices","timePeriods","EditPrice","put","AddPrice","DeletePrice"],"mappings":"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","file":"js/chunk-1bcca217.d57b6717.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Layout',[_c('PageHeader',{attrs:{\"title\":_vm.title,\"items\":_vm.items}}),(_vm.calendarData.length > 0)?_c('Calendars',{attrs:{\"initial-events\":[..._vm.calendarData]},on:{\"event_created\":_vm.createBusyTime,\"event_delete\":_vm.deleteEvent,\"dateClicked\":_vm.dateClicked}}):_vm._e(),_c('b-modal',{attrs:{\"no-close-on-backdrop-add\":\"\",\"id\":\"modal-backdrop-add\",\"title\":_vm.$t('add_busy_date'),\"centered\":\"\",\"title-class\":\"font-18\"},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(){return [_c('div')]},proxy:true}])},[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.createBusyTime.apply(null, arguments)}}},[_c('label',{attrs:{\"for\":\"date-time-start\"}},[_vm._v(_vm._s(_vm.$t(\"start_date\")))]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addData.title),expression:\"addData.title\"}],staticClass:\"form-control mb-4\",attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('title'),\"required\":\"\"},domProps:{\"value\":(_vm.addData.title)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.addData, \"title\", $event.target.value)}}}),_c('b-form-input',{attrs:{\"id\":\"date-time-start\",\"type\":\"datetime-local\",\"required\":\"\"},model:{value:(_vm.addData.start),callback:function ($$v) {_vm.$set(_vm.addData, \"start\", $$v)},expression:\"addData.start\"}}),_c('label',{attrs:{\"for\":\"date-time-end\"}},[_vm._v(_vm._s(_vm.$t(\"end_date\")))]),_c('b-form-input',{attrs:{\"id\":\"date-time-end\",\"type\":\"datetime-local\",\"required\":\"\"},model:{value:(_vm.addData.end),callback:function ($$v) {_vm.$set(_vm.addData, \"end\", $$v)},expression:\"addData.end\"}}),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"8\"}}),_c('b-col',{staticStyle:{\"margin-top\":\"10px\"},attrs:{\"cols\":\"2\"}},[_c('b-button',{on:{\"click\":function($event){return _vm.$bvModal.hide('modal-backdrop-add')}}},[_vm._v(_vm._s(_vm.$t(\"cancel\")))])],1),_c('b-col',{staticStyle:{\"margin-top\":\"10px\"},attrs:{\"cols\":\"2\"}},[_c('b-button',{attrs:{\"variant\":\"primary\",\"type\":\"submit\"}},[_vm._v(_vm._s(_vm.$t(\"ok\")))])],1)],1)],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var n,l,u,i,t,r,o,f,e,c={},s=[],a=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function h(n,l){for(var u in l)n[u]=l[u];return n}function v(n){var l=n.parentNode;l&&l.removeChild(n)}function y(l,u,i){var t,r,o,f={};for(o in u)\"key\"==o?t=u[o]:\"ref\"==o?r=u[o]:f[o]=u[o];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===f[o]&&(f[o]=l.defaultProps[o]);return p(l,f,t,r,null)}function p(n,i,t,r,o){var f={type:n,props:i,key:t,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++u:o};return null==o&&null!=l.vnode&&l.vnode(f),f}function d(){return{current:null}}function _(n){return n.children}function k(n,l,u,i,t){var r;for(r in u)\"children\"===r||\"key\"===r||r in l||g(n,r,null,u[r],i);for(r in l)t&&\"function\"!=typeof l[r]||\"children\"===r||\"key\"===r||\"value\"===r||\"checked\"===r||u[r]===l[r]||g(n,r,l[r],u[r],i)}function b(n,l,u){\"-\"===l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||a.test(l)?u:u+\"px\"}function g(n,l,u,i,t){var r;n:if(\"style\"===l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof i&&(n.style.cssText=i=\"\"),i)for(l in i)u&&l in u||b(n.style,l,\"\");if(u)for(l in u)i&&u[l]===i[l]||b(n.style,l,u[l])}else if(\"o\"===l[0]&&\"n\"===l[1])r=l!==(l=l.replace(/Capture$/,\"\")),l=l.toLowerCase()in n?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?i||n.addEventListener(l,r?w:m,r):n.removeEventListener(l,r?w:m,r);else if(\"dangerouslySetInnerHTML\"!==l){if(t)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!==l&&\"height\"!==l&&\"href\"!==l&&\"list\"!==l&&\"form\"!==l&&\"tabIndex\"!==l&&\"download\"!==l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&-1==l.indexOf(\"-\")?n.removeAttribute(l):n.setAttribute(l,u))}}function m(n){t=!0;try{return this.l[n.type+!1](l.event?l.event(n):n)}finally{t=!1}}function w(n){t=!0;try{return this.l[n.type+!0](l.event?l.event(n):n)}finally{t=!1}}function x(n,l){this.props=n,this.context=l}function A(n,l){if(null==l)return n.__?A(n.__,n.__.__k.indexOf(n)+1):null;for(var u;ll&&r.sort(function(n,l){return n.__v.__b-l.__v.__b}));$.__r=0}function H(n,l,u,i,t,r,o,f,e,a){var h,v,y,d,k,b,g,m=i&&i.__k||s,w=m.length;for(u.__k=[],h=0;h0?p(d.type,d.props,d.key,d.ref?d.ref:null,d.__v):d)){if(d.__=u,d.__b=u.__b+1,null===(y=m[h])||y&&d.key==y.key&&d.type===y.type)m[h]=void 0;else for(v=0;v=0;l--)if((u=n.__k[l])&&(i=L(u)))return i;return null}function M(n,u,i,t,r,o,f,e,c){var s,a,v,y,p,d,k,b,g,m,w,A,P,C,T,$=u.type;if(void 0!==u.constructor)return null;null!=i.__h&&(c=i.__h,e=u.__e=i.__e,u.__h=null,o=[e]),(s=l.__b)&&s(u);try{n:if(\"function\"==typeof $){if(b=u.props,g=(s=$.contextType)&&t[s.__c],m=s?g?g.props.value:s.__:t,i.__c?k=(a=u.__c=i.__c).__=a.__E:(\"prototype\"in $&&$.prototype.render?u.__c=a=new $(b,m):(u.__c=a=new x(b,m),a.constructor=$,a.render=B),g&&g.sub(a),a.props=b,a.state||(a.state={}),a.context=m,a.__n=t,v=a.__d=!0,a.__h=[],a._sb=[]),null==a.__s&&(a.__s=a.state),null!=$.getDerivedStateFromProps&&(a.__s==a.state&&(a.__s=h({},a.__s)),h(a.__s,$.getDerivedStateFromProps(b,a.__s))),y=a.props,p=a.state,a.__v=u,v)null==$.getDerivedStateFromProps&&null!=a.componentWillMount&&a.componentWillMount(),null!=a.componentDidMount&&a.__h.push(a.componentDidMount);else{if(null==$.getDerivedStateFromProps&&b!==y&&null!=a.componentWillReceiveProps&&a.componentWillReceiveProps(b,m),!a.__e&&null!=a.shouldComponentUpdate&&!1===a.shouldComponentUpdate(b,a.__s,m)||u.__v===i.__v){for(u.__v!==i.__v&&(a.props=b,a.state=a.__s,a.__d=!1),u.__e=i.__e,u.__k=i.__k,u.__k.forEach(function(n){n&&(n.__=u)}),w=0;w2&&(f.children=arguments.length>3?n.call(arguments,2):i),p(l.type,f,t||l.key,r||l.ref,null)}function G(n,l){var u={__c:l=\"__cC\"+e++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,i;return this.getChildContext||(u=[],(i={})[l]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(function(n){n.__e=!0,T(n)})},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=s.slice,l={__e:function(n,l,u,i){for(var t,r,o;l=l.__;)if((t=l.__c)&&!t.__)try{if((r=t.constructor)&&null!=r.getDerivedStateFromError&&(t.setState(r.getDerivedStateFromError(n)),o=t.__d),null!=t.componentDidCatch&&(t.componentDidCatch(n,i||{}),o=t.__d),o)return t.__E=t}catch(l){n=l}throw n}},u=0,i=function(n){return null!=n&&void 0===n.constructor},t=!1,x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=h({},this.state),\"function\"==typeof n&&(n=n(h({},u),this.props)),n&&h(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),T(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),T(this))},x.prototype.render=_,r=[],f=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,$.__r=0,e=0;export{x as Component,_ as Fragment,F as cloneElement,G as createContext,y as createElement,d as createRef,y as h,E as hydrate,i as isValidElement,l as options,D as render,j as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-body\"},[_c('div',{staticClass:\"app-calendar\"},[(_vm.view)?_c('FullCalendar',{ref:\"fullCalendar\",attrs:{\"options\":_vm.calendarOptions}}):_vm._e()],1)])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=[],e=n.__b,a=n.__r,v=n.diffed,l=n.__c,m=n.unmount;function d(t,u){n.__h&&n.__h(r,t,o||u),o=0;var i=r.__H||(r.__H={__:[],__h:[]});return t>=i.__.length&&i.__.push({__V:c}),i.__[t]}function p(n){return o=1,y(B,n)}function y(n,u,i){var o=d(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):B(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.u)){r.u=!0;var f=r.shouldComponentUpdate;r.shouldComponentUpdate=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return n.__c});if(u.every(function(n){return!n.__N}))return!f||f.call(this,n,t,r);var i=!1;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),!(!i&&o.__c.props===n)&&(!f||f.call(this,n,t,r))}}return o.__N||o.__}function h(u,i){var o=d(t++,3);!n.__s&&z(o.__H,i)&&(o.__=u,o.i=i,r.__H.__h.push(o))}function s(u,i){var o=d(t++,4);!n.__s&&z(o.__H,i)&&(o.__=u,o.i=i,r.__h.push(o))}function _(n){return o=5,F(function(){return{current:n}},[])}function A(n,t,r){o=6,s(function(){return\"function\"==typeof n?(n(t()),function(){return n(null)}):n?(n.current=t(),function(){return n.current=null}):void 0},null==r?r:r.concat(n))}function F(n,r){var u=d(t++,7);return z(u.__H,r)?(u.__V=n(),u.i=r,u.__h=n,u.__V):u.__}function T(n,t){return o=8,F(function(){return n},t)}function q(n){var u=r.context[n.__c],i=d(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function x(t,r){n.useDebugValue&&n.useDebugValue(r?r(t):t)}function P(n){var u=d(t++,10),i=p();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function V(){var n=d(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function b(){for(var t;t=f.shift();)if(t.__P&&t.__H)try{t.__H.__h.forEach(k),t.__H.__h.forEach(w),t.__H.__h=[]}catch(r){t.__H.__h=[],n.__e(r,t.__v)}}n.__b=function(n){r=null,e&&e(n)},n.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.__V=c,n.__N=n.i=void 0})):(i.__h.forEach(k),i.__h.forEach(w),i.__h=[])),u=r},n.diffed=function(t){v&&v(t);var o=t.__c;o&&o.__H&&(o.__H.__h.length&&(1!==f.push(o)&&i===n.requestAnimationFrame||((i=n.requestAnimationFrame)||j)(b)),o.__H.__.forEach(function(n){n.i&&(n.__H=n.i),n.__V!==c&&(n.__=n.__V),n.i=void 0,n.__V=c})),u=r=null},n.__c=function(t,r){r.some(function(t){try{t.__h.forEach(k),t.__h=t.__h.filter(function(n){return!n.__||w(n)})}catch(u){r.some(function(n){n.__h&&(n.__h=[])}),r=[],n.__e(u,t.__v)}}),l&&l(t,r)},n.unmount=function(t){m&&m(t);var r,u=t.__c;u&&u.__H&&(u.__H.__.forEach(function(n){try{k(n)}catch(n){r=n}}),u.__H=void 0,r&&n.__e(r,u.__v))};var g=\"function\"==typeof requestAnimationFrame;function j(n){var t,r=function(){clearTimeout(u),g&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,100);g&&(t=requestAnimationFrame(r))}function k(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function w(n){var t=r;n.__c=n.__(),r=t}function z(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function B(n,t){return\"function\"==typeof t?t(n):t}export{T as useCallback,q as useContext,x as useDebugValue,h as useEffect,P as useErrorBoundary,V as useId,A as useImperativeHandle,s as useLayoutEffect,F as useMemo,y as useReducer,_ as useRef,p as useState};\n//# sourceMappingURL=hooks.module.js.map\n","import{Component as n,createElement as t,options as e,toChildArray as r,Fragment as u,render as o,hydrate as i,createContext as l,createRef as c,cloneElement as f}from\"preact\";export{Component,Fragment,createContext,createElement,createRef}from\"preact\";import{useState as a,useId as s,useReducer as h,useEffect as v,useLayoutEffect as d,useRef as p,useImperativeHandle as m,useMemo as y,useCallback as _,useContext as b,useDebugValue as S}from\"preact/hooks\";export*from\"preact/hooks\";function g(n,t){for(var e in t)n[e]=t[e];return n}function C(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function E(n,t){return n===t&&(0!==n||1/n==1/t)||n!=n&&t!=t}function w(n){this.props=n}function R(n,e){function r(n){var t=this.props.ref,r=t==n.ref;return!r&&t&&(t.call?t(null):t.current=null),e?!e(this.props,n)||!r:C(this.props,n)}function u(e){return this.shouldComponentUpdate=r,t(n,e)}return u.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",u.prototype.isReactComponent=!0,u.__f=!0,u}(w.prototype=new n).isPureReactComponent=!0,w.prototype.shouldComponentUpdate=function(n,t){return C(this.props,n)||C(this.state,t)};var x=e.__b;e.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),x&&x(n)};var N=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function k(n){function t(t){var e=g({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=N,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var A=function(n,t){return null==n?null:r(r(n).map(t))},O={map:A,forEach:A,count:function(n){return n?r(n).length:0},only:function(n){var t=r(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:r},T=e.__e;e.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);T(n,t,e,r)};var I=e.unmount;function L(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return L(n,t,e)})),n}function U(n,t,e){return n&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return U(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.insertBefore(n.__e,n.__d),n.__c.__e=!0,n.__c.__P=e)),n}function D(){this.__u=0,this.t=null,this.__b=null}function F(n){var t=n.__.__c;return t&&t.__a&&t.__a(n)}function M(n){var e,r,u;function o(o){if(e||(e=n()).then(function(n){r=n.default||n},function(n){u=n}),u)throw u;if(!r)throw e;return t(r,o)}return o.displayName=\"Lazy\",o.__f=!0,o}function V(){this.u=null,this.o=null}e.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&!0===n.__h&&(n.type=null),I&&I(n)},(D.prototype=new n).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=F(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l())};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=U(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.t.pop();)t.forceUpdate()}},c=!0===t.__h;r.__u++||c||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i)},D.prototype.componentWillUnmount=function(){this.t=[]},D.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement(\"div\"),o=this.__v.__k[0].__c;this.__v.__k[0]=L(this.__b,r,o.__O=o.__P)}this.__b=null}var i=e.__a&&t(u,null,n.fallback);return i&&(i.__h=null),[t(u,null,e.__a?null:n.children),i]};var W=function(n,t,e){if(++e[1]===e[0]&&n.o.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.o.size))for(e=n.u;e;){for(;e.length>3;)e.pop()();if(e[1]>>1,1),e.i.removeChild(n)}}),o(t(P,{context:e.context},n.__v),e.l)):e.l&&e.componentWillUnmount()}function j(n,e){var r=t($,{__v:n,i:e});return r.containerInfo=e,r}(V.prototype=new n).__a=function(n){var t=this,e=F(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),W(t,n,r)):u()};e?e(o):o()}},V.prototype.render=function(n){this.u=null,this.o=new Map;var t=r(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.o.set(t[e],this.u=[1,0,this.u]);return n.children},V.prototype.componentDidUpdate=V.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){W(n,e,t)})};var z=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,B=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,H=\"undefined\"!=typeof document,Z=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/i:/fil|che|ra/i).test(n)};function Y(n,t,e){return null==t.__k&&(t.textContent=\"\"),o(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function q(n,t,e){return i(n,t),\"function\"==typeof e&&e(),n?n.__c:null}n.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(t){Object.defineProperty(n.prototype,t,{configurable:!0,get:function(){return this[\"UNSAFE_\"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n})}})});var G=e.event;function J(){}function K(){return this.cancelBubble}function Q(){return this.defaultPrevented}e.event=function(n){return G&&(n=G(n)),n.persist=J,n.isPropagationStopped=K,n.isDefaultPrevented=Q,n.nativeEvent=n};var X,nn={configurable:!0,get:function(){return this.class}},tn=e.vnode;e.vnode=function(n){var t=n.type,e=n.props,u=e;if(\"string\"==typeof t){var o=-1===t.indexOf(\"-\");for(var i in u={},e){var l=e[i];H&&\"children\"===i&&\"noscript\"===t||\"value\"===i&&\"defaultValue\"in e&&null==l||(\"defaultValue\"===i&&\"value\"in e&&null==e.value?i=\"value\":\"download\"===i&&!0===l?l=\"\":/ondoubleclick/i.test(i)?i=\"ondblclick\":/^onchange(textarea|input)/i.test(i+t)&&!Z(e.type)?i=\"oninput\":/^onfocus$/i.test(i)?i=\"onfocusin\":/^onblur$/i.test(i)?i=\"onfocusout\":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(i)?i=i.toLowerCase():o&&B.test(i)?i=i.replace(/[A-Z0-9]/g,\"-$&\").toLowerCase():null===l&&(l=void 0),/^oninput$/i.test(i)&&(i=i.toLowerCase(),u[i]&&(i=\"oninputCapture\")),u[i]=l)}\"select\"==t&&u.multiple&&Array.isArray(u.value)&&(u.value=r(e.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value)})),\"select\"==t&&null!=u.defaultValue&&(u.value=r(e.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value})),n.props=u,e.class!=e.className&&(nn.enumerable=\"className\"in e,null!=e.className&&(u.class=e.className),Object.defineProperty(u,\"className\",nn))}n.$$typeof=z,tn&&tn(n)};var en=e.__r;e.__r=function(n){en&&en(n),X=n.__c};var rn={ReactCurrentDispatcher:{current:{readContext:function(n){return X.__n[n.__c].props.value}}}},un=\"17.0.2\";function on(n){return t.bind(null,n)}function ln(n){return!!n&&n.$$typeof===z}function cn(n){return ln(n)?f.apply(null,arguments):n}function fn(n){return!!n.__k&&(o(null,n),!0)}function an(n){return n&&(n.base||1===n.nodeType&&n)||null}var sn=function(n,t){return n(t)},hn=function(n,t){return n(t)},vn=u;function dn(n){n()}function pn(n){return n}function mn(){return[!1,dn]}var yn=d;function _n(n,t){var e=t(),r=a({h:{__:e,v:t}}),u=r[0].h,o=r[1];return d(function(){u.__=e,u.v=t,E(u.__,t())||o({h:u})},[n,e,t]),v(function(){return E(u.__,u.v())||o({h:u}),n(function(){E(u.__,u.v())||o({h:u})})},[n]),e}var bn={useState:a,useId:s,useReducer:h,useEffect:v,useLayoutEffect:d,useInsertionEffect:yn,useTransition:mn,useDeferredValue:pn,useSyncExternalStore:_n,startTransition:dn,useRef:p,useImperativeHandle:m,useMemo:y,useCallback:_,useContext:b,useDebugValue:S,version:\"17.0.2\",Children:O,render:Y,hydrate:q,unmountComponentAtNode:fn,createPortal:j,createElement:t,createContext:l,createFactory:on,cloneElement:cn,createRef:c,Fragment:u,isValidElement:ln,findDOMNode:an,Component:n,PureComponent:w,memo:R,forwardRef:k,flushSync:hn,unstable_batchedUpdates:sn,StrictMode:vn,Suspense:D,SuspenseList:V,lazy:M,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:rn};export{O as Children,w as PureComponent,vn as StrictMode,D as Suspense,V as SuspenseList,rn as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,cn as cloneElement,on as createFactory,j as createPortal,bn as default,an as findDOMNode,hn as flushSync,k as forwardRef,q as hydrate,ln as isValidElement,M as lazy,R as memo,Y as render,dn as startTransition,fn as unmountComponentAtNode,sn as unstable_batchedUpdates,pn as useDeferredValue,yn as useInsertionEffect,_n as useSyncExternalStore,mn as useTransition,un as version};\n//# sourceMappingURL=compat.module.js.map\n","import { __extends } from 'tslib';\nimport * as preact from 'preact';\nimport * as preactCompat from 'preact/compat';\n\nvar globalObj = typeof globalThis !== 'undefined' ? globalThis : window; // // TODO: streamline when killing IE11 support\nif (globalObj.FullCalendarVDom) {\n console.warn('FullCalendar VDOM already loaded');\n}\nelse {\n globalObj.FullCalendarVDom = {\n Component: preact.Component,\n createElement: preact.createElement,\n render: preact.render,\n createRef: preact.createRef,\n Fragment: preact.Fragment,\n createContext: createContext,\n createPortal: preactCompat.createPortal,\n flushSync: flushSync,\n unmountComponentAtNode: unmountComponentAtNode,\n };\n}\n// HACKS...\n// TODO: lock version\n// TODO: link gh issues\nfunction flushSync(runBeforeFlush) {\n runBeforeFlush();\n var oldDebounceRendering = preact.options.debounceRendering; // orig\n var callbackQ = [];\n function execCallbackSync(callback) {\n callbackQ.push(callback);\n }\n preact.options.debounceRendering = execCallbackSync;\n preact.render(preact.createElement(FakeComponent, {}), document.createElement('div'));\n while (callbackQ.length) {\n callbackQ.shift()();\n }\n preact.options.debounceRendering = oldDebounceRendering;\n}\nvar FakeComponent = /** @class */ (function (_super) {\n __extends(FakeComponent, _super);\n function FakeComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FakeComponent.prototype.render = function () { return preact.createElement('div', {}); };\n FakeComponent.prototype.componentDidMount = function () { this.setState({}); };\n return FakeComponent;\n}(preact.Component));\nfunction createContext(defaultValue) {\n var ContextType = preact.createContext(defaultValue);\n var origProvider = ContextType.Provider;\n ContextType.Provider = function () {\n var _this = this;\n var isNew = !this.getChildContext;\n var children = origProvider.apply(this, arguments); // eslint-disable-line prefer-rest-params\n if (isNew) {\n var subs_1 = [];\n this.shouldComponentUpdate = function (_props) {\n if (_this.props.value !== _props.value) {\n subs_1.forEach(function (c) {\n c.context = _props.value;\n c.forceUpdate();\n });\n }\n };\n this.sub = function (c) {\n subs_1.push(c);\n var old = c.componentWillUnmount;\n c.componentWillUnmount = function () {\n subs_1.splice(subs_1.indexOf(c), 1);\n old && old.call(c);\n };\n };\n }\n return children;\n };\n return ContextType;\n}\nfunction unmountComponentAtNode(node) {\n preact.render(null, node);\n}\n","/// \nif (typeof FullCalendarVDom === 'undefined') {\n throw new Error('Please import the top-level fullcalendar lib before attempting to import a plugin.');\n}\nvar Component = FullCalendarVDom.Component;\nvar createElement = FullCalendarVDom.createElement;\nvar render = FullCalendarVDom.render;\nvar createRef = FullCalendarVDom.createRef;\nvar Fragment = FullCalendarVDom.Fragment;\nvar createContext = FullCalendarVDom.createContext;\nvar createPortal = FullCalendarVDom.createPortal;\nvar flushSync = FullCalendarVDom.flushSync;\nvar unmountComponentAtNode = FullCalendarVDom.unmountComponentAtNode;\n/* eslint-enable */\n\nexport { Component, Fragment, createContext, createElement, createPortal, createRef, flushSync, render, unmountComponentAtNode };\n","/*!\nFullCalendar v5.11.5\nDocs & License: https://fullcalendar.io/\n(c) 2022 Adam Shaw\n*/\nimport './main.css';\n\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}());\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 }\n else if (typeof val === 'number' && PIXEL_PROP_RE.test(name)) {\n el.style[name] = val + \"px\";\n }\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 = [\n 'webkitTransitionEnd',\n 'otransitionend',\n 'oTransitionEnd',\n 'msTransitionEnd',\n 'transitionend',\n];\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({ onClick: handler }, 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}\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 }\n else if (typeof input === 'function') {\n tokens = [input];\n }\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), order: -1 } :\n { field: token, order: 1 });\n }\n else if (typeof token === 'function') {\n specs.push({ func: token });\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])\n * (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') { // non-blank string\n return args.reduce(function (str, arg, index) { return (str.replace('$' + index, arg || '')); }, 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 + // the cell padding+border\n contentWidthEl.getBoundingClientRect().width;\n}\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([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n ]);\n}\nfunction startOfHour(m) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n m.getUTCHours(),\n ]);\n}\nfunction startOfMinute(m) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n m.getUTCHours(),\n m.getUTCMinutes(),\n ]);\n}\nfunction startOfSecond(m) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n m.getUTCHours(),\n m.getUTCMinutes(),\n m.getUTCSeconds(),\n ]);\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 [\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds(),\n ];\n}\nfunction arrayToLocalDate(a) {\n return new Date(a[0], a[1] || 0, a[2] == null ? 1 : a[2], // day of month\n a[3] || 0, a[4] || 0, a[5] || 0);\n}\nfunction dateToUtcArray(date) {\n return [\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n date.getUTCMilliseconds(),\n ];\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 +\n m.getUTCMinutes() * 1000 * 60 +\n m.getUTCSeconds() * 1000 +\n m.getUTCMilliseconds();\n}\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}\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) { // non-null object\n complexObjs.unshift(val);\n }\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)) { // 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) { equalityFuncs = {}; }\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])) ;\n 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) { startIndex = 0; }\n if (step === void 0) { step = 1; }\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) { // will disregard undefined for sparse arrays\n res.push(val);\n }\n }\n return res;\n}\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, pluginHooks = context.pluginHooks, options = context.options;\n var defs = eventStore.defs, instances = eventStore.instances;\n // remove existing recurring instances\n // TODO: bad. always expand events as a second step\n instances = filterHash(instances, function (instance) { return !defs[instance.defId].recurringDef; });\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 ?\n options.defaultAllDayEventDuration :\n 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 { defs: defs, instances: instances };\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}\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) { // 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 + // hours\n (m[4] ? parseInt(m[4], 10) : 0) * 60 * 1000 + // minutes\n (m[5] ? parseInt(m[5], 10) : 0) * 1000 + // 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 + // hours\n (obj.minutes || obj.minute || 0) * 60 * 1000 + // minutes\n (obj.seconds || obj.second || 0) * 1000 + // 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 &&\n d0.months === d1.months &&\n d0.days === d1.days &&\n 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) +\n dur.months * (30 * 864e5) +\n dur.days * 864e5 +\n 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 }\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 { unit: 'millisecond', value: ms };\n }\n if (ms % (1000 * 60) !== 0) {\n return { unit: 'second', value: ms / 1000 };\n }\n if (ms % (1000 * 60 * 60) !== 0) {\n return { unit: 'minute', value: ms / (1000 * 60) };\n }\n if (ms) {\n return { unit: 'hour', value: ms / (1000 * 60 * 60) };\n }\n }\n if (dur.days) {\n if (dur.specifiedWeeks && dur.days % 7 === 0) {\n return { unit: 'week', value: dur.days / 7 };\n }\n return { unit: 'day', value: dur.days };\n }\n if (dur.months) {\n return { unit: 'month', value: dur.months };\n }\n if (dur.years) {\n return { unit: 'year', value: dur.years };\n }\n return { unit: 'millisecond', value: 0 };\n}\n\n// timeZoneOffset is in minutes\nfunction buildIsoString(marker, timeZoneOffset, stripZeroTime) {\n if (stripZeroTime === void 0) { stripZeroTime = false; }\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) { // time part wasn't stripped, can add timezone info\n if (timeZoneOffset == null) {\n s = s.replace('Z', '');\n }\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) + ':' +\n padStart(marker.getUTCMinutes(), 2) + ':' +\n padStart(marker.getUTCSeconds(), 2);\n}\nfunction formatTimeZoneOffset(minutes, doIso) {\n if (doIso === void 0) { doIso = false; }\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 }\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) { // 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}\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 }\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 }\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(// 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]) { // one of the old sets no longer exists\n if (teardownFunc) {\n teardownFunc(currentResults[i]);\n }\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(workerFunc, 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 }\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]))\n ? currentResHash[key]\n : res;\n }\n else {\n newResHash[key] = currentResHash[key];\n }\n }\n currentArgHash = newArgHash;\n currentResHash = newResHash;\n return newResHash;\n };\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 }\n else {\n standardDateProps[name_1] = formatSettings[name_1];\n if (name_1 in STANDARD_DATE_PROP_SEVERITIES) { // 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, standardDateProps = _a.standardDateProps, 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 && // the two dates are different in a way that's larger scale than time\n (standardDateProps.year === 'numeric' || standardDateProps.year === '2-digit') &&\n (standardDateProps.month === 'numeric' || standardDateProps.month === '2-digit') &&\n (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'; // 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) { return (formatTimeZoneOffset(date.timeZoneOffset)); };\n }\n if (standardDatePropCnt === 0 && extendedSettings.week) {\n return function (date) { return (formatWeekNumber(context.computeWeekNumber(date.marker), context.weekText, context.weekTextLong, context.locale, extendedSettings.week)); };\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 }\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) ?\n 'UTC' : // 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 }\n else if (extendedSettings.meridiem === 'narrow') { // a/p\n s = s.replace(MERIDIEM_RE, function (m0, m1) { return m1.toLocaleLowerCase(); });\n }\n else if (extendedSettings.meridiem === 'short') { // am/pm\n s = s.replace(MERIDIEM_RE, function (m0, m1) { return m1.toLocaleLowerCase() + \"m\"; });\n }\n else if (extendedSettings.meridiem === 'lowercase') { // other meridiem transformers already converted to lowercase\n s = s.replace(MERIDIEM_RE, function (m0) { return m0.toLocaleLowerCase(); });\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 }\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') { // 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) || // 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}\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}\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}());\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}());\n\nfunction createFormatter(input) {\n if (typeof input === 'object' && input) { // 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: { day: 1 },\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: { month: 'long', day: 'numeric', year: 'numeric' },\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: isMaybeObjectsEqual,\n footerToolbar: isMaybeObjectsEqual,\n buttonText: isMaybeObjectsEqual,\n buttonHints: isMaybeObjectsEqual,\n buttonIcons: isMaybeObjectsEqual,\n dateIncrement: isMaybeObjectsEqual,\n};\nfunction isMaybeObjectsEqual(a, b) {\n if (typeof a === 'object' && typeof b === 'object' && a && b) { // 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 { refined: refined, extra: extra };\n}\nfunction identity(raw) {\n return raw;\n}\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) { eventStore = createEmptyEventStore(); }\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) { return isEventDefsGrouped(def_1, lookDef); });\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 { defs: {}, instances: {} };\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) { return (defs[instance.defId] // still exists?\n ); });\n return { defs: defs, instances: instances };\n}\nfunction excludeSubEventStore(master, sub) {\n var defs = master.defs, instances = master.instances;\n var filteredDefs = {};\n var filteredInstances = {};\n for (var defId in defs) {\n if (!sub.defs[defId]) { // not explicitly excluded\n filteredDefs[defId] = defs[defId];\n }\n }\n for (var instanceId in instances) {\n if (!sub.instances[instanceId] && // 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}\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) { // 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}\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}\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), { extendedProps: identity });\nfunction parseEvent(raw, eventSource, context, allowOpenRange, refiners) {\n if (refiners === void 0) { refiners = buildEventRefiners(context); }\n var _a = refineEventDef(raw, context, refiners), refined = _a.refined, 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 { def: def, instance: null };\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 { def: def, instance: instance };\n }\n return null;\n}\nfunction refineEventDef(raw, context, refiners) {\n if (refiners === void 0) { refiners = buildEventRefiners(context); }\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 }\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 }\n else {\n // fall back to the date props LAST\n allDay = (!startMeta || startMeta.isTimeUnspecified) &&\n (!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 }\n else if (!allowOpenRange) {\n hasEnd = context.options.forceEventDuration || false;\n endMarker = context.dateEnv.add(startMarker, allDay ?\n context.options.defaultAllDayEventDuration :\n context.options.defaultTimedEventDuration);\n }\n return {\n allDay: allDay,\n hasEnd: hasEnd,\n range: { start: startMarker, end: endMarker },\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 { start: start, end: end };\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) { nextDayThreshold = createDuration(0); }\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 { start: startDay, end: endDay };\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}\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 { start: start, end: end };\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) { // compare millisecond time (skip any ambig logic)\n invertedRanges.push({ start: start, end: dateRange.start });\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) { // compare millisecond time (skip any ambig logic)\n invertedRanges.push({ start: start, end: constraintRange.end });\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, end = range0.end;\n var newRange = null;\n if (range1.start !== null) {\n if (start === null) {\n start = range1.start;\n }\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 }\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 = { start: start, end: end };\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()) &&\n (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) &&\n (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)) &&\n (outerRange.end === null || (innerRange.end !== null && innerRange.end <= outerRange.end));\n}\nfunction rangeContainsMarker(range, date) {\n return (range.start === null || date >= range.start) &&\n (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 }\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) ?\n computeVisibleDayRange(origRange, nextDayThreshold) :\n 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 }\n else {\n inverseBgByDefId[instance.defId].push(slicedRange);\n }\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) { // 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 { bg: bgRanges, fg: fgRanges };\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 ||\n el.parentNode.fcSeg || // for the harness\n null;\n}\n// event ui computation\nfunction compileEventUis(eventDefs, eventUiBases) {\n return mapHash(eventDefs, function (eventDef) { return compileEventUi(eventDef, eventUiBases); });\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) { return compareByFieldSpecs(obj0, obj1, eventOrderSpecs); });\n return objs.map(function (c) { return c._seg; });\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), { id: eventDef.publicId, start: start,\n end: end, duration: end - start, allDay: Number(eventDef.allDay), _seg: seg });\n}\nfunction computeSegDraggable(seg, context) {\n var pluginHooks = context.pluginHooks;\n var transformers = pluginHooks.isDraggableTransformers;\n var _a = seg.eventRange, def = _a.def, 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, // defaults to true\ndefaultDisplayEventEnd, // defaults to true\nstartOverride, endOverride) {\n var dateEnv = context.dateEnv, options = context.options;\n var displayEventTime = options.displayEventTime, 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\n ? eventRange.instance.instanceId\n : 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, def = _a.def, instance = _a.instance;\n var url = def.url;\n if (url) {\n return { href: url };\n }\n var emitter = context.emitter, 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}\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), standardProps = _a.refined, 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) &&\n (!endMeta || endMeta.isTimeUnspecified);\n }\n return __assign({ range: {\n start: startMeta ? startMeta.marker : null,\n end: endMeta ? endMeta.marker : null,\n }, allDay: allDay }, extra);\n}\nfunction isDateSpansEqual(span0, span1) {\n return rangesEqual(span0.range, span1.range) &&\n span0.allDay === span1.allDay &&\n 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)), { allDay: span.allDay });\n}\nfunction buildRangeApiWithTimeZone(range, dateEnv, omitTime) {\n return __assign(__assign({}, buildRangeApi(range, dateEnv, omitTime)), { timeZone: dateEnv.timeZone });\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, { omitTime: omitTime }),\n endStr: dateEnv.formatIso(range.end, { omitTime: omitTime }),\n };\n}\nfunction fabricateEventRange(dateSpan, eventUiBases, context) {\n var res = refineEventDef({ editable: false }, context);\n var def = parseEventDef(res.refined, res.extra, '', // sourceId\n dateSpan.allDay, true, // 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}\n\nfunction triggerDateSelect(selection, pev, context) {\n context.emitter.trigger('select', __assign(__assign({}, buildDateSpanApiWithContext(selection, context)), { jsEvent: pev ? pev.origEvent : null, view: context.viewApi || context.calendarApi.view }));\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, options = context.options;\n var end = marker;\n if (allDay) {\n end = startOfDay(end);\n end = dateEnv.add(end, options.defaultAllDayEventDuration);\n }\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 &&\n eventConfig.durationEditable &&\n (mutation.startDelta || mutation.endDelta)) {\n standardProps.hasEnd = true; // TODO: is this mutation okay?\n }\n var copy = __assign(__assign(__assign({}, eventDef), standardProps), { ui: __assign(__assign({}, eventDef.ui), standardProps.ui) });\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, // 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}());\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) { refiners = buildEventSourceRefiners(context); }\n var rawObj;\n if (typeof raw === 'string') {\n rawObj = { url: raw };\n }\n else if (typeof raw === 'function' || Array.isArray(raw)) {\n rawObj = { events: raw };\n }\n else if (typeof raw === 'object' && raw) { // not null\n rawObj = raw;\n }\n if (rawObj) {\n var _a = refineProps(rawObj, refiners), refined = _a.refined, 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) { // later-added plugins take precedence\n var def = defs[i];\n var meta = def.parseMeta(raw);\n if (meta) {\n return { sourceDefId: i, meta: meta };\n }\n }\n return null;\n}\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}\n\nvar CalendarApi = /** @class */ (function () {\n function CalendarApi() {\n }\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 () { return this.getCurrentData().viewApi; } // for public API\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 }\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) { // 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 }\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 }\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 }\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(), viewSpecs = _a.viewSpecs, 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({ type: 'PREV' });\n };\n CalendarApi.prototype.next = function () {\n this.unselect();\n this.dispatch({ type: 'NEXT' });\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) { // 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), { omitTime: omitTime });\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 }\n else {\n selectionInput = {\n start: dateOrObj,\n end: null,\n };\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({ days: 1 }));\n if (selection) { // throw parse error otherwise?\n this.dispatch({ type: 'SELECT_DATES', selection: selection });\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({ type: 'UNSELECT_DATES' });\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({ def: def, instance: instance }), // 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 }\n else if (typeof sourceInput === 'boolean') {\n if (sourceInput) { // true. part of the first event source\n eventSource = hashValuesToArray(state.eventSources)[0];\n }\n }\n else if (sourceInput != null) { // 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, defs = _a.defs, 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({ type: 'REMOVE_ALL_EVENTS' });\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) { // TODO: error otherwise?\n this.dispatch({ type: 'ADD_EVENT_SOURCES', sources: [eventSource] });\n return new EventSourceApi(state, eventSource);\n }\n return null;\n };\n CalendarApi.prototype.removeAllEventSources = function () {\n this.dispatch({ type: 'REMOVE_ALL_EVENT_SOURCES' });\n };\n CalendarApi.prototype.refetchEvents = function () {\n this.dispatch({ type: 'FETCH_EVENT_SOURCES', isRefetch: true });\n };\n // Scroll\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.scrollToTime = function (timeInput) {\n var time = createDuration(timeInput);\n if (time) {\n this.trigger('_scrollRequest', { time: time });\n }\n };\n return CalendarApi;\n}());\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 }\n else if (name === 'id') {\n val = EVENT_NON_DATE_REFINERS[name](val);\n this.mutate({\n standardProps: { publicId: val }, // hardcoded internal name\n });\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 }\n else if (name in EVENT_UI_REFINERS) {\n var ui = EVENT_UI_REFINERS[name](val);\n if (name === 'color') {\n ui = { backgroundColor: val, borderColor: val };\n }\n else if (name === 'editable') {\n ui = { startEditable: val, durationEditable: val };\n }\n else {\n ui = (_b = {}, _b[name] = val, _b);\n }\n this.mutate({\n standardProps: { 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) { options = {}; }\n var dateEnv = this._context.dateEnv;\n var start = dateEnv.createMarker(startInput);\n if (start && this._instance) { // 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({ datesDelta: startDelta });\n }\n else {\n this.mutate({ startDelta: startDelta });\n }\n }\n };\n EventApi.prototype.setEnd = function (endInput, options) {\n if (options === void 0) { options = {}; }\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({ endDelta: endDelta });\n }\n else {\n this.mutate({ standardProps: { hasEnd: false } });\n }\n }\n };\n EventApi.prototype.setDates = function (startInput, endInput, options) {\n if (options === void 0) { options = {}; }\n var dateEnv = this._context.dateEnv;\n var standardProps = { allDay: options.allDay };\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) { // 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({ datesDelta: startDelta, standardProps: standardProps });\n }\n else {\n this.mutate({ startDelta: startDelta, endDelta: endDelta, standardProps: standardProps });\n }\n }\n else { // means \"clear the end\"\n standardProps.hasEnd = false;\n this.mutate({ datesDelta: startDelta, standardProps: standardProps });\n }\n }\n };\n EventApi.prototype.moveStart = function (deltaInput) {\n var delta = createDuration(deltaInput);\n if (delta) { // TODO: warning if parsed bad\n this.mutate({ startDelta: delta });\n }\n };\n EventApi.prototype.moveEnd = function (deltaInput) {\n var delta = createDuration(deltaInput);\n if (delta) { // TODO: warning if parsed bad\n this.mutate({ endDelta: delta });\n }\n };\n EventApi.prototype.moveDates = function (deltaInput) {\n var delta = createDuration(deltaInput);\n if (delta) { // TODO: warning if parsed bad\n this.mutate({ datesDelta: delta });\n }\n };\n EventApi.prototype.setAllDay = function (allDay, options) {\n if (options === void 0) { options = {}; }\n var standardProps = { allDay: allDay };\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({ standardProps: standardProps });\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 ?\n this._context.dateEnv.toDate(this._instance.range.start) :\n 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) ?\n this._context.dateEnv.toDate(this._instance.range.end) :\n 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 () { return this._def.publicId; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"groupId\", {\n get: function () { return this._def.groupId; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"allDay\", {\n get: function () { return this._def.allDay; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"title\", {\n get: function () { return this._def.title; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"url\", {\n get: function () { return this._def.url; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"display\", {\n get: function () { return this._def.ui.display || 'auto'; } // bad. just normalize the type earlier\n ,\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"startEditable\", {\n get: function () { return this._def.ui.startEditable; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"durationEditable\", {\n get: function () { return this._def.ui.durationEditable; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"constraint\", {\n get: function () { return this._def.ui.constraints[0] || null; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"overlap\", {\n get: function () { return this._def.ui.overlap; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"allow\", {\n get: function () { return this._def.ui.allows[0] || null; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"backgroundColor\", {\n get: function () { return this._def.ui.backgroundColor; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"borderColor\", {\n get: function () { return this._def.ui.borderColor; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"textColor\", {\n get: function () { return this._def.ui.textColor; },\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 () { return this._def.ui.classNames; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"extendedProps\", {\n get: function () { return this._def.extendedProps; },\n enumerable: false,\n configurable: true\n });\n EventApi.prototype.toPlainObject = function (settings) {\n if (settings === void 0) { settings = {}; }\n var def = this._def;\n var ui = def.ui;\n var _a = this, startStr = _a.startStr, 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 }\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 }\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\n ? (_b = {}, _b[instance.instanceId] = instance, _b) : {},\n };\n}\nfunction buildEventApis(eventStore, context, excludeInstance) {\n var defs = eventStore.defs, 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}\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 }\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);\n\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 +\n Number(m[18] || 0));\n }\n return {\n marker: marker,\n isTimeUnspecified: !m[6],\n timeZoneOffset: timeZoneOffset,\n };\n }\n }\n return null;\n}\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 }\n else if (input instanceof Date) {\n input = input.valueOf();\n if (!isNaN(input)) {\n marker = this.timestampToMarker(input);\n }\n }\n else if (Array.isArray(input)) {\n marker = arrayToUtcDate(input);\n }\n if (marker === null || !isValidDate(marker)) {\n return null;\n }\n return { marker: marker, isTimeUnspecified: false, forcedTzo: null };\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 }\n else {\n forcedTzo = parts.timeZoneOffset;\n }\n }\n return { marker: marker, isTimeUnspecified: parts.isTimeUnspecified, forcedTzo: forcedTzo };\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) &&\n calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1) &&\n 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) &&\n calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1)) {\n return (calendarSystem.getMarkerMonth(m1) - calendarSystem.getMarkerMonth(m0)) +\n (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 { unit: 'year', value: n };\n }\n n = this.diffWholeMonths(m0, m1);\n if (n !== null) {\n return { unit: 'month', value: n };\n }\n n = diffWholeWeeks(m0, m1);\n if (n !== null) {\n return { unit: 'week', value: n };\n }\n n = diffWholeDays(m0, m1);\n if (n !== null) {\n return { unit: 'day', value: n };\n }\n n = diffHours(m0, m1);\n if (isInt(n)) {\n return { unit: 'hour', value: n };\n }\n n = diffMinutes(m0, m1);\n if (isInt(n)) {\n return { unit: 'minute', value: n };\n }\n n = diffSeconds(m0, m1);\n if (isInt(n)) {\n return { unit: 'second', value: n };\n }\n return { unit: 'millisecond', value: m1.valueOf() - m0.valueOf() };\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([\n this.calendarSystem.getMarkerYear(m),\n ]);\n };\n DateEnv.prototype.startOfMonth = function (m) {\n return this.calendarSystem.arrayToMarker([\n this.calendarSystem.getMarkerYear(m),\n this.calendarSystem.getMarkerMonth(m),\n ]);\n };\n DateEnv.prototype.startOfWeek = function (m) {\n return this.calendarSystem.arrayToMarker([\n this.calendarSystem.getMarkerYear(m),\n this.calendarSystem.getMarkerMonth(m),\n m.getUTCDate() - ((m.getUTCDay() - this.weekDow + 7) % 7),\n ]);\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) { dateOptions = {}; }\n return formatter.format({\n marker: marker,\n timeZoneOffset: dateOptions.forcedTzo != null ?\n dateOptions.forcedTzo :\n this.offsetForMarker(marker),\n }, this);\n };\n DateEnv.prototype.formatRange = function (start, end, formatter, dateOptions) {\n if (dateOptions === void 0) { dateOptions = {}; }\n if (dateOptions.isEndExclusive) {\n end = addMs(end, -1);\n }\n return formatter.formatRange({\n marker: start,\n timeZoneOffset: dateOptions.forcedStartTzo != null ?\n dateOptions.forcedStartTzo :\n this.offsetForMarker(start),\n }, {\n marker: end,\n timeZoneOffset: dateOptions.forcedEndTzo != null ?\n dateOptions.forcedEndTzo :\n 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) { extraOptions = {}; }\n var timeZoneOffset = null;\n if (!extraOptions.omitTimeZoneOffset) {\n if (extraOptions.forcedTzo != null) {\n timeZoneOffset = extraOptions.forcedTzo;\n }\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() -\n this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60);\n };\n return DateEnv;\n}());\n\nvar globalLocales = [];\n\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')\n ? 'Today'\n : \"This \" + buttonText;\n },\n }, viewHint: '$0 view', navLinkHint: 'Go to $0', moreLinkHint: function (eventCnt) {\n return \"Show \" + eventCnt + \" more event\" + (eventCnt === 1 ? '' : 's');\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}\n\nfunction formatDate(dateInput, options) {\n if (options === void 0) { options = {}; }\n var dateEnv = buildDateEnv$1(options);\n var formatter = createFormatter(options);\n var dateMeta = dateEnv.createMarkerMeta(dateInput);\n if (!dateMeta) { // 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) { // 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({ timeZone: BASE_OPTION_DEFAULTS.timeZone, calendarSystem: 'gregory' }, settings), { 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 }\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) { return rawDef.daysOfWeek; });\n }\n else if (typeof input === 'object' && input) { // non-null object\n rawDefs = [input];\n }\n else { // is probably false\n rawDefs = [];\n }\n rawDefs = rawDefs.map(function (rawDef) { return (__assign(__assign({}, DEF_DEFAULTS), rawDef)); });\n return rawDefs;\n}\n\nfunction pointInsideRect(point, rect) {\n return point.left >= rect.left &&\n point.left < rect.right &&\n point.top >= rect.top &&\n 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}\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 = '
';\n el.querySelector('table').style.height = '100px';\n el.querySelector('div').style.height = '100%';\n document.body.appendChild(el);\n var div = el.querySelector('div');\n var possible = div.offsetHeight > 0;\n document.body.removeChild(el);\n return possible;\n}\n\nvar EMPTY_EVENT_STORE = createEmptyEventStore(); // for purecomponents. TODO: keep elsewhere\nvar Splitter = /** @class */ (function () {\n function Splitter() {\n this.getKeysForEventDefs = memoize(this._getKeysForEventDefs);\n this.splitDateSelection = memoize(this._splitDateSpan);\n this.splitEventStore = memoize(this._splitEventStore);\n this.splitIndividualUi = memoize(this._splitIndividualUi);\n this.splitEventDrag = memoize(this._splitInteraction);\n this.splitEventResize = memoize(this._splitInteraction);\n this.eventUiBuilders = {}; // TODO: typescript protection\n }\n Splitter.prototype.splitProps = function (props) {\n var _this = this;\n var keyInfos = this.getKeyInfo(props);\n var defKeys = this.getKeysForEventDefs(props.eventStore);\n var dateSelections = this.splitDateSelection(props.dateSelection);\n var individualUi = this.splitIndividualUi(props.eventUiBases, defKeys); // the individual *bases*\n var eventStores = this.splitEventStore(props.eventStore, defKeys);\n var eventDrags = this.splitEventDrag(props.eventDrag);\n var eventResizes = this.splitEventResize(props.eventResize);\n var splitProps = {};\n this.eventUiBuilders = mapHash(keyInfos, function (info, key) { return _this.eventUiBuilders[key] || memoize(buildEventUiForKey); });\n for (var key in keyInfos) {\n var keyInfo = keyInfos[key];\n var eventStore = eventStores[key] || EMPTY_EVENT_STORE;\n var buildEventUi = this.eventUiBuilders[key];\n splitProps[key] = {\n businessHours: keyInfo.businessHours || props.businessHours,\n dateSelection: dateSelections[key] || null,\n eventStore: eventStore,\n eventUiBases: buildEventUi(props.eventUiBases[''], keyInfo.ui, individualUi[key]),\n eventSelection: eventStore.instances[props.eventSelection] ? props.eventSelection : '',\n eventDrag: eventDrags[key] || null,\n eventResize: eventResizes[key] || null,\n };\n }\n return splitProps;\n };\n Splitter.prototype._splitDateSpan = function (dateSpan) {\n var dateSpans = {};\n if (dateSpan) {\n var keys = this.getKeysForDateSpan(dateSpan);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n dateSpans[key] = dateSpan;\n }\n }\n return dateSpans;\n };\n Splitter.prototype._getKeysForEventDefs = function (eventStore) {\n var _this = this;\n return mapHash(eventStore.defs, function (eventDef) { return _this.getKeysForEventDef(eventDef); });\n };\n Splitter.prototype._splitEventStore = function (eventStore, defKeys) {\n var defs = eventStore.defs, instances = eventStore.instances;\n var splitStores = {};\n for (var defId in defs) {\n for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) {\n var key = _a[_i];\n if (!splitStores[key]) {\n splitStores[key] = createEmptyEventStore();\n }\n splitStores[key].defs[defId] = defs[defId];\n }\n }\n for (var instanceId in instances) {\n var instance = instances[instanceId];\n for (var _b = 0, _c = defKeys[instance.defId]; _b < _c.length; _b++) {\n var key = _c[_b];\n if (splitStores[key]) { // must have already been created\n splitStores[key].instances[instanceId] = instance;\n }\n }\n }\n return splitStores;\n };\n Splitter.prototype._splitIndividualUi = function (eventUiBases, defKeys) {\n var splitHashes = {};\n for (var defId in eventUiBases) {\n if (defId) { // not the '' key\n for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) {\n var key = _a[_i];\n if (!splitHashes[key]) {\n splitHashes[key] = {};\n }\n splitHashes[key][defId] = eventUiBases[defId];\n }\n }\n }\n return splitHashes;\n };\n Splitter.prototype._splitInteraction = function (interaction) {\n var splitStates = {};\n if (interaction) {\n var affectedStores_1 = this._splitEventStore(interaction.affectedEvents, this._getKeysForEventDefs(interaction.affectedEvents));\n // can't rely on defKeys because event data is mutated\n var mutatedKeysByDefId = this._getKeysForEventDefs(interaction.mutatedEvents);\n var mutatedStores_1 = this._splitEventStore(interaction.mutatedEvents, mutatedKeysByDefId);\n var populate = function (key) {\n if (!splitStates[key]) {\n splitStates[key] = {\n affectedEvents: affectedStores_1[key] || EMPTY_EVENT_STORE,\n mutatedEvents: mutatedStores_1[key] || EMPTY_EVENT_STORE,\n isEvent: interaction.isEvent,\n };\n }\n };\n for (var key in affectedStores_1) {\n populate(key);\n }\n for (var key in mutatedStores_1) {\n populate(key);\n }\n }\n return splitStates;\n };\n return Splitter;\n}());\nfunction buildEventUiForKey(allUi, eventUiForKey, individualUi) {\n var baseParts = [];\n if (allUi) {\n baseParts.push(allUi);\n }\n if (eventUiForKey) {\n baseParts.push(eventUiForKey);\n }\n var stuff = {\n '': combineEventUis(baseParts),\n };\n if (individualUi) {\n __assign(stuff, individualUi);\n }\n return stuff;\n}\n\nfunction getDateMeta(date, todayRange, nowDate, dateProfile) {\n return {\n dow: date.getUTCDay(),\n isDisabled: Boolean(dateProfile && !rangeContainsMarker(dateProfile.activeRange, date)),\n isOther: Boolean(dateProfile && !rangeContainsMarker(dateProfile.currentRange, date)),\n isToday: Boolean(todayRange && rangeContainsMarker(todayRange, date)),\n isPast: Boolean(nowDate ? (date < nowDate) : todayRange ? (date < todayRange.start) : false),\n isFuture: Boolean(nowDate ? (date > nowDate) : todayRange ? (date >= todayRange.end) : false),\n };\n}\nfunction getDayClassNames(meta, theme) {\n var classNames = [\n 'fc-day',\n \"fc-day-\" + DAY_IDS[meta.dow],\n ];\n if (meta.isDisabled) {\n classNames.push('fc-day-disabled');\n }\n else {\n if (meta.isToday) {\n classNames.push('fc-day-today');\n classNames.push(theme.getClass('today'));\n }\n if (meta.isPast) {\n classNames.push('fc-day-past');\n }\n if (meta.isFuture) {\n classNames.push('fc-day-future');\n }\n if (meta.isOther) {\n classNames.push('fc-day-other');\n }\n }\n return classNames;\n}\nfunction getSlotClassNames(meta, theme) {\n var classNames = [\n 'fc-slot',\n \"fc-slot-\" + DAY_IDS[meta.dow],\n ];\n if (meta.isDisabled) {\n classNames.push('fc-slot-disabled');\n }\n else {\n if (meta.isToday) {\n classNames.push('fc-slot-today');\n classNames.push(theme.getClass('today'));\n }\n if (meta.isPast) {\n classNames.push('fc-slot-past');\n }\n if (meta.isFuture) {\n classNames.push('fc-slot-future');\n }\n }\n return classNames;\n}\n\nvar DAY_FORMAT = createFormatter({ year: 'numeric', month: 'long', day: 'numeric' });\nvar WEEK_FORMAT = createFormatter({ week: 'long' });\nfunction buildNavLinkAttrs(context, dateMarker, viewType, isTabbable) {\n if (viewType === void 0) { viewType = 'day'; }\n if (isTabbable === void 0) { isTabbable = true; }\n var dateEnv = context.dateEnv, options = context.options, calendarApi = context.calendarApi;\n var dateStr = dateEnv.format(dateMarker, viewType === 'week' ? WEEK_FORMAT : DAY_FORMAT);\n if (options.navLinks) {\n var zonedDate = dateEnv.toDate(dateMarker);\n var handleInteraction = function (ev) {\n var customAction = viewType === 'day' ? options.navLinkDayClick :\n viewType === 'week' ? options.navLinkWeekClick : null;\n if (typeof customAction === 'function') {\n customAction.call(calendarApi, dateEnv.toDate(dateMarker), ev);\n }\n else {\n if (typeof customAction === 'string') {\n viewType = customAction;\n }\n calendarApi.zoomTo(dateMarker, viewType);\n }\n };\n return __assign({ title: formatWithOrdinals(options.navLinkHint, [dateStr, zonedDate], dateStr), 'data-navlink': '' }, (isTabbable\n ? createAriaClickAttrs(handleInteraction)\n : { onClick: handleInteraction }));\n }\n return { 'aria-label': dateStr };\n}\n\nvar _isRtlScrollbarOnLeft = null;\nfunction getIsRtlScrollbarOnLeft() {\n if (_isRtlScrollbarOnLeft === null) {\n _isRtlScrollbarOnLeft = computeIsRtlScrollbarOnLeft();\n }\n return _isRtlScrollbarOnLeft;\n}\nfunction computeIsRtlScrollbarOnLeft() {\n var outerEl = document.createElement('div');\n applyStyle(outerEl, {\n position: 'absolute',\n top: -1000,\n left: 0,\n border: 0,\n padding: 0,\n overflow: 'scroll',\n direction: 'rtl',\n });\n outerEl.innerHTML = '
';\n document.body.appendChild(outerEl);\n var innerEl = outerEl.firstChild;\n var res = innerEl.getBoundingClientRect().left > outerEl.getBoundingClientRect().left;\n removeElement(outerEl);\n return res;\n}\n\nvar _scrollbarWidths;\nfunction getScrollbarWidths() {\n if (!_scrollbarWidths) {\n _scrollbarWidths = computeScrollbarWidths();\n }\n return _scrollbarWidths;\n}\nfunction computeScrollbarWidths() {\n var el = document.createElement('div');\n el.style.overflow = 'scroll';\n el.style.position = 'absolute';\n el.style.top = '-9999px';\n el.style.left = '-9999px';\n document.body.appendChild(el);\n var res = computeScrollbarWidthsForEl(el);\n document.body.removeChild(el);\n return res;\n}\n// WARNING: will include border\nfunction computeScrollbarWidthsForEl(el) {\n return {\n x: el.offsetHeight - el.clientHeight,\n y: el.offsetWidth - el.clientWidth,\n };\n}\n\nfunction computeEdges(el, getPadding) {\n if (getPadding === void 0) { getPadding = false; }\n var computedStyle = window.getComputedStyle(el);\n var borderLeft = parseInt(computedStyle.borderLeftWidth, 10) || 0;\n var borderRight = parseInt(computedStyle.borderRightWidth, 10) || 0;\n var borderTop = parseInt(computedStyle.borderTopWidth, 10) || 0;\n var borderBottom = parseInt(computedStyle.borderBottomWidth, 10) || 0;\n var badScrollbarWidths = computeScrollbarWidthsForEl(el); // includes border!\n var scrollbarLeftRight = badScrollbarWidths.y - borderLeft - borderRight;\n var scrollbarBottom = badScrollbarWidths.x - borderTop - borderBottom;\n var res = {\n borderLeft: borderLeft,\n borderRight: borderRight,\n borderTop: borderTop,\n borderBottom: borderBottom,\n scrollbarBottom: scrollbarBottom,\n scrollbarLeft: 0,\n scrollbarRight: 0,\n };\n if (getIsRtlScrollbarOnLeft() && computedStyle.direction === 'rtl') { // is the scrollbar on the left side?\n res.scrollbarLeft = scrollbarLeftRight;\n }\n else {\n res.scrollbarRight = scrollbarLeftRight;\n }\n if (getPadding) {\n res.paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0;\n res.paddingRight = parseInt(computedStyle.paddingRight, 10) || 0;\n res.paddingTop = parseInt(computedStyle.paddingTop, 10) || 0;\n res.paddingBottom = parseInt(computedStyle.paddingBottom, 10) || 0;\n }\n return res;\n}\nfunction computeInnerRect(el, goWithinPadding, doFromWindowViewport) {\n if (goWithinPadding === void 0) { goWithinPadding = false; }\n var outerRect = doFromWindowViewport ? el.getBoundingClientRect() : computeRect(el);\n var edges = computeEdges(el, goWithinPadding);\n var res = {\n left: outerRect.left + edges.borderLeft + edges.scrollbarLeft,\n right: outerRect.right - edges.borderRight - edges.scrollbarRight,\n top: outerRect.top + edges.borderTop,\n bottom: outerRect.bottom - edges.borderBottom - edges.scrollbarBottom,\n };\n if (goWithinPadding) {\n res.left += edges.paddingLeft;\n res.right -= edges.paddingRight;\n res.top += edges.paddingTop;\n res.bottom -= edges.paddingBottom;\n }\n return res;\n}\nfunction computeRect(el) {\n var rect = el.getBoundingClientRect();\n return {\n left: rect.left + window.pageXOffset,\n top: rect.top + window.pageYOffset,\n right: rect.right + window.pageXOffset,\n bottom: rect.bottom + window.pageYOffset,\n };\n}\nfunction computeClippedClientRect(el) {\n var clippingParents = getClippingParents(el);\n var rect = el.getBoundingClientRect();\n for (var _i = 0, clippingParents_1 = clippingParents; _i < clippingParents_1.length; _i++) {\n var clippingParent = clippingParents_1[_i];\n var intersection = intersectRects(rect, clippingParent.getBoundingClientRect());\n if (intersection) {\n rect = intersection;\n }\n else {\n return null;\n }\n }\n return rect;\n}\nfunction computeHeightAndMargins(el) {\n return el.getBoundingClientRect().height + computeVMargins(el);\n}\nfunction computeVMargins(el) {\n var computed = window.getComputedStyle(el);\n return parseInt(computed.marginTop, 10) +\n parseInt(computed.marginBottom, 10);\n}\n// does not return window\nfunction getClippingParents(el) {\n var parents = [];\n while (el instanceof HTMLElement) { // will stop when gets to document or null\n var computedStyle = window.getComputedStyle(el);\n if (computedStyle.position === 'fixed') {\n break;\n }\n if ((/(auto|scroll)/).test(computedStyle.overflow + computedStyle.overflowY + computedStyle.overflowX)) {\n parents.push(el);\n }\n el = el.parentNode;\n }\n return parents;\n}\n\n// given a function that resolves a result asynchronously.\n// the function can either call passed-in success and failure callbacks,\n// or it can return a promise.\n// if you need to pass additional params to func, bind them first.\nfunction unpromisify(func, success, failure) {\n // guard against success/failure callbacks being called more than once\n // and guard against a promise AND callback being used together.\n var isResolved = false;\n var wrappedSuccess = function () {\n if (!isResolved) {\n isResolved = true;\n success.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n };\n var wrappedFailure = function () {\n if (!isResolved) {\n isResolved = true;\n if (failure) {\n failure.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n }\n };\n var res = func(wrappedSuccess, wrappedFailure);\n if (res && typeof res.then === 'function') {\n res.then(wrappedSuccess, wrappedFailure);\n }\n}\n\nvar Emitter = /** @class */ (function () {\n function Emitter() {\n this.handlers = {};\n this.thisContext = null;\n }\n Emitter.prototype.setThisContext = function (thisContext) {\n this.thisContext = thisContext;\n };\n Emitter.prototype.setOptions = function (options) {\n this.options = options;\n };\n Emitter.prototype.on = function (type, handler) {\n addToHash(this.handlers, type, handler);\n };\n Emitter.prototype.off = function (type, handler) {\n removeFromHash(this.handlers, type, handler);\n };\n Emitter.prototype.trigger = function (type) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var attachedHandlers = this.handlers[type] || [];\n var optionHandler = this.options && this.options[type];\n var handlers = [].concat(optionHandler || [], attachedHandlers);\n for (var _a = 0, handlers_1 = handlers; _a < handlers_1.length; _a++) {\n var handler = handlers_1[_a];\n handler.apply(this.thisContext, args);\n }\n };\n Emitter.prototype.hasHandlers = function (type) {\n return Boolean((this.handlers[type] && this.handlers[type].length) ||\n (this.options && this.options[type]));\n };\n return Emitter;\n}());\nfunction addToHash(hash, type, handler) {\n (hash[type] || (hash[type] = []))\n .push(handler);\n}\nfunction removeFromHash(hash, type, handler) {\n if (handler) {\n if (hash[type]) {\n hash[type] = hash[type].filter(function (func) { return func !== handler; });\n }\n }\n else {\n delete hash[type]; // remove all handler funcs for this type\n }\n}\n\n/*\nRecords offset information for a set of elements, relative to an origin element.\nCan record the left/right OR the top/bottom OR both.\nProvides methods for querying the cache by position.\n*/\nvar PositionCache = /** @class */ (function () {\n function PositionCache(originEl, els, isHorizontal, isVertical) {\n this.els = els;\n var originClientRect = this.originClientRect = originEl.getBoundingClientRect(); // relative to viewport top-left\n if (isHorizontal) {\n this.buildElHorizontals(originClientRect.left);\n }\n if (isVertical) {\n this.buildElVerticals(originClientRect.top);\n }\n }\n // Populates the left/right internal coordinate arrays\n PositionCache.prototype.buildElHorizontals = function (originClientLeft) {\n var lefts = [];\n var rights = [];\n for (var _i = 0, _a = this.els; _i < _a.length; _i++) {\n var el = _a[_i];\n var rect = el.getBoundingClientRect();\n lefts.push(rect.left - originClientLeft);\n rights.push(rect.right - originClientLeft);\n }\n this.lefts = lefts;\n this.rights = rights;\n };\n // Populates the top/bottom internal coordinate arrays\n PositionCache.prototype.buildElVerticals = function (originClientTop) {\n var tops = [];\n var bottoms = [];\n for (var _i = 0, _a = this.els; _i < _a.length; _i++) {\n var el = _a[_i];\n var rect = el.getBoundingClientRect();\n tops.push(rect.top - originClientTop);\n bottoms.push(rect.bottom - originClientTop);\n }\n this.tops = tops;\n this.bottoms = bottoms;\n };\n // Given a left offset (from document left), returns the index of the el that it horizontally intersects.\n // If no intersection is made, returns undefined.\n PositionCache.prototype.leftToIndex = function (leftPosition) {\n var _a = this, lefts = _a.lefts, rights = _a.rights;\n var len = lefts.length;\n var i;\n for (i = 0; i < len; i += 1) {\n if (leftPosition >= lefts[i] && leftPosition < rights[i]) {\n return i;\n }\n }\n return undefined; // TODO: better\n };\n // Given a top offset (from document top), returns the index of the el that it vertically intersects.\n // If no intersection is made, returns undefined.\n PositionCache.prototype.topToIndex = function (topPosition) {\n var _a = this, tops = _a.tops, bottoms = _a.bottoms;\n var len = tops.length;\n var i;\n for (i = 0; i < len; i += 1) {\n if (topPosition >= tops[i] && topPosition < bottoms[i]) {\n return i;\n }\n }\n return undefined; // TODO: better\n };\n // Gets the width of the element at the given index\n PositionCache.prototype.getWidth = function (leftIndex) {\n return this.rights[leftIndex] - this.lefts[leftIndex];\n };\n // Gets the height of the element at the given index\n PositionCache.prototype.getHeight = function (topIndex) {\n return this.bottoms[topIndex] - this.tops[topIndex];\n };\n return PositionCache;\n}());\n\n/* eslint max-classes-per-file: \"off\" */\n/*\nAn object for getting/setting scroll-related information for an element.\nInternally, this is done very differently for window versus DOM element,\nso this object serves as a common interface.\n*/\nvar ScrollController = /** @class */ (function () {\n function ScrollController() {\n }\n ScrollController.prototype.getMaxScrollTop = function () {\n return this.getScrollHeight() - this.getClientHeight();\n };\n ScrollController.prototype.getMaxScrollLeft = function () {\n return this.getScrollWidth() - this.getClientWidth();\n };\n ScrollController.prototype.canScrollVertically = function () {\n return this.getMaxScrollTop() > 0;\n };\n ScrollController.prototype.canScrollHorizontally = function () {\n return this.getMaxScrollLeft() > 0;\n };\n ScrollController.prototype.canScrollUp = function () {\n return this.getScrollTop() > 0;\n };\n ScrollController.prototype.canScrollDown = function () {\n return this.getScrollTop() < this.getMaxScrollTop();\n };\n ScrollController.prototype.canScrollLeft = function () {\n return this.getScrollLeft() > 0;\n };\n ScrollController.prototype.canScrollRight = function () {\n return this.getScrollLeft() < this.getMaxScrollLeft();\n };\n return ScrollController;\n}());\nvar ElementScrollController = /** @class */ (function (_super) {\n __extends(ElementScrollController, _super);\n function ElementScrollController(el) {\n var _this = _super.call(this) || this;\n _this.el = el;\n return _this;\n }\n ElementScrollController.prototype.getScrollTop = function () {\n return this.el.scrollTop;\n };\n ElementScrollController.prototype.getScrollLeft = function () {\n return this.el.scrollLeft;\n };\n ElementScrollController.prototype.setScrollTop = function (top) {\n this.el.scrollTop = top;\n };\n ElementScrollController.prototype.setScrollLeft = function (left) {\n this.el.scrollLeft = left;\n };\n ElementScrollController.prototype.getScrollWidth = function () {\n return this.el.scrollWidth;\n };\n ElementScrollController.prototype.getScrollHeight = function () {\n return this.el.scrollHeight;\n };\n ElementScrollController.prototype.getClientHeight = function () {\n return this.el.clientHeight;\n };\n ElementScrollController.prototype.getClientWidth = function () {\n return this.el.clientWidth;\n };\n return ElementScrollController;\n}(ScrollController));\nvar WindowScrollController = /** @class */ (function (_super) {\n __extends(WindowScrollController, _super);\n function WindowScrollController() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WindowScrollController.prototype.getScrollTop = function () {\n return window.pageYOffset;\n };\n WindowScrollController.prototype.getScrollLeft = function () {\n return window.pageXOffset;\n };\n WindowScrollController.prototype.setScrollTop = function (n) {\n window.scroll(window.pageXOffset, n);\n };\n WindowScrollController.prototype.setScrollLeft = function (n) {\n window.scroll(n, window.pageYOffset);\n };\n WindowScrollController.prototype.getScrollWidth = function () {\n return document.documentElement.scrollWidth;\n };\n WindowScrollController.prototype.getScrollHeight = function () {\n return document.documentElement.scrollHeight;\n };\n WindowScrollController.prototype.getClientHeight = function () {\n return document.documentElement.clientHeight;\n };\n WindowScrollController.prototype.getClientWidth = function () {\n return document.documentElement.clientWidth;\n };\n return WindowScrollController;\n}(ScrollController));\n\nvar Theme = /** @class */ (function () {\n function Theme(calendarOptions) {\n if (this.iconOverrideOption) {\n this.setIconOverride(calendarOptions[this.iconOverrideOption]);\n }\n }\n Theme.prototype.setIconOverride = function (iconOverrideHash) {\n var iconClassesCopy;\n var buttonName;\n if (typeof iconOverrideHash === 'object' && iconOverrideHash) { // non-null object\n iconClassesCopy = __assign({}, this.iconClasses);\n for (buttonName in iconOverrideHash) {\n iconClassesCopy[buttonName] = this.applyIconOverridePrefix(iconOverrideHash[buttonName]);\n }\n this.iconClasses = iconClassesCopy;\n }\n else if (iconOverrideHash === false) {\n this.iconClasses = {};\n }\n };\n Theme.prototype.applyIconOverridePrefix = function (className) {\n var prefix = this.iconOverridePrefix;\n if (prefix && className.indexOf(prefix) !== 0) { // if not already present\n className = prefix + className;\n }\n return className;\n };\n Theme.prototype.getClass = function (key) {\n return this.classes[key] || '';\n };\n Theme.prototype.getIconClass = function (buttonName, isRtl) {\n var className;\n if (isRtl && this.rtlIconClasses) {\n className = this.rtlIconClasses[buttonName] || this.iconClasses[buttonName];\n }\n else {\n className = this.iconClasses[buttonName];\n }\n if (className) {\n return this.baseIconClass + \" \" + className;\n }\n return '';\n };\n Theme.prototype.getCustomButtonIconClass = function (customButtonProps) {\n var className;\n if (this.iconOverrideCustomButtonOption) {\n className = customButtonProps[this.iconOverrideCustomButtonOption];\n if (className) {\n return this.baseIconClass + \" \" + this.applyIconOverridePrefix(className);\n }\n }\n return '';\n };\n return Theme;\n}());\nTheme.prototype.classes = {};\nTheme.prototype.iconClasses = {};\nTheme.prototype.baseIconClass = '';\nTheme.prototype.iconOverridePrefix = '';\n\nvar ScrollResponder = /** @class */ (function () {\n function ScrollResponder(execFunc, emitter, scrollTime, scrollTimeReset) {\n var _this = this;\n this.execFunc = execFunc;\n this.emitter = emitter;\n this.scrollTime = scrollTime;\n this.scrollTimeReset = scrollTimeReset;\n this.handleScrollRequest = function (request) {\n _this.queuedRequest = __assign({}, _this.queuedRequest || {}, request);\n _this.drain();\n };\n emitter.on('_scrollRequest', this.handleScrollRequest);\n this.fireInitialScroll();\n }\n ScrollResponder.prototype.detach = function () {\n this.emitter.off('_scrollRequest', this.handleScrollRequest);\n };\n ScrollResponder.prototype.update = function (isDatesNew) {\n if (isDatesNew && this.scrollTimeReset) {\n this.fireInitialScroll(); // will drain\n }\n else {\n this.drain();\n }\n };\n ScrollResponder.prototype.fireInitialScroll = function () {\n this.handleScrollRequest({\n time: this.scrollTime,\n });\n };\n ScrollResponder.prototype.drain = function () {\n if (this.queuedRequest && this.execFunc(this.queuedRequest)) {\n this.queuedRequest = null;\n }\n };\n return ScrollResponder;\n}());\n\nvar ViewContextType = createContext({}); // for Components\nfunction buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {\n return {\n dateEnv: dateEnv,\n options: viewOptions,\n pluginHooks: pluginHooks,\n emitter: emitter,\n dispatch: dispatch,\n getCurrentData: getCurrentData,\n calendarApi: calendarApi,\n viewSpec: viewSpec,\n viewApi: viewApi,\n dateProfileGenerator: dateProfileGenerator,\n theme: theme,\n isRtl: viewOptions.direction === 'rtl',\n addResizeHandler: function (handler) {\n emitter.on('_resize', handler);\n },\n removeResizeHandler: function (handler) {\n emitter.off('_resize', handler);\n },\n createScrollResponder: function (execFunc) {\n return new ScrollResponder(execFunc, emitter, createDuration(viewOptions.scrollTime), viewOptions.scrollTimeReset);\n },\n registerInteractiveComponent: registerInteractiveComponent,\n unregisterInteractiveComponent: unregisterInteractiveComponent,\n };\n}\n\n/* eslint max-classes-per-file: off */\nvar PureComponent = /** @class */ (function (_super) {\n __extends(PureComponent, _super);\n function PureComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PureComponent.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log(getUnequalProps(nextProps, this.props), getUnequalProps(nextState, this.state));\n }\n return !compareObjs(this.props, nextProps, this.propEquality) ||\n !compareObjs(this.state, nextState, this.stateEquality);\n };\n // HACK for freakin' React StrictMode\n PureComponent.prototype.safeSetState = function (newState) {\n if (!compareObjs(this.state, __assign(__assign({}, this.state), newState), this.stateEquality)) {\n this.setState(newState);\n }\n };\n PureComponent.addPropsEquality = addPropsEquality;\n PureComponent.addStateEquality = addStateEquality;\n PureComponent.contextType = ViewContextType;\n return PureComponent;\n}(Component));\nPureComponent.prototype.propEquality = {};\nPureComponent.prototype.stateEquality = {};\nvar BaseComponent = /** @class */ (function (_super) {\n __extends(BaseComponent, _super);\n function BaseComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BaseComponent.contextType = ViewContextType;\n return BaseComponent;\n}(PureComponent));\nfunction addPropsEquality(propEquality) {\n var hash = Object.create(this.prototype.propEquality);\n __assign(hash, propEquality);\n this.prototype.propEquality = hash;\n}\nfunction addStateEquality(stateEquality) {\n var hash = Object.create(this.prototype.stateEquality);\n __assign(hash, stateEquality);\n this.prototype.stateEquality = hash;\n}\n// use other one\nfunction setRef(ref, current) {\n if (typeof ref === 'function') {\n ref(current);\n }\n else if (ref) {\n // see https://github.com/facebook/react/issues/13029\n ref.current = current;\n }\n}\n\n/*\nan INTERACTABLE date component\n\nPURPOSES:\n- hook up to fg, fill, and mirror renderers\n- interface for dragging and hits\n*/\nvar DateComponent = /** @class */ (function (_super) {\n __extends(DateComponent, _super);\n function DateComponent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.uid = guid();\n return _this;\n }\n // Hit System\n // -----------------------------------------------------------------------------------------------------------------\n DateComponent.prototype.prepareHits = function () {\n };\n DateComponent.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) {\n return null; // this should be abstract\n };\n // Pointer Interaction Utils\n // -----------------------------------------------------------------------------------------------------------------\n DateComponent.prototype.isValidSegDownEl = function (el) {\n return !this.props.eventDrag && // HACK\n !this.props.eventResize && // HACK\n !elementClosest(el, '.fc-event-mirror');\n };\n DateComponent.prototype.isValidDateDownEl = function (el) {\n return !elementClosest(el, '.fc-event:not(.fc-bg-event)') &&\n !elementClosest(el, '.fc-more-link') && // a \"more..\" link\n !elementClosest(el, 'a[data-navlink]') && // a clickable nav link\n !elementClosest(el, '.fc-popover'); // hack\n };\n return DateComponent;\n}(BaseComponent));\n\n// TODO: easier way to add new hooks? need to update a million things\nfunction createPlugin(input) {\n return {\n id: guid(),\n deps: input.deps || [],\n reducers: input.reducers || [],\n isLoadingFuncs: input.isLoadingFuncs || [],\n contextInit: [].concat(input.contextInit || []),\n eventRefiners: input.eventRefiners || {},\n eventDefMemberAdders: input.eventDefMemberAdders || [],\n eventSourceRefiners: input.eventSourceRefiners || {},\n isDraggableTransformers: input.isDraggableTransformers || [],\n eventDragMutationMassagers: input.eventDragMutationMassagers || [],\n eventDefMutationAppliers: input.eventDefMutationAppliers || [],\n dateSelectionTransformers: input.dateSelectionTransformers || [],\n datePointTransforms: input.datePointTransforms || [],\n dateSpanTransforms: input.dateSpanTransforms || [],\n views: input.views || {},\n viewPropsTransformers: input.viewPropsTransformers || [],\n isPropsValid: input.isPropsValid || null,\n externalDefTransforms: input.externalDefTransforms || [],\n viewContainerAppends: input.viewContainerAppends || [],\n eventDropTransformers: input.eventDropTransformers || [],\n componentInteractions: input.componentInteractions || [],\n calendarInteractions: input.calendarInteractions || [],\n themeClasses: input.themeClasses || {},\n eventSourceDefs: input.eventSourceDefs || [],\n cmdFormatter: input.cmdFormatter,\n recurringTypes: input.recurringTypes || [],\n namedTimeZonedImpl: input.namedTimeZonedImpl,\n initialView: input.initialView || '',\n elementDraggingImpl: input.elementDraggingImpl,\n optionChangeHandlers: input.optionChangeHandlers || {},\n scrollGridImpl: input.scrollGridImpl || null,\n contentTypeHandlers: input.contentTypeHandlers || {},\n listenerRefiners: input.listenerRefiners || {},\n optionRefiners: input.optionRefiners || {},\n propSetHandlers: input.propSetHandlers || {},\n };\n}\nfunction buildPluginHooks(pluginDefs, globalDefs) {\n var isAdded = {};\n var hooks = {\n reducers: [],\n isLoadingFuncs: [],\n contextInit: [],\n eventRefiners: {},\n eventDefMemberAdders: [],\n eventSourceRefiners: {},\n isDraggableTransformers: [],\n eventDragMutationMassagers: [],\n eventDefMutationAppliers: [],\n dateSelectionTransformers: [],\n datePointTransforms: [],\n dateSpanTransforms: [],\n views: {},\n viewPropsTransformers: [],\n isPropsValid: null,\n externalDefTransforms: [],\n viewContainerAppends: [],\n eventDropTransformers: [],\n componentInteractions: [],\n calendarInteractions: [],\n themeClasses: {},\n eventSourceDefs: [],\n cmdFormatter: null,\n recurringTypes: [],\n namedTimeZonedImpl: null,\n initialView: '',\n elementDraggingImpl: null,\n optionChangeHandlers: {},\n scrollGridImpl: null,\n contentTypeHandlers: {},\n listenerRefiners: {},\n optionRefiners: {},\n propSetHandlers: {},\n };\n function addDefs(defs) {\n for (var _i = 0, defs_1 = defs; _i < defs_1.length; _i++) {\n var def = defs_1[_i];\n if (!isAdded[def.id]) {\n isAdded[def.id] = true;\n addDefs(def.deps);\n hooks = combineHooks(hooks, def);\n }\n }\n }\n if (pluginDefs) {\n addDefs(pluginDefs);\n }\n addDefs(globalDefs);\n return hooks;\n}\nfunction buildBuildPluginHooks() {\n var currentOverrideDefs = [];\n var currentGlobalDefs = [];\n var currentHooks;\n return function (overrideDefs, globalDefs) {\n if (!currentHooks || !isArraysEqual(overrideDefs, currentOverrideDefs) || !isArraysEqual(globalDefs, currentGlobalDefs)) {\n currentHooks = buildPluginHooks(overrideDefs, globalDefs);\n }\n currentOverrideDefs = overrideDefs;\n currentGlobalDefs = globalDefs;\n return currentHooks;\n };\n}\nfunction combineHooks(hooks0, hooks1) {\n return {\n reducers: hooks0.reducers.concat(hooks1.reducers),\n isLoadingFuncs: hooks0.isLoadingFuncs.concat(hooks1.isLoadingFuncs),\n contextInit: hooks0.contextInit.concat(hooks1.contextInit),\n eventRefiners: __assign(__assign({}, hooks0.eventRefiners), hooks1.eventRefiners),\n eventDefMemberAdders: hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders),\n eventSourceRefiners: __assign(__assign({}, hooks0.eventSourceRefiners), hooks1.eventSourceRefiners),\n isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),\n eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),\n eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),\n dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),\n datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms),\n dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),\n views: __assign(__assign({}, hooks0.views), hooks1.views),\n viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),\n isPropsValid: hooks1.isPropsValid || hooks0.isPropsValid,\n externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),\n viewContainerAppends: hooks0.viewContainerAppends.concat(hooks1.viewContainerAppends),\n eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),\n calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions),\n componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions),\n themeClasses: __assign(__assign({}, hooks0.themeClasses), hooks1.themeClasses),\n eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),\n cmdFormatter: hooks1.cmdFormatter || hooks0.cmdFormatter,\n recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes),\n namedTimeZonedImpl: hooks1.namedTimeZonedImpl || hooks0.namedTimeZonedImpl,\n initialView: hooks0.initialView || hooks1.initialView,\n elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl,\n optionChangeHandlers: __assign(__assign({}, hooks0.optionChangeHandlers), hooks1.optionChangeHandlers),\n scrollGridImpl: hooks1.scrollGridImpl || hooks0.scrollGridImpl,\n contentTypeHandlers: __assign(__assign({}, hooks0.contentTypeHandlers), hooks1.contentTypeHandlers),\n listenerRefiners: __assign(__assign({}, hooks0.listenerRefiners), hooks1.listenerRefiners),\n optionRefiners: __assign(__assign({}, hooks0.optionRefiners), hooks1.optionRefiners),\n propSetHandlers: __assign(__assign({}, hooks0.propSetHandlers), hooks1.propSetHandlers),\n };\n}\n\nvar StandardTheme = /** @class */ (function (_super) {\n __extends(StandardTheme, _super);\n function StandardTheme() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StandardTheme;\n}(Theme));\nStandardTheme.prototype.classes = {\n root: 'fc-theme-standard',\n tableCellShaded: 'fc-cell-shaded',\n buttonGroup: 'fc-button-group',\n button: 'fc-button fc-button-primary',\n buttonActive: 'fc-button-active',\n};\nStandardTheme.prototype.baseIconClass = 'fc-icon';\nStandardTheme.prototype.iconClasses = {\n close: 'fc-icon-x',\n prev: 'fc-icon-chevron-left',\n next: 'fc-icon-chevron-right',\n prevYear: 'fc-icon-chevrons-left',\n nextYear: 'fc-icon-chevrons-right',\n};\nStandardTheme.prototype.rtlIconClasses = {\n prev: 'fc-icon-chevron-right',\n next: 'fc-icon-chevron-left',\n prevYear: 'fc-icon-chevrons-right',\n nextYear: 'fc-icon-chevrons-left',\n};\nStandardTheme.prototype.iconOverrideOption = 'buttonIcons'; // TODO: make TS-friendly\nStandardTheme.prototype.iconOverrideCustomButtonOption = 'icon';\nStandardTheme.prototype.iconOverridePrefix = 'fc-icon-';\n\nfunction compileViewDefs(defaultConfigs, overrideConfigs) {\n var hash = {};\n var viewType;\n for (viewType in defaultConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n for (viewType in overrideConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n return hash;\n}\nfunction ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n if (hash[viewType]) {\n return hash[viewType];\n }\n var viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n if (viewDef) {\n hash[viewType] = viewDef;\n }\n return viewDef;\n}\nfunction buildViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n var defaultConfig = defaultConfigs[viewType];\n var overrideConfig = overrideConfigs[viewType];\n var queryProp = function (name) { return ((defaultConfig && defaultConfig[name] !== null) ? defaultConfig[name] :\n ((overrideConfig && overrideConfig[name] !== null) ? overrideConfig[name] : null)); };\n var theComponent = queryProp('component');\n var superType = queryProp('superType');\n var superDef = null;\n if (superType) {\n if (superType === viewType) {\n throw new Error('Can\\'t have a custom view type that references itself');\n }\n superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs);\n }\n if (!theComponent && superDef) {\n theComponent = superDef.component;\n }\n if (!theComponent) {\n return null; // don't throw a warning, might be settings for a single-unit view\n }\n return {\n type: viewType,\n component: theComponent,\n defaults: __assign(__assign({}, (superDef ? superDef.defaults : {})), (defaultConfig ? defaultConfig.rawOptions : {})),\n overrides: __assign(__assign({}, (superDef ? superDef.overrides : {})), (overrideConfig ? overrideConfig.rawOptions : {})),\n };\n}\n\n/* eslint max-classes-per-file: off */\n// NOTE: in JSX, you should always use this class with arg. otherwise, will default to any???\nvar RenderHook = /** @class */ (function (_super) {\n __extends(RenderHook, _super);\n function RenderHook() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.rootElRef = createRef();\n _this.handleRootEl = function (el) {\n setRef(_this.rootElRef, el);\n if (_this.props.elRef) {\n setRef(_this.props.elRef, el);\n }\n };\n return _this;\n }\n RenderHook.prototype.render = function () {\n var _this = this;\n var props = this.props;\n var hookProps = props.hookProps;\n return (createElement(MountHook, { hookProps: hookProps, didMount: props.didMount, willUnmount: props.willUnmount, elRef: this.handleRootEl }, function (rootElRef) { return (createElement(ContentHook, { hookProps: hookProps, content: props.content, defaultContent: props.defaultContent, backupElRef: _this.rootElRef }, function (innerElRef, innerContent) { return props.children(rootElRef, normalizeClassNames(props.classNames, hookProps), innerElRef, innerContent); })); }));\n };\n return RenderHook;\n}(BaseComponent));\n// TODO: rename to be about function, not default. use in above type\n// for forcing rerender of components that use the ContentHook\nvar CustomContentRenderContext = createContext(0);\nfunction ContentHook(props) {\n return (createElement(CustomContentRenderContext.Consumer, null, function (renderId) { return (createElement(ContentHookInner, __assign({ renderId: renderId }, props))); }));\n}\nvar ContentHookInner = /** @class */ (function (_super) {\n __extends(ContentHookInner, _super);\n function ContentHookInner() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.innerElRef = createRef();\n return _this;\n }\n ContentHookInner.prototype.render = function () {\n return this.props.children(this.innerElRef, this.renderInnerContent());\n };\n ContentHookInner.prototype.componentDidMount = function () {\n this.updateCustomContent();\n };\n ContentHookInner.prototype.componentDidUpdate = function () {\n this.updateCustomContent();\n };\n ContentHookInner.prototype.componentWillUnmount = function () {\n if (this.customContentInfo && this.customContentInfo.destroy) {\n this.customContentInfo.destroy();\n }\n };\n ContentHookInner.prototype.renderInnerContent = function () {\n var customContentInfo = this.customContentInfo; // only populated if using non-[p]react node(s)\n var innerContent = this.getInnerContent();\n var meta = this.getContentMeta(innerContent);\n // initial run, or content-type changing? (from vue -> react for example)\n if (!customContentInfo || customContentInfo.contentKey !== meta.contentKey) {\n // clearing old value\n if (customContentInfo) {\n if (customContentInfo.destroy) {\n customContentInfo.destroy();\n }\n customContentInfo = this.customContentInfo = null;\n }\n // assigning new value\n if (meta.contentKey) {\n customContentInfo = this.customContentInfo = __assign({ contentKey: meta.contentKey, contentVal: innerContent[meta.contentKey] }, meta.buildLifecycleFuncs());\n }\n // updating\n }\n else if (customContentInfo) {\n customContentInfo.contentVal = innerContent[meta.contentKey];\n }\n return customContentInfo\n ? [] // signal that something was specified\n : innerContent; // assume a [p]react vdom node. use it\n };\n ContentHookInner.prototype.getInnerContent = function () {\n var props = this.props;\n var innerContent = normalizeContent(props.content, props.hookProps);\n if (innerContent === undefined) { // use the default\n innerContent = normalizeContent(props.defaultContent, props.hookProps);\n }\n return innerContent == null ? null : innerContent; // convert undefined to null (better for React)\n };\n ContentHookInner.prototype.getContentMeta = function (innerContent) {\n var contentTypeHandlers = this.context.pluginHooks.contentTypeHandlers;\n var contentKey = '';\n var buildLifecycleFuncs = null;\n if (innerContent) { // allowed to be null, for convenience to caller\n for (var searchKey in contentTypeHandlers) {\n if (innerContent[searchKey] !== undefined) {\n contentKey = searchKey;\n buildLifecycleFuncs = contentTypeHandlers[searchKey];\n break;\n }\n }\n }\n return { contentKey: contentKey, buildLifecycleFuncs: buildLifecycleFuncs };\n };\n ContentHookInner.prototype.updateCustomContent = function () {\n if (this.customContentInfo) { // for non-[p]react\n this.customContentInfo.render(this.innerElRef.current || this.props.backupElRef.current, // the element to render into\n this.customContentInfo.contentVal);\n }\n };\n return ContentHookInner;\n}(BaseComponent));\nvar MountHook = /** @class */ (function (_super) {\n __extends(MountHook, _super);\n function MountHook() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handleRootEl = function (rootEl) {\n _this.rootEl = rootEl;\n if (_this.props.elRef) {\n setRef(_this.props.elRef, rootEl);\n }\n };\n return _this;\n }\n MountHook.prototype.render = function () {\n return this.props.children(this.handleRootEl);\n };\n MountHook.prototype.componentDidMount = function () {\n var callback = this.props.didMount;\n if (callback) {\n callback(__assign(__assign({}, this.props.hookProps), { el: this.rootEl }));\n }\n };\n MountHook.prototype.componentWillUnmount = function () {\n var callback = this.props.willUnmount;\n if (callback) {\n callback(__assign(__assign({}, this.props.hookProps), { el: this.rootEl }));\n }\n };\n return MountHook;\n}(BaseComponent));\nfunction buildClassNameNormalizer() {\n var currentGenerator;\n var currentHookProps;\n var currentClassNames = [];\n return function (generator, hookProps) {\n if (!currentHookProps || !isPropsEqual(currentHookProps, hookProps) || generator !== currentGenerator) {\n currentGenerator = generator;\n currentHookProps = hookProps;\n currentClassNames = normalizeClassNames(generator, hookProps);\n }\n return currentClassNames;\n };\n}\nfunction normalizeClassNames(classNames, hookProps) {\n if (typeof classNames === 'function') {\n classNames = classNames(hookProps);\n }\n return parseClassNames(classNames);\n}\nfunction normalizeContent(input, hookProps) {\n if (typeof input === 'function') {\n return input(hookProps, createElement); // give the function the vdom-creation func\n }\n return input;\n}\n\nvar ViewRoot = /** @class */ (function (_super) {\n __extends(ViewRoot, _super);\n function ViewRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.normalizeClassNames = buildClassNameNormalizer();\n return _this;\n }\n ViewRoot.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var options = context.options;\n var hookProps = { view: context.viewApi };\n var customClassNames = this.normalizeClassNames(options.viewClassNames, hookProps);\n return (createElement(MountHook, { hookProps: hookProps, didMount: options.viewDidMount, willUnmount: options.viewWillUnmount, elRef: props.elRef }, function (rootElRef) { return props.children(rootElRef, [\"fc-\" + props.viewSpec.type + \"-view\", 'fc-view'].concat(customClassNames)); }));\n };\n return ViewRoot;\n}(BaseComponent));\n\nfunction parseViewConfigs(inputs) {\n return mapHash(inputs, parseViewConfig);\n}\nfunction parseViewConfig(input) {\n var rawOptions = typeof input === 'function' ?\n { component: input } :\n input;\n var component = rawOptions.component;\n if (rawOptions.content) {\n component = createViewHookComponent(rawOptions);\n // TODO: remove content/classNames/didMount/etc from options?\n }\n return {\n superType: rawOptions.type,\n component: component,\n rawOptions: rawOptions,\n };\n}\nfunction createViewHookComponent(options) {\n return function (viewProps) { return (createElement(ViewContextType.Consumer, null, function (context) { return (createElement(ViewRoot, { viewSpec: context.viewSpec }, function (viewElRef, viewClassNames) {\n var hookProps = __assign(__assign({}, viewProps), { nextDayThreshold: context.options.nextDayThreshold });\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.classNames, content: options.content, didMount: options.didMount, willUnmount: options.willUnmount, elRef: viewElRef }, function (rootElRef, customClassNames, innerElRef, innerContent) { return (createElement(\"div\", { className: viewClassNames.concat(customClassNames).join(' '), ref: rootElRef }, innerContent)); }));\n })); })); };\n}\n\nfunction buildViewSpecs(defaultInputs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n var defaultConfigs = parseViewConfigs(defaultInputs);\n var overrideConfigs = parseViewConfigs(optionOverrides.views);\n var viewDefs = compileViewDefs(defaultConfigs, overrideConfigs);\n return mapHash(viewDefs, function (viewDef) { return buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults); });\n}\nfunction buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n var durationInput = viewDef.overrides.duration ||\n viewDef.defaults.duration ||\n dynamicOptionOverrides.duration ||\n optionOverrides.duration;\n var duration = null;\n var durationUnit = '';\n var singleUnit = '';\n var singleUnitOverrides = {};\n if (durationInput) {\n duration = createDurationCached(durationInput);\n if (duration) { // valid?\n var denom = greatestDurationDenominator(duration);\n durationUnit = denom.unit;\n if (denom.value === 1) {\n singleUnit = durationUnit;\n singleUnitOverrides = overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].rawOptions : {};\n }\n }\n }\n var queryButtonText = function (optionsSubset) {\n var buttonTextMap = optionsSubset.buttonText || {};\n var buttonTextKey = viewDef.defaults.buttonTextKey;\n if (buttonTextKey != null && buttonTextMap[buttonTextKey] != null) {\n return buttonTextMap[buttonTextKey];\n }\n if (buttonTextMap[viewDef.type] != null) {\n return buttonTextMap[viewDef.type];\n }\n if (buttonTextMap[singleUnit] != null) {\n return buttonTextMap[singleUnit];\n }\n return null;\n };\n var queryButtonTitle = function (optionsSubset) {\n var buttonHints = optionsSubset.buttonHints || {};\n var buttonKey = viewDef.defaults.buttonTextKey; // use same key as text\n if (buttonKey != null && buttonHints[buttonKey] != null) {\n return buttonHints[buttonKey];\n }\n if (buttonHints[viewDef.type] != null) {\n return buttonHints[viewDef.type];\n }\n if (buttonHints[singleUnit] != null) {\n return buttonHints[singleUnit];\n }\n return null;\n };\n return {\n type: viewDef.type,\n component: viewDef.component,\n duration: duration,\n durationUnit: durationUnit,\n singleUnit: singleUnit,\n optionDefaults: viewDef.defaults,\n optionOverrides: __assign(__assign({}, singleUnitOverrides), viewDef.overrides),\n buttonTextOverride: queryButtonText(dynamicOptionOverrides) ||\n queryButtonText(optionOverrides) || // constructor-specified buttonText lookup hash takes precedence\n viewDef.overrides.buttonText,\n buttonTextDefault: queryButtonText(localeDefaults) ||\n viewDef.defaults.buttonText ||\n queryButtonText(BASE_OPTION_DEFAULTS) ||\n viewDef.type,\n // not DRY\n buttonTitleOverride: queryButtonTitle(dynamicOptionOverrides) ||\n queryButtonTitle(optionOverrides) ||\n viewDef.overrides.buttonHint,\n buttonTitleDefault: queryButtonTitle(localeDefaults) ||\n viewDef.defaults.buttonHint ||\n queryButtonTitle(BASE_OPTION_DEFAULTS),\n // will eventually fall back to buttonText\n };\n}\n// hack to get memoization working\nvar durationInputMap = {};\nfunction createDurationCached(durationInput) {\n var json = JSON.stringify(durationInput);\n var res = durationInputMap[json];\n if (res === undefined) {\n res = createDuration(durationInput);\n durationInputMap[json] = res;\n }\n return res;\n}\n\nvar DateProfileGenerator = /** @class */ (function () {\n function DateProfileGenerator(props) {\n this.props = props;\n this.nowDate = getNow(props.nowInput, props.dateEnv);\n this.initHiddenDays();\n }\n /* Date Range Computation\n ------------------------------------------------------------------------------------------------------------------*/\n // Builds a structure with info about what the dates/ranges will be for the \"prev\" view.\n DateProfileGenerator.prototype.buildPrev = function (currentDateProfile, currentDate, forceToValid) {\n var dateEnv = this.props.dateEnv;\n var prevDate = dateEnv.subtract(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n currentDateProfile.dateIncrement);\n return this.build(prevDate, -1, forceToValid);\n };\n // Builds a structure with info about what the dates/ranges will be for the \"next\" view.\n DateProfileGenerator.prototype.buildNext = function (currentDateProfile, currentDate, forceToValid) {\n var dateEnv = this.props.dateEnv;\n var nextDate = dateEnv.add(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n currentDateProfile.dateIncrement);\n return this.build(nextDate, 1, forceToValid);\n };\n // Builds a structure holding dates/ranges for rendering around the given date.\n // Optional direction param indicates whether the date is being incremented/decremented\n // from its previous value. decremented = -1, incremented = 1 (default).\n DateProfileGenerator.prototype.build = function (currentDate, direction, forceToValid) {\n if (forceToValid === void 0) { forceToValid = true; }\n var props = this.props;\n var validRange;\n var currentInfo;\n var isRangeAllDay;\n var renderRange;\n var activeRange;\n var isValid;\n validRange = this.buildValidRange();\n validRange = this.trimHiddenDays(validRange);\n if (forceToValid) {\n currentDate = constrainMarkerToRange(currentDate, validRange);\n }\n currentInfo = this.buildCurrentRangeInfo(currentDate, direction);\n isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit);\n renderRange = this.buildRenderRange(this.trimHiddenDays(currentInfo.range), currentInfo.unit, isRangeAllDay);\n renderRange = this.trimHiddenDays(renderRange);\n activeRange = renderRange;\n if (!props.showNonCurrentDates) {\n activeRange = intersectRanges(activeRange, currentInfo.range);\n }\n activeRange = this.adjustActiveRange(activeRange);\n activeRange = intersectRanges(activeRange, validRange); // might return null\n // it's invalid if the originally requested date is not contained,\n // or if the range is completely outside of the valid range.\n isValid = rangesIntersect(currentInfo.range, validRange);\n return {\n // constraint for where prev/next operations can go and where events can be dragged/resized to.\n // an object with optional start and end properties.\n validRange: validRange,\n // range the view is formally responsible for.\n // for example, a month view might have 1st-31st, excluding padded dates\n currentRange: currentInfo.range,\n // name of largest unit being displayed, like \"month\" or \"week\"\n currentRangeUnit: currentInfo.unit,\n isRangeAllDay: isRangeAllDay,\n // dates that display events and accept drag-n-drop\n // will be `null` if no dates accept events\n activeRange: activeRange,\n // date range with a rendered skeleton\n // includes not-active days that need some sort of DOM\n renderRange: renderRange,\n // Duration object that denotes the first visible time of any given day\n slotMinTime: props.slotMinTime,\n // Duration object that denotes the exclusive visible end time of any given day\n slotMaxTime: props.slotMaxTime,\n isValid: isValid,\n // how far the current date will move for a prev/next operation\n dateIncrement: this.buildDateIncrement(currentInfo.duration),\n // pass a fallback (might be null) ^\n };\n };\n // Builds an object with optional start/end properties.\n // Indicates the minimum/maximum dates to display.\n // not responsible for trimming hidden days.\n DateProfileGenerator.prototype.buildValidRange = function () {\n var input = this.props.validRangeInput;\n var simpleInput = typeof input === 'function'\n ? input.call(this.props.calendarApi, this.nowDate)\n : input;\n return this.refineRange(simpleInput) ||\n { start: null, end: null }; // completely open-ended\n };\n // Builds a structure with info about the \"current\" range, the range that is\n // highlighted as being the current month for example.\n // See build() for a description of `direction`.\n // Guaranteed to have `range` and `unit` properties. `duration` is optional.\n DateProfileGenerator.prototype.buildCurrentRangeInfo = function (date, direction) {\n var props = this.props;\n var duration = null;\n var unit = null;\n var range = null;\n var dayCount;\n if (props.duration) {\n duration = props.duration;\n unit = props.durationUnit;\n range = this.buildRangeFromDuration(date, direction, duration, unit);\n }\n else if ((dayCount = this.props.dayCount)) {\n unit = 'day';\n range = this.buildRangeFromDayCount(date, direction, dayCount);\n }\n else if ((range = this.buildCustomVisibleRange(date))) {\n unit = props.dateEnv.greatestWholeUnit(range.start, range.end).unit;\n }\n else {\n duration = this.getFallbackDuration();\n unit = greatestDurationDenominator(duration).unit;\n range = this.buildRangeFromDuration(date, direction, duration, unit);\n }\n return { duration: duration, unit: unit, range: range };\n };\n DateProfileGenerator.prototype.getFallbackDuration = function () {\n return createDuration({ day: 1 });\n };\n // Returns a new activeRange to have time values (un-ambiguate)\n // slotMinTime or slotMaxTime causes the range to expand.\n DateProfileGenerator.prototype.adjustActiveRange = function (range) {\n var _a = this.props, dateEnv = _a.dateEnv, usesMinMaxTime = _a.usesMinMaxTime, slotMinTime = _a.slotMinTime, slotMaxTime = _a.slotMaxTime;\n var start = range.start, end = range.end;\n if (usesMinMaxTime) {\n // expand active range if slotMinTime is negative (why not when positive?)\n if (asRoughDays(slotMinTime) < 0) {\n start = startOfDay(start); // necessary?\n start = dateEnv.add(start, slotMinTime);\n }\n // expand active range if slotMaxTime is beyond one day (why not when negative?)\n if (asRoughDays(slotMaxTime) > 1) {\n end = startOfDay(end); // necessary?\n end = addDays(end, -1);\n end = dateEnv.add(end, slotMaxTime);\n }\n }\n return { start: start, end: end };\n };\n // Builds the \"current\" range when it is specified as an explicit duration.\n // `unit` is the already-computed greatestDurationDenominator unit of duration.\n DateProfileGenerator.prototype.buildRangeFromDuration = function (date, direction, duration, unit) {\n var _a = this.props, dateEnv = _a.dateEnv, dateAlignment = _a.dateAlignment;\n var start;\n var end;\n var res;\n // compute what the alignment should be\n if (!dateAlignment) {\n var dateIncrement = this.props.dateIncrement;\n if (dateIncrement) {\n // use the smaller of the two units\n if (asRoughMs(dateIncrement) < asRoughMs(duration)) {\n dateAlignment = greatestDurationDenominator(dateIncrement).unit;\n }\n else {\n dateAlignment = unit;\n }\n }\n else {\n dateAlignment = unit;\n }\n }\n // if the view displays a single day or smaller\n if (asRoughDays(duration) <= 1) {\n if (this.isHiddenDay(start)) {\n start = this.skipHiddenDays(start, direction);\n start = startOfDay(start);\n }\n }\n function computeRes() {\n start = dateEnv.startOf(date, dateAlignment);\n end = dateEnv.add(start, duration);\n res = { start: start, end: end };\n }\n computeRes();\n // if range is completely enveloped by hidden days, go past the hidden days\n if (!this.trimHiddenDays(res)) {\n date = this.skipHiddenDays(date, direction);\n computeRes();\n }\n return res;\n };\n // Builds the \"current\" range when a dayCount is specified.\n DateProfileGenerator.prototype.buildRangeFromDayCount = function (date, direction, dayCount) {\n var _a = this.props, dateEnv = _a.dateEnv, dateAlignment = _a.dateAlignment;\n var runningCount = 0;\n var start = date;\n var end;\n if (dateAlignment) {\n start = dateEnv.startOf(start, dateAlignment);\n }\n start = startOfDay(start);\n start = this.skipHiddenDays(start, direction);\n end = start;\n do {\n end = addDays(end, 1);\n if (!this.isHiddenDay(end)) {\n runningCount += 1;\n }\n } while (runningCount < dayCount);\n return { start: start, end: end };\n };\n // Builds a normalized range object for the \"visible\" range,\n // which is a way to define the currentRange and activeRange at the same time.\n DateProfileGenerator.prototype.buildCustomVisibleRange = function (date) {\n var props = this.props;\n var input = props.visibleRangeInput;\n var simpleInput = typeof input === 'function'\n ? input.call(props.calendarApi, props.dateEnv.toDate(date))\n : input;\n var range = this.refineRange(simpleInput);\n if (range && (range.start == null || range.end == null)) {\n return null;\n }\n return range;\n };\n // Computes the range that will represent the element/cells for *rendering*,\n // but which may have voided days/times.\n // not responsible for trimming hidden days.\n DateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) {\n return currentRange;\n };\n // Compute the duration value that should be added/substracted to the current date\n // when a prev/next operation happens.\n DateProfileGenerator.prototype.buildDateIncrement = function (fallback) {\n var dateIncrement = this.props.dateIncrement;\n var customAlignment;\n if (dateIncrement) {\n return dateIncrement;\n }\n if ((customAlignment = this.props.dateAlignment)) {\n return createDuration(1, customAlignment);\n }\n if (fallback) {\n return fallback;\n }\n return createDuration({ days: 1 });\n };\n DateProfileGenerator.prototype.refineRange = function (rangeInput) {\n if (rangeInput) {\n var range = parseRange(rangeInput, this.props.dateEnv);\n if (range) {\n range = computeVisibleDayRange(range);\n }\n return range;\n }\n return null;\n };\n /* Hidden Days\n ------------------------------------------------------------------------------------------------------------------*/\n // Initializes internal variables related to calculating hidden days-of-week\n DateProfileGenerator.prototype.initHiddenDays = function () {\n var hiddenDays = this.props.hiddenDays || []; // array of day-of-week indices that are hidden\n var isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool)\n var dayCnt = 0;\n var i;\n if (this.props.weekends === false) {\n hiddenDays.push(0, 6); // 0=sunday, 6=saturday\n }\n for (i = 0; i < 7; i += 1) {\n if (!(isHiddenDayHash[i] = hiddenDays.indexOf(i) !== -1)) {\n dayCnt += 1;\n }\n }\n if (!dayCnt) {\n throw new Error('invalid hiddenDays'); // all days were hidden? bad.\n }\n this.isHiddenDayHash = isHiddenDayHash;\n };\n // Remove days from the beginning and end of the range that are computed as hidden.\n // If the whole range is trimmed off, returns null\n DateProfileGenerator.prototype.trimHiddenDays = function (range) {\n var start = range.start, end = range.end;\n if (start) {\n start = this.skipHiddenDays(start);\n }\n if (end) {\n end = this.skipHiddenDays(end, -1, true);\n }\n if (start == null || end == null || start < end) {\n return { start: start, end: end };\n }\n return null;\n };\n // Is the current day hidden?\n // `day` is a day-of-week index (0-6), or a Date (used for UTC)\n DateProfileGenerator.prototype.isHiddenDay = function (day) {\n if (day instanceof Date) {\n day = day.getUTCDay();\n }\n return this.isHiddenDayHash[day];\n };\n // Incrementing the current day until it is no longer a hidden day, returning a copy.\n // DOES NOT CONSIDER validRange!\n // If the initial value of `date` is not a hidden day, don't do anything.\n // Pass `isExclusive` as `true` if you are dealing with an end date.\n // `inc` defaults to `1` (increment one day forward each time)\n DateProfileGenerator.prototype.skipHiddenDays = function (date, inc, isExclusive) {\n if (inc === void 0) { inc = 1; }\n if (isExclusive === void 0) { isExclusive = false; }\n while (this.isHiddenDayHash[(date.getUTCDay() + (isExclusive ? inc : 0) + 7) % 7]) {\n date = addDays(date, inc);\n }\n return date;\n };\n return DateProfileGenerator;\n}());\n\nfunction reduceViewType(viewType, action) {\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n viewType = action.viewType;\n }\n return viewType;\n}\n\nfunction reduceDynamicOptionOverrides(dynamicOptionOverrides, action) {\n var _a;\n switch (action.type) {\n case 'SET_OPTION':\n return __assign(__assign({}, dynamicOptionOverrides), (_a = {}, _a[action.optionName] = action.rawOptionValue, _a));\n default:\n return dynamicOptionOverrides;\n }\n}\n\nfunction reduceDateProfile(currentDateProfile, action, currentDate, dateProfileGenerator) {\n var dp;\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n return dateProfileGenerator.build(action.dateMarker || currentDate);\n case 'CHANGE_DATE':\n return dateProfileGenerator.build(action.dateMarker);\n case 'PREV':\n dp = dateProfileGenerator.buildPrev(currentDateProfile, currentDate);\n if (dp.isValid) {\n return dp;\n }\n break;\n case 'NEXT':\n dp = dateProfileGenerator.buildNext(currentDateProfile, currentDate);\n if (dp.isValid) {\n return dp;\n }\n break;\n }\n return currentDateProfile;\n}\n\nfunction initEventSources(calendarOptions, dateProfile, context) {\n var activeRange = dateProfile ? dateProfile.activeRange : null;\n return addSources({}, parseInitialSources(calendarOptions, context), activeRange, context);\n}\nfunction reduceEventSources(eventSources, action, dateProfile, context) {\n var activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n switch (action.type) {\n case 'ADD_EVENT_SOURCES': // already parsed\n return addSources(eventSources, action.sources, activeRange, context);\n case 'REMOVE_EVENT_SOURCE':\n return removeSource(eventSources, action.sourceId);\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n case 'NEXT':\n case 'CHANGE_DATE':\n case 'CHANGE_VIEW_TYPE':\n if (dateProfile) {\n return fetchDirtySources(eventSources, activeRange, context);\n }\n return eventSources;\n case 'FETCH_EVENT_SOURCES':\n return fetchSourcesByIds(eventSources, action.sourceIds ? // why no type?\n arrayToHash(action.sourceIds) :\n excludeStaticSources(eventSources, context), activeRange, action.isRefetch || false, context);\n case 'RECEIVE_EVENTS':\n case 'RECEIVE_EVENT_ERROR':\n return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange);\n case 'REMOVE_ALL_EVENT_SOURCES':\n return {};\n default:\n return eventSources;\n }\n}\nfunction reduceEventSourcesNewTimeZone(eventSources, dateProfile, context) {\n var activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n return fetchSourcesByIds(eventSources, excludeStaticSources(eventSources, context), activeRange, true, context);\n}\nfunction computeEventSourcesLoading(eventSources) {\n for (var sourceId in eventSources) {\n if (eventSources[sourceId].isFetching) {\n return true;\n }\n }\n return false;\n}\nfunction addSources(eventSourceHash, sources, fetchRange, context) {\n var hash = {};\n for (var _i = 0, sources_1 = sources; _i < sources_1.length; _i++) {\n var source = sources_1[_i];\n hash[source.sourceId] = source;\n }\n if (fetchRange) {\n hash = fetchDirtySources(hash, fetchRange, context);\n }\n return __assign(__assign({}, eventSourceHash), hash);\n}\nfunction removeSource(eventSourceHash, sourceId) {\n return filterHash(eventSourceHash, function (eventSource) { return eventSource.sourceId !== sourceId; });\n}\nfunction fetchDirtySources(sourceHash, fetchRange, context) {\n return fetchSourcesByIds(sourceHash, filterHash(sourceHash, function (eventSource) { return isSourceDirty(eventSource, fetchRange, context); }), fetchRange, false, context);\n}\nfunction isSourceDirty(eventSource, fetchRange, context) {\n if (!doesSourceNeedRange(eventSource, context)) {\n return !eventSource.latestFetchId;\n }\n return !context.options.lazyFetching ||\n !eventSource.fetchRange ||\n eventSource.isFetching || // always cancel outdated in-progress fetches\n fetchRange.start < eventSource.fetchRange.start ||\n fetchRange.end > eventSource.fetchRange.end;\n}\nfunction fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, isRefetch, context) {\n var nextSources = {};\n for (var sourceId in prevSources) {\n var source = prevSources[sourceId];\n if (sourceIdHash[sourceId]) {\n nextSources[sourceId] = fetchSource(source, fetchRange, isRefetch, context);\n }\n else {\n nextSources[sourceId] = source;\n }\n }\n return nextSources;\n}\nfunction fetchSource(eventSource, fetchRange, isRefetch, context) {\n var options = context.options, calendarApi = context.calendarApi;\n var sourceDef = context.pluginHooks.eventSourceDefs[eventSource.sourceDefId];\n var fetchId = guid();\n sourceDef.fetch({\n eventSource: eventSource,\n range: fetchRange,\n isRefetch: isRefetch,\n context: context,\n }, function (res) {\n var rawEvents = res.rawEvents;\n if (options.eventSourceSuccess) {\n rawEvents = options.eventSourceSuccess.call(calendarApi, rawEvents, res.xhr) || rawEvents;\n }\n if (eventSource.success) {\n rawEvents = eventSource.success.call(calendarApi, rawEvents, res.xhr) || rawEvents;\n }\n context.dispatch({\n type: 'RECEIVE_EVENTS',\n sourceId: eventSource.sourceId,\n fetchId: fetchId,\n fetchRange: fetchRange,\n rawEvents: rawEvents,\n });\n }, function (error) {\n console.warn(error.message, error);\n if (options.eventSourceFailure) {\n options.eventSourceFailure.call(calendarApi, error);\n }\n if (eventSource.failure) {\n eventSource.failure(error);\n }\n context.dispatch({\n type: 'RECEIVE_EVENT_ERROR',\n sourceId: eventSource.sourceId,\n fetchId: fetchId,\n fetchRange: fetchRange,\n error: error,\n });\n });\n return __assign(__assign({}, eventSource), { isFetching: true, latestFetchId: fetchId });\n}\nfunction receiveResponse(sourceHash, sourceId, fetchId, fetchRange) {\n var _a;\n var eventSource = sourceHash[sourceId];\n if (eventSource && // not already removed\n fetchId === eventSource.latestFetchId) {\n return __assign(__assign({}, sourceHash), (_a = {}, _a[sourceId] = __assign(__assign({}, eventSource), { isFetching: false, fetchRange: fetchRange }), _a));\n }\n return sourceHash;\n}\nfunction excludeStaticSources(eventSources, context) {\n return filterHash(eventSources, function (eventSource) { return doesSourceNeedRange(eventSource, context); });\n}\nfunction parseInitialSources(rawOptions, context) {\n var refiners = buildEventSourceRefiners(context);\n var rawSources = [].concat(rawOptions.eventSources || []);\n var sources = []; // parsed\n if (rawOptions.initialEvents) {\n rawSources.unshift(rawOptions.initialEvents);\n }\n if (rawOptions.events) {\n rawSources.unshift(rawOptions.events);\n }\n for (var _i = 0, rawSources_1 = rawSources; _i < rawSources_1.length; _i++) {\n var rawSource = rawSources_1[_i];\n var source = parseEventSource(rawSource, context, refiners);\n if (source) {\n sources.push(source);\n }\n }\n return sources;\n}\nfunction doesSourceNeedRange(eventSource, context) {\n var defs = context.pluginHooks.eventSourceDefs;\n return !defs[eventSource.sourceDefId].ignoreRange;\n}\n\nfunction reduceEventStore(eventStore, action, eventSources, dateProfile, context) {\n switch (action.type) {\n case 'RECEIVE_EVENTS': // raw\n return receiveRawEvents(eventStore, eventSources[action.sourceId], action.fetchId, action.fetchRange, action.rawEvents, context);\n case 'ADD_EVENTS': // already parsed, but not expanded\n return addEvent(eventStore, action.eventStore, // new ones\n dateProfile ? dateProfile.activeRange : null, context);\n case 'RESET_EVENTS':\n return action.eventStore;\n case 'MERGE_EVENTS': // already parsed and expanded\n return mergeEventStores(eventStore, action.eventStore);\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n case 'NEXT':\n case 'CHANGE_DATE':\n case 'CHANGE_VIEW_TYPE':\n if (dateProfile) {\n return expandRecurring(eventStore, dateProfile.activeRange, context);\n }\n return eventStore;\n case 'REMOVE_EVENTS':\n return excludeSubEventStore(eventStore, action.eventStore);\n case 'REMOVE_EVENT_SOURCE':\n return excludeEventsBySourceId(eventStore, action.sourceId);\n case 'REMOVE_ALL_EVENT_SOURCES':\n return filterEventStoreDefs(eventStore, function (eventDef) { return (!eventDef.sourceId // only keep events with no source id\n ); });\n case 'REMOVE_ALL_EVENTS':\n return createEmptyEventStore();\n default:\n return eventStore;\n }\n}\nfunction receiveRawEvents(eventStore, eventSource, fetchId, fetchRange, rawEvents, context) {\n if (eventSource && // not already removed\n fetchId === eventSource.latestFetchId // TODO: wish this logic was always in event-sources\n ) {\n var subset = parseEvents(transformRawEvents(rawEvents, eventSource, context), eventSource, context);\n if (fetchRange) {\n subset = expandRecurring(subset, fetchRange, context);\n }\n return mergeEventStores(excludeEventsBySourceId(eventStore, eventSource.sourceId), subset);\n }\n return eventStore;\n}\nfunction transformRawEvents(rawEvents, eventSource, context) {\n var calEachTransform = context.options.eventDataTransform;\n var sourceEachTransform = eventSource ? eventSource.eventDataTransform : null;\n if (sourceEachTransform) {\n rawEvents = transformEachRawEvent(rawEvents, sourceEachTransform);\n }\n if (calEachTransform) {\n rawEvents = transformEachRawEvent(rawEvents, calEachTransform);\n }\n return rawEvents;\n}\nfunction transformEachRawEvent(rawEvents, func) {\n var refinedEvents;\n if (!func) {\n refinedEvents = rawEvents;\n }\n else {\n refinedEvents = [];\n for (var _i = 0, rawEvents_1 = rawEvents; _i < rawEvents_1.length; _i++) {\n var rawEvent = rawEvents_1[_i];\n var refinedEvent = func(rawEvent);\n if (refinedEvent) {\n refinedEvents.push(refinedEvent);\n }\n else if (refinedEvent == null) {\n refinedEvents.push(rawEvent);\n } // if a different falsy value, do nothing\n }\n }\n return refinedEvents;\n}\nfunction addEvent(eventStore, subset, expandRange, context) {\n if (expandRange) {\n subset = expandRecurring(subset, expandRange, context);\n }\n return mergeEventStores(eventStore, subset);\n}\nfunction rezoneEventStoreDates(eventStore, oldDateEnv, newDateEnv) {\n var defs = eventStore.defs;\n var instances = mapHash(eventStore.instances, function (instance) {\n var def = defs[instance.defId];\n if (def.allDay || def.recurringDef) {\n return instance; // isn't dependent on timezone\n }\n return __assign(__assign({}, instance), { range: {\n start: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start, instance.forcedStartTzo)),\n end: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end, instance.forcedEndTzo)),\n }, forcedStartTzo: newDateEnv.canComputeOffset ? null : instance.forcedStartTzo, forcedEndTzo: newDateEnv.canComputeOffset ? null : instance.forcedEndTzo });\n });\n return { defs: defs, instances: instances };\n}\nfunction excludeEventsBySourceId(eventStore, sourceId) {\n return filterEventStoreDefs(eventStore, function (eventDef) { return eventDef.sourceId !== sourceId; });\n}\n// QUESTION: why not just return instances? do a general object-property-exclusion util\nfunction excludeInstances(eventStore, removals) {\n return {\n defs: eventStore.defs,\n instances: filterHash(eventStore.instances, function (instance) { return !removals[instance.instanceId]; }),\n };\n}\n\nfunction reduceDateSelection(currentSelection, action) {\n switch (action.type) {\n case 'UNSELECT_DATES':\n return null;\n case 'SELECT_DATES':\n return action.selection;\n default:\n return currentSelection;\n }\n}\n\nfunction reduceSelectedEvent(currentInstanceId, action) {\n switch (action.type) {\n case 'UNSELECT_EVENT':\n return '';\n case 'SELECT_EVENT':\n return action.eventInstanceId;\n default:\n return currentInstanceId;\n }\n}\n\nfunction reduceEventDrag(currentDrag, action) {\n var newDrag;\n switch (action.type) {\n case 'UNSET_EVENT_DRAG':\n return null;\n case 'SET_EVENT_DRAG':\n newDrag = action.state;\n return {\n affectedEvents: newDrag.affectedEvents,\n mutatedEvents: newDrag.mutatedEvents,\n isEvent: newDrag.isEvent,\n };\n default:\n return currentDrag;\n }\n}\n\nfunction reduceEventResize(currentResize, action) {\n var newResize;\n switch (action.type) {\n case 'UNSET_EVENT_RESIZE':\n return null;\n case 'SET_EVENT_RESIZE':\n newResize = action.state;\n return {\n affectedEvents: newResize.affectedEvents,\n mutatedEvents: newResize.mutatedEvents,\n isEvent: newResize.isEvent,\n };\n default:\n return currentResize;\n }\n}\n\nfunction parseToolbars(calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n var header = calendarOptions.headerToolbar ? parseToolbar(calendarOptions.headerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n var footer = calendarOptions.footerToolbar ? parseToolbar(calendarOptions.footerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n return { header: header, footer: footer };\n}\nfunction parseToolbar(sectionStrHash, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n var sectionWidgets = {};\n var viewsWithButtons = [];\n var hasTitle = false;\n for (var sectionName in sectionStrHash) {\n var sectionStr = sectionStrHash[sectionName];\n var sectionRes = parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi);\n sectionWidgets[sectionName] = sectionRes.widgets;\n viewsWithButtons.push.apply(viewsWithButtons, sectionRes.viewsWithButtons);\n hasTitle = hasTitle || sectionRes.hasTitle;\n }\n return { sectionWidgets: sectionWidgets, viewsWithButtons: viewsWithButtons, hasTitle: hasTitle };\n}\n/*\nBAD: querying icons and text here. should be done at render time\n*/\nfunction parseSection(sectionStr, calendarOptions, // defaults+overrides, then refined\ncalendarOptionOverrides, // overrides only!, unrefined :(\ntheme, viewSpecs, calendarApi) {\n var isRtl = calendarOptions.direction === 'rtl';\n var calendarCustomButtons = calendarOptions.customButtons || {};\n var calendarButtonTextOverrides = calendarOptionOverrides.buttonText || {};\n var calendarButtonText = calendarOptions.buttonText || {};\n var calendarButtonHintOverrides = calendarOptionOverrides.buttonHints || {};\n var calendarButtonHints = calendarOptions.buttonHints || {};\n var sectionSubstrs = sectionStr ? sectionStr.split(' ') : [];\n var viewsWithButtons = [];\n var hasTitle = false;\n var widgets = sectionSubstrs.map(function (buttonGroupStr) { return (buttonGroupStr.split(',').map(function (buttonName) {\n if (buttonName === 'title') {\n hasTitle = true;\n return { buttonName: buttonName };\n }\n var customButtonProps;\n var viewSpec;\n var buttonClick;\n var buttonIcon; // only one of these will be set\n var buttonText; // \"\n var buttonHint;\n // ^ for the title=\"\" attribute, for accessibility\n if ((customButtonProps = calendarCustomButtons[buttonName])) {\n buttonClick = function (ev) {\n if (customButtonProps.click) {\n customButtonProps.click.call(ev.target, ev, ev.target); // TODO: use Calendar this context?\n }\n };\n (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = customButtonProps.text);\n buttonHint = customButtonProps.hint || customButtonProps.text;\n }\n else if ((viewSpec = viewSpecs[buttonName])) {\n viewsWithButtons.push(buttonName);\n buttonClick = function () {\n calendarApi.changeView(buttonName);\n };\n (buttonText = viewSpec.buttonTextOverride) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = viewSpec.buttonTextDefault);\n var textFallback = viewSpec.buttonTextOverride ||\n viewSpec.buttonTextDefault;\n buttonHint = formatWithOrdinals(viewSpec.buttonTitleOverride ||\n viewSpec.buttonTitleDefault ||\n calendarOptions.viewHint, [textFallback, buttonName], // view-name = buttonName\n textFallback);\n }\n else if (calendarApi[buttonName]) { // a calendarApi method\n buttonClick = function () {\n calendarApi[buttonName]();\n };\n (buttonText = calendarButtonTextOverrides[buttonName]) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = calendarButtonText[buttonName]); // everything else is considered default\n if (buttonName === 'prevYear' || buttonName === 'nextYear') {\n var prevOrNext = buttonName === 'prevYear' ? 'prev' : 'next';\n buttonHint = formatWithOrdinals(calendarButtonHintOverrides[prevOrNext] ||\n calendarButtonHints[prevOrNext], [\n calendarButtonText.year || 'year',\n 'year',\n ], calendarButtonText[buttonName]);\n }\n else {\n buttonHint = function (navUnit) { return formatWithOrdinals(calendarButtonHintOverrides[buttonName] ||\n calendarButtonHints[buttonName], [\n calendarButtonText[navUnit] || navUnit,\n navUnit,\n ], calendarButtonText[buttonName]); };\n }\n }\n return { buttonName: buttonName, buttonClick: buttonClick, buttonIcon: buttonIcon, buttonText: buttonText, buttonHint: buttonHint };\n })); });\n return { widgets: widgets, viewsWithButtons: viewsWithButtons, hasTitle: hasTitle };\n}\n\nvar eventSourceDef$2 = {\n ignoreRange: true,\n parseMeta: function (refined) {\n if (Array.isArray(refined.events)) {\n return refined.events;\n }\n return null;\n },\n fetch: function (arg, success) {\n success({\n rawEvents: arg.eventSource.meta,\n });\n },\n};\nvar arrayEventSourcePlugin = createPlugin({\n eventSourceDefs: [eventSourceDef$2],\n});\n\nvar eventSourceDef$1 = {\n parseMeta: function (refined) {\n if (typeof refined.events === 'function') {\n return refined.events;\n }\n return null;\n },\n fetch: function (arg, success, failure) {\n var dateEnv = arg.context.dateEnv;\n var func = arg.eventSource.meta;\n unpromisify(func.bind(null, buildRangeApiWithTimeZone(arg.range, dateEnv)), function (rawEvents) {\n success({ rawEvents: rawEvents }); // needs an object response\n }, failure);\n },\n};\nvar funcEventSourcePlugin = createPlugin({\n eventSourceDefs: [eventSourceDef$1],\n});\n\nfunction requestJson(method, url, params, successCallback, failureCallback) {\n method = method.toUpperCase();\n var body = null;\n if (method === 'GET') {\n url = injectQueryStringParams(url, params);\n }\n else {\n body = encodeParams(params);\n }\n var xhr = new XMLHttpRequest();\n xhr.open(method, url, true);\n if (method !== 'GET') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n }\n xhr.onload = function () {\n if (xhr.status >= 200 && xhr.status < 400) {\n var parsed = false;\n var res = void 0;\n try {\n res = JSON.parse(xhr.responseText);\n parsed = true;\n }\n catch (err) {\n // will handle parsed=false\n }\n if (parsed) {\n successCallback(res, xhr);\n }\n else {\n failureCallback('Failure parsing JSON', xhr);\n }\n }\n else {\n failureCallback('Request failed', xhr);\n }\n };\n xhr.onerror = function () {\n failureCallback('Request failed', xhr);\n };\n xhr.send(body);\n}\nfunction injectQueryStringParams(url, params) {\n return url +\n (url.indexOf('?') === -1 ? '?' : '&') +\n encodeParams(params);\n}\nfunction encodeParams(params) {\n var parts = [];\n for (var key in params) {\n parts.push(encodeURIComponent(key) + \"=\" + encodeURIComponent(params[key]));\n }\n return parts.join('&');\n}\n\nvar JSON_FEED_EVENT_SOURCE_REFINERS = {\n method: String,\n extraParams: identity,\n startParam: String,\n endParam: String,\n timeZoneParam: String,\n};\n\nvar eventSourceDef = {\n parseMeta: function (refined) {\n if (refined.url && (refined.format === 'json' || !refined.format)) {\n return {\n url: refined.url,\n format: 'json',\n method: (refined.method || 'GET').toUpperCase(),\n extraParams: refined.extraParams,\n startParam: refined.startParam,\n endParam: refined.endParam,\n timeZoneParam: refined.timeZoneParam,\n };\n }\n return null;\n },\n fetch: function (arg, success, failure) {\n var meta = arg.eventSource.meta;\n var requestParams = buildRequestParams(meta, arg.range, arg.context);\n requestJson(meta.method, meta.url, requestParams, function (rawEvents, xhr) {\n success({ rawEvents: rawEvents, xhr: xhr });\n }, function (errorMessage, xhr) {\n failure({ message: errorMessage, xhr: xhr });\n });\n },\n};\nvar jsonFeedEventSourcePlugin = createPlugin({\n eventSourceRefiners: JSON_FEED_EVENT_SOURCE_REFINERS,\n eventSourceDefs: [eventSourceDef],\n});\nfunction buildRequestParams(meta, range, context) {\n var dateEnv = context.dateEnv, options = context.options;\n var startParam;\n var endParam;\n var timeZoneParam;\n var customRequestParams;\n var params = {};\n startParam = meta.startParam;\n if (startParam == null) {\n startParam = options.startParam;\n }\n endParam = meta.endParam;\n if (endParam == null) {\n endParam = options.endParam;\n }\n timeZoneParam = meta.timeZoneParam;\n if (timeZoneParam == null) {\n timeZoneParam = options.timeZoneParam;\n }\n // retrieve any outbound GET/POST data from the options\n if (typeof meta.extraParams === 'function') {\n // supplied as a function that returns a key/value object\n customRequestParams = meta.extraParams();\n }\n else {\n // probably supplied as a straight key/value object\n customRequestParams = meta.extraParams || {};\n }\n __assign(params, customRequestParams);\n params[startParam] = dateEnv.formatIso(range.start);\n params[endParam] = dateEnv.formatIso(range.end);\n if (dateEnv.timeZone !== 'local') {\n params[timeZoneParam] = dateEnv.timeZone;\n }\n return params;\n}\n\nvar SIMPLE_RECURRING_REFINERS = {\n daysOfWeek: identity,\n startTime: createDuration,\n endTime: createDuration,\n duration: createDuration,\n startRecur: identity,\n endRecur: identity,\n};\n\nvar recurring = {\n parse: function (refined, dateEnv) {\n if (refined.daysOfWeek || refined.startTime || refined.endTime || refined.startRecur || refined.endRecur) {\n var recurringData = {\n daysOfWeek: refined.daysOfWeek || null,\n startTime: refined.startTime || null,\n endTime: refined.endTime || null,\n startRecur: refined.startRecur ? dateEnv.createMarker(refined.startRecur) : null,\n endRecur: refined.endRecur ? dateEnv.createMarker(refined.endRecur) : null,\n };\n var duration = void 0;\n if (refined.duration) {\n duration = refined.duration;\n }\n if (!duration && refined.startTime && refined.endTime) {\n duration = subtractDurations(refined.endTime, refined.startTime);\n }\n return {\n allDayGuess: Boolean(!refined.startTime && !refined.endTime),\n duration: duration,\n typeData: recurringData, // doesn't need endTime anymore but oh well\n };\n }\n return null;\n },\n expand: function (typeData, framingRange, dateEnv) {\n var clippedFramingRange = intersectRanges(framingRange, { start: typeData.startRecur, end: typeData.endRecur });\n if (clippedFramingRange) {\n return expandRanges(typeData.daysOfWeek, typeData.startTime, clippedFramingRange, dateEnv);\n }\n return [];\n },\n};\nvar simpleRecurringEventsPlugin = createPlugin({\n recurringTypes: [recurring],\n eventRefiners: SIMPLE_RECURRING_REFINERS,\n});\nfunction expandRanges(daysOfWeek, startTime, framingRange, dateEnv) {\n var dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null;\n var dayMarker = startOfDay(framingRange.start);\n var endMarker = framingRange.end;\n var instanceStarts = [];\n while (dayMarker < endMarker) {\n var instanceStart \n // if everyday, or this particular day-of-week\n = void 0;\n // if everyday, or this particular day-of-week\n if (!dowHash || dowHash[dayMarker.getUTCDay()]) {\n if (startTime) {\n instanceStart = dateEnv.add(dayMarker, startTime);\n }\n else {\n instanceStart = dayMarker;\n }\n instanceStarts.push(instanceStart);\n }\n dayMarker = addDays(dayMarker, 1);\n }\n return instanceStarts;\n}\n\nvar changeHandlerPlugin = createPlugin({\n optionChangeHandlers: {\n events: function (events, context) {\n handleEventSources([events], context);\n },\n eventSources: handleEventSources,\n },\n});\n/*\nBUG: if `event` was supplied, all previously-given `eventSources` will be wiped out\n*/\nfunction handleEventSources(inputs, context) {\n var unfoundSources = hashValuesToArray(context.getCurrentData().eventSources);\n var newInputs = [];\n for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) {\n var input = inputs_1[_i];\n var inputFound = false;\n for (var i = 0; i < unfoundSources.length; i += 1) {\n if (unfoundSources[i]._raw === input) {\n unfoundSources.splice(i, 1); // delete\n inputFound = true;\n break;\n }\n }\n if (!inputFound) {\n newInputs.push(input);\n }\n }\n for (var _a = 0, unfoundSources_1 = unfoundSources; _a < unfoundSources_1.length; _a++) {\n var unfoundSource = unfoundSources_1[_a];\n context.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: unfoundSource.sourceId,\n });\n }\n for (var _b = 0, newInputs_1 = newInputs; _b < newInputs_1.length; _b++) {\n var newInput = newInputs_1[_b];\n context.calendarApi.addEventSource(newInput);\n }\n}\n\nfunction handleDateProfile(dateProfile, context) {\n context.emitter.trigger('datesSet', __assign(__assign({}, buildRangeApiWithTimeZone(dateProfile.activeRange, context.dateEnv)), { view: context.viewApi }));\n}\n\nfunction handleEventStore(eventStore, context) {\n var emitter = context.emitter;\n if (emitter.hasHandlers('eventsSet')) {\n emitter.trigger('eventsSet', buildEventApis(eventStore, context));\n }\n}\n\n/*\nthis array is exposed on the root namespace so that UMD plugins can add to it.\nsee the rollup-bundles script.\n*/\nvar globalPlugins = [\n arrayEventSourcePlugin,\n funcEventSourcePlugin,\n jsonFeedEventSourcePlugin,\n simpleRecurringEventsPlugin,\n changeHandlerPlugin,\n createPlugin({\n isLoadingFuncs: [\n function (state) { return computeEventSourcesLoading(state.eventSources); },\n ],\n contentTypeHandlers: {\n html: buildHtmlRenderer,\n domNodes: buildDomNodeRenderer,\n },\n propSetHandlers: {\n dateProfile: handleDateProfile,\n eventStore: handleEventStore,\n },\n }),\n];\nfunction buildHtmlRenderer() {\n var currentEl = null;\n var currentHtml = '';\n function render(el, html) {\n if (el !== currentEl || html !== currentHtml) {\n el.innerHTML = html;\n }\n currentEl = el;\n currentHtml = html;\n }\n function destroy() {\n currentEl.innerHTML = '';\n currentEl = null;\n currentHtml = '';\n }\n return { render: render, destroy: destroy };\n}\nfunction buildDomNodeRenderer() {\n var currentEl = null;\n var currentDomNodes = [];\n function render(el, domNodes) {\n var newDomNodes = Array.prototype.slice.call(domNodes);\n if (el !== currentEl || !isArraysEqual(currentDomNodes, newDomNodes)) {\n // append first, remove second (for scroll resetting)\n for (var _i = 0, newDomNodes_1 = newDomNodes; _i < newDomNodes_1.length; _i++) {\n var newNode = newDomNodes_1[_i];\n el.appendChild(newNode);\n }\n destroy();\n }\n currentEl = el;\n currentDomNodes = newDomNodes;\n }\n function destroy() {\n currentDomNodes.forEach(removeElement);\n currentDomNodes = [];\n currentEl = null;\n }\n return { render: render, destroy: destroy };\n}\n\nvar DelayedRunner = /** @class */ (function () {\n function DelayedRunner(drainedOption) {\n this.drainedOption = drainedOption;\n this.isRunning = false;\n this.isDirty = false;\n this.pauseDepths = {};\n this.timeoutId = 0;\n }\n DelayedRunner.prototype.request = function (delay) {\n this.isDirty = true;\n if (!this.isPaused()) {\n this.clearTimeout();\n if (delay == null) {\n this.tryDrain();\n }\n else {\n this.timeoutId = setTimeout(// NOT OPTIMAL! TODO: look at debounce\n this.tryDrain.bind(this), delay);\n }\n }\n };\n DelayedRunner.prototype.pause = function (scope) {\n if (scope === void 0) { scope = ''; }\n var pauseDepths = this.pauseDepths;\n pauseDepths[scope] = (pauseDepths[scope] || 0) + 1;\n this.clearTimeout();\n };\n DelayedRunner.prototype.resume = function (scope, force) {\n if (scope === void 0) { scope = ''; }\n var pauseDepths = this.pauseDepths;\n if (scope in pauseDepths) {\n if (force) {\n delete pauseDepths[scope];\n }\n else {\n pauseDepths[scope] -= 1;\n var depth = pauseDepths[scope];\n if (depth <= 0) {\n delete pauseDepths[scope];\n }\n }\n this.tryDrain();\n }\n };\n DelayedRunner.prototype.isPaused = function () {\n return Object.keys(this.pauseDepths).length;\n };\n DelayedRunner.prototype.tryDrain = function () {\n if (!this.isRunning && !this.isPaused()) {\n this.isRunning = true;\n while (this.isDirty) {\n this.isDirty = false;\n this.drained(); // might set isDirty to true again\n }\n this.isRunning = false;\n }\n };\n DelayedRunner.prototype.clear = function () {\n this.clearTimeout();\n this.isDirty = false;\n this.pauseDepths = {};\n };\n DelayedRunner.prototype.clearTimeout = function () {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = 0;\n }\n };\n DelayedRunner.prototype.drained = function () {\n if (this.drainedOption) {\n this.drainedOption();\n }\n };\n return DelayedRunner;\n}());\n\nvar TaskRunner = /** @class */ (function () {\n function TaskRunner(runTaskOption, drainedOption) {\n this.runTaskOption = runTaskOption;\n this.drainedOption = drainedOption;\n this.queue = [];\n this.delayedRunner = new DelayedRunner(this.drain.bind(this));\n }\n TaskRunner.prototype.request = function (task, delay) {\n this.queue.push(task);\n this.delayedRunner.request(delay);\n };\n TaskRunner.prototype.pause = function (scope) {\n this.delayedRunner.pause(scope);\n };\n TaskRunner.prototype.resume = function (scope, force) {\n this.delayedRunner.resume(scope, force);\n };\n TaskRunner.prototype.drain = function () {\n var queue = this.queue;\n while (queue.length) {\n var completedTasks = [];\n var task = void 0;\n while ((task = queue.shift())) {\n this.runTask(task);\n completedTasks.push(task);\n }\n this.drained(completedTasks);\n } // keep going, in case new tasks were added in the drained handler\n };\n TaskRunner.prototype.runTask = function (task) {\n if (this.runTaskOption) {\n this.runTaskOption(task);\n }\n };\n TaskRunner.prototype.drained = function (completedTasks) {\n if (this.drainedOption) {\n this.drainedOption(completedTasks);\n }\n };\n return TaskRunner;\n}());\n\n// Computes what the title at the top of the calendarApi should be for this view\nfunction buildTitle(dateProfile, viewOptions, dateEnv) {\n var range;\n // for views that span a large unit of time, show the proper interval, ignoring stray days before and after\n if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) {\n range = dateProfile.currentRange;\n }\n else { // for day units or smaller, use the actual day range\n range = dateProfile.activeRange;\n }\n return dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat || buildTitleFormat(dateProfile)), {\n isEndExclusive: dateProfile.isRangeAllDay,\n defaultSeparator: viewOptions.titleRangeSeparator,\n });\n}\n// Generates the format string that should be used to generate the title for the current date range.\n// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\nfunction buildTitleFormat(dateProfile) {\n var currentRangeUnit = dateProfile.currentRangeUnit;\n if (currentRangeUnit === 'year') {\n return { year: 'numeric' };\n }\n if (currentRangeUnit === 'month') {\n return { year: 'numeric', month: 'long' }; // like \"September 2014\"\n }\n var days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end);\n if (days !== null && days > 1) {\n // multi-day range. shorter, like \"Sep 9 - 10 2014\"\n return { year: 'numeric', month: 'short', day: 'numeric' };\n }\n // one day. longer, like \"September 9 2014\"\n return { year: 'numeric', month: 'long', day: 'numeric' };\n}\n\n// in future refactor, do the redux-style function(state=initial) for initial-state\n// also, whatever is happening in constructor, have it happen in action queue too\nvar CalendarDataManager = /** @class */ (function () {\n function CalendarDataManager(props) {\n var _this = this;\n this.computeOptionsData = memoize(this._computeOptionsData);\n this.computeCurrentViewData = memoize(this._computeCurrentViewData);\n this.organizeRawLocales = memoize(organizeRawLocales);\n this.buildLocale = memoize(buildLocale);\n this.buildPluginHooks = buildBuildPluginHooks();\n this.buildDateEnv = memoize(buildDateEnv);\n this.buildTheme = memoize(buildTheme);\n this.parseToolbars = memoize(parseToolbars);\n this.buildViewSpecs = memoize(buildViewSpecs);\n this.buildDateProfileGenerator = memoizeObjArg(buildDateProfileGenerator);\n this.buildViewApi = memoize(buildViewApi);\n this.buildViewUiProps = memoizeObjArg(buildViewUiProps);\n this.buildEventUiBySource = memoize(buildEventUiBySource, isPropsEqual);\n this.buildEventUiBases = memoize(buildEventUiBases);\n this.parseContextBusinessHours = memoizeObjArg(parseContextBusinessHours);\n this.buildTitle = memoize(buildTitle);\n this.emitter = new Emitter();\n this.actionRunner = new TaskRunner(this._handleAction.bind(this), this.updateData.bind(this));\n this.currentCalendarOptionsInput = {};\n this.currentCalendarOptionsRefined = {};\n this.currentViewOptionsInput = {};\n this.currentViewOptionsRefined = {};\n this.currentCalendarOptionsRefiners = {};\n this.getCurrentData = function () { return _this.data; };\n this.dispatch = function (action) {\n _this.actionRunner.request(action); // protects against recursive calls to _handleAction\n };\n this.props = props;\n this.actionRunner.pause();\n var dynamicOptionOverrides = {};\n var optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n var currentViewType = optionsData.calendarOptions.initialView || optionsData.pluginHooks.initialView;\n var currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n // wire things up\n // TODO: not DRY\n props.calendarApi.currentDataManager = this;\n this.emitter.setThisContext(props.calendarApi);\n this.emitter.setOptions(currentViewData.options);\n var currentDate = getInitialDate(optionsData.calendarOptions, optionsData.dateEnv);\n var dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n if (!rangeContainsMarker(dateProfile.activeRange, currentDate)) {\n currentDate = dateProfile.currentRange.start;\n }\n var calendarContext = {\n dateEnv: optionsData.dateEnv,\n options: optionsData.calendarOptions,\n pluginHooks: optionsData.pluginHooks,\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter: this.emitter,\n getCurrentData: this.getCurrentData,\n };\n // needs to be after setThisContext\n for (var _i = 0, _a = optionsData.pluginHooks.contextInit; _i < _a.length; _i++) {\n var callback = _a[_i];\n callback(calendarContext);\n }\n // NOT DRY\n var eventSources = initEventSources(optionsData.calendarOptions, dateProfile, calendarContext);\n var initialState = {\n dynamicOptionOverrides: dynamicOptionOverrides,\n currentViewType: currentViewType,\n currentDate: currentDate,\n dateProfile: dateProfile,\n businessHours: this.parseContextBusinessHours(calendarContext),\n eventSources: eventSources,\n eventUiBases: {},\n eventStore: createEmptyEventStore(),\n renderableEventStore: createEmptyEventStore(),\n dateSelection: null,\n eventSelection: '',\n eventDrag: null,\n eventResize: null,\n selectionConfig: this.buildViewUiProps(calendarContext).selectionConfig,\n };\n var contextAndState = __assign(__assign({}, calendarContext), initialState);\n for (var _b = 0, _c = optionsData.pluginHooks.reducers; _b < _c.length; _b++) {\n var reducer = _c[_b];\n __assign(initialState, reducer(null, null, contextAndState));\n }\n if (computeIsLoading(initialState, calendarContext)) {\n this.emitter.trigger('loading', true); // NOT DRY\n }\n this.state = initialState;\n this.updateData();\n this.actionRunner.resume();\n }\n CalendarDataManager.prototype.resetOptions = function (optionOverrides, append) {\n var props = this.props;\n props.optionOverrides = append\n ? __assign(__assign({}, props.optionOverrides), optionOverrides) : optionOverrides;\n this.actionRunner.request({\n type: 'NOTHING',\n });\n };\n CalendarDataManager.prototype._handleAction = function (action) {\n var _a = this, props = _a.props, state = _a.state, emitter = _a.emitter;\n var dynamicOptionOverrides = reduceDynamicOptionOverrides(state.dynamicOptionOverrides, action);\n var optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n var currentViewType = reduceViewType(state.currentViewType, action);\n var currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n // wire things up\n // TODO: not DRY\n props.calendarApi.currentDataManager = this;\n emitter.setThisContext(props.calendarApi);\n emitter.setOptions(currentViewData.options);\n var calendarContext = {\n dateEnv: optionsData.dateEnv,\n options: optionsData.calendarOptions,\n pluginHooks: optionsData.pluginHooks,\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter: emitter,\n getCurrentData: this.getCurrentData,\n };\n var currentDate = state.currentDate, dateProfile = state.dateProfile;\n if (this.data && this.data.dateProfileGenerator !== currentViewData.dateProfileGenerator) { // hack\n dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n }\n currentDate = reduceCurrentDate(currentDate, action);\n dateProfile = reduceDateProfile(dateProfile, action, currentDate, currentViewData.dateProfileGenerator);\n if (action.type === 'PREV' || // TODO: move this logic into DateProfileGenerator\n action.type === 'NEXT' || // \"\n !rangeContainsMarker(dateProfile.currentRange, currentDate)) {\n currentDate = dateProfile.currentRange.start;\n }\n var eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendarContext);\n var eventStore = reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendarContext);\n var isEventsLoading = computeEventSourcesLoading(eventSources); // BAD. also called in this func in computeIsLoading\n var renderableEventStore = (isEventsLoading && !currentViewData.options.progressiveEventRendering) ?\n (state.renderableEventStore || eventStore) : // try from previous state\n eventStore;\n var _b = this.buildViewUiProps(calendarContext), eventUiSingleBase = _b.eventUiSingleBase, selectionConfig = _b.selectionConfig; // will memoize obj\n var eventUiBySource = this.buildEventUiBySource(eventSources);\n var eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource);\n var newState = {\n dynamicOptionOverrides: dynamicOptionOverrides,\n currentViewType: currentViewType,\n currentDate: currentDate,\n dateProfile: dateProfile,\n eventSources: eventSources,\n eventStore: eventStore,\n renderableEventStore: renderableEventStore,\n selectionConfig: selectionConfig,\n eventUiBases: eventUiBases,\n businessHours: this.parseContextBusinessHours(calendarContext),\n dateSelection: reduceDateSelection(state.dateSelection, action),\n eventSelection: reduceSelectedEvent(state.eventSelection, action),\n eventDrag: reduceEventDrag(state.eventDrag, action),\n eventResize: reduceEventResize(state.eventResize, action),\n };\n var contextAndState = __assign(__assign({}, calendarContext), newState);\n for (var _i = 0, _c = optionsData.pluginHooks.reducers; _i < _c.length; _i++) {\n var reducer = _c[_i];\n __assign(newState, reducer(state, action, contextAndState)); // give the OLD state, for old value\n }\n var wasLoading = computeIsLoading(state, calendarContext);\n var isLoading = computeIsLoading(newState, calendarContext);\n // TODO: use propSetHandlers in plugin system\n if (!wasLoading && isLoading) {\n emitter.trigger('loading', true);\n }\n else if (wasLoading && !isLoading) {\n emitter.trigger('loading', false);\n }\n this.state = newState;\n if (props.onAction) {\n props.onAction(action);\n }\n };\n CalendarDataManager.prototype.updateData = function () {\n var _a = this, props = _a.props, state = _a.state;\n var oldData = this.data;\n var optionsData = this.computeOptionsData(props.optionOverrides, state.dynamicOptionOverrides, props.calendarApi);\n var currentViewData = this.computeCurrentViewData(state.currentViewType, optionsData, props.optionOverrides, state.dynamicOptionOverrides);\n var data = this.data = __assign(__assign(__assign({ viewTitle: this.buildTitle(state.dateProfile, currentViewData.options, optionsData.dateEnv), calendarApi: props.calendarApi, dispatch: this.dispatch, emitter: this.emitter, getCurrentData: this.getCurrentData }, optionsData), currentViewData), state);\n var changeHandlers = optionsData.pluginHooks.optionChangeHandlers;\n var oldCalendarOptions = oldData && oldData.calendarOptions;\n var newCalendarOptions = optionsData.calendarOptions;\n if (oldCalendarOptions && oldCalendarOptions !== newCalendarOptions) {\n if (oldCalendarOptions.timeZone !== newCalendarOptions.timeZone) {\n // hack\n state.eventSources = data.eventSources = reduceEventSourcesNewTimeZone(data.eventSources, state.dateProfile, data);\n state.eventStore = data.eventStore = rezoneEventStoreDates(data.eventStore, oldData.dateEnv, data.dateEnv);\n }\n for (var optionName in changeHandlers) {\n if (oldCalendarOptions[optionName] !== newCalendarOptions[optionName]) {\n changeHandlers[optionName](newCalendarOptions[optionName], data);\n }\n }\n }\n if (props.onData) {\n props.onData(data);\n }\n };\n CalendarDataManager.prototype._computeOptionsData = function (optionOverrides, dynamicOptionOverrides, calendarApi) {\n // TODO: blacklist options that are handled by optionChangeHandlers\n var _a = this.processRawCalendarOptions(optionOverrides, dynamicOptionOverrides), refinedOptions = _a.refinedOptions, pluginHooks = _a.pluginHooks, localeDefaults = _a.localeDefaults, availableLocaleData = _a.availableLocaleData, extra = _a.extra;\n warnUnknownOptions(extra);\n var dateEnv = this.buildDateEnv(refinedOptions.timeZone, refinedOptions.locale, refinedOptions.weekNumberCalculation, refinedOptions.firstDay, refinedOptions.weekText, pluginHooks, availableLocaleData, refinedOptions.defaultRangeSeparator);\n var viewSpecs = this.buildViewSpecs(pluginHooks.views, optionOverrides, dynamicOptionOverrides, localeDefaults);\n var theme = this.buildTheme(refinedOptions, pluginHooks);\n var toolbarConfig = this.parseToolbars(refinedOptions, optionOverrides, theme, viewSpecs, calendarApi);\n return {\n calendarOptions: refinedOptions,\n pluginHooks: pluginHooks,\n dateEnv: dateEnv,\n viewSpecs: viewSpecs,\n theme: theme,\n toolbarConfig: toolbarConfig,\n localeDefaults: localeDefaults,\n availableRawLocales: availableLocaleData.map,\n };\n };\n // always called from behind a memoizer\n CalendarDataManager.prototype.processRawCalendarOptions = function (optionOverrides, dynamicOptionOverrides) {\n var _a = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n optionOverrides,\n dynamicOptionOverrides,\n ]), locales = _a.locales, locale = _a.locale;\n var availableLocaleData = this.organizeRawLocales(locales);\n var availableRawLocales = availableLocaleData.map;\n var localeDefaults = this.buildLocale(locale || availableLocaleData.defaultCode, availableRawLocales).options;\n var pluginHooks = this.buildPluginHooks(optionOverrides.plugins || [], globalPlugins);\n var refiners = this.currentCalendarOptionsRefiners = __assign(__assign(__assign(__assign(__assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);\n var extra = {};\n var raw = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n localeDefaults,\n optionOverrides,\n dynamicOptionOverrides,\n ]);\n var refined = {};\n var currentRaw = this.currentCalendarOptionsInput;\n var currentRefined = this.currentCalendarOptionsRefined;\n var anyChanges = false;\n for (var optionName in raw) {\n if (optionName !== 'plugins') { // because plugins is special-cased\n if (raw[optionName] === currentRaw[optionName] ||\n (COMPLEX_OPTION_COMPARATORS[optionName] &&\n (optionName in currentRaw) &&\n COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName]))) {\n refined[optionName] = currentRefined[optionName];\n }\n else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName]);\n anyChanges = true;\n }\n else {\n extra[optionName] = currentRaw[optionName];\n }\n }\n }\n if (anyChanges) {\n this.currentCalendarOptionsInput = raw;\n this.currentCalendarOptionsRefined = refined;\n }\n return {\n rawOptions: this.currentCalendarOptionsInput,\n refinedOptions: this.currentCalendarOptionsRefined,\n pluginHooks: pluginHooks,\n availableLocaleData: availableLocaleData,\n localeDefaults: localeDefaults,\n extra: extra,\n };\n };\n CalendarDataManager.prototype._computeCurrentViewData = function (viewType, optionsData, optionOverrides, dynamicOptionOverrides) {\n var viewSpec = optionsData.viewSpecs[viewType];\n if (!viewSpec) {\n throw new Error(\"viewType \\\"\" + viewType + \"\\\" is not available. Please make sure you've loaded all neccessary plugins\");\n }\n var _a = this.processRawViewOptions(viewSpec, optionsData.pluginHooks, optionsData.localeDefaults, optionOverrides, dynamicOptionOverrides), refinedOptions = _a.refinedOptions, extra = _a.extra;\n warnUnknownOptions(extra);\n var dateProfileGenerator = this.buildDateProfileGenerator({\n dateProfileGeneratorClass: viewSpec.optionDefaults.dateProfileGeneratorClass,\n duration: viewSpec.duration,\n durationUnit: viewSpec.durationUnit,\n usesMinMaxTime: viewSpec.optionDefaults.usesMinMaxTime,\n dateEnv: optionsData.dateEnv,\n calendarApi: this.props.calendarApi,\n slotMinTime: refinedOptions.slotMinTime,\n slotMaxTime: refinedOptions.slotMaxTime,\n showNonCurrentDates: refinedOptions.showNonCurrentDates,\n dayCount: refinedOptions.dayCount,\n dateAlignment: refinedOptions.dateAlignment,\n dateIncrement: refinedOptions.dateIncrement,\n hiddenDays: refinedOptions.hiddenDays,\n weekends: refinedOptions.weekends,\n nowInput: refinedOptions.now,\n validRangeInput: refinedOptions.validRange,\n visibleRangeInput: refinedOptions.visibleRange,\n monthMode: refinedOptions.monthMode,\n fixedWeekCount: refinedOptions.fixedWeekCount,\n });\n var viewApi = this.buildViewApi(viewType, this.getCurrentData, optionsData.dateEnv);\n return { viewSpec: viewSpec, options: refinedOptions, dateProfileGenerator: dateProfileGenerator, viewApi: viewApi };\n };\n CalendarDataManager.prototype.processRawViewOptions = function (viewSpec, pluginHooks, localeDefaults, optionOverrides, dynamicOptionOverrides) {\n var raw = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n viewSpec.optionDefaults,\n localeDefaults,\n optionOverrides,\n viewSpec.optionOverrides,\n dynamicOptionOverrides,\n ]);\n var refiners = __assign(__assign(__assign(__assign(__assign(__assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), VIEW_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);\n var refined = {};\n var currentRaw = this.currentViewOptionsInput;\n var currentRefined = this.currentViewOptionsRefined;\n var anyChanges = false;\n var extra = {};\n for (var optionName in raw) {\n if (raw[optionName] === currentRaw[optionName] ||\n (COMPLEX_OPTION_COMPARATORS[optionName] &&\n COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], currentRaw[optionName]))) {\n refined[optionName] = currentRefined[optionName];\n }\n else {\n if (raw[optionName] === this.currentCalendarOptionsInput[optionName] ||\n (COMPLEX_OPTION_COMPARATORS[optionName] &&\n COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], this.currentCalendarOptionsInput[optionName]))) {\n if (optionName in this.currentCalendarOptionsRefined) { // might be an \"extra\" prop\n refined[optionName] = this.currentCalendarOptionsRefined[optionName];\n }\n }\n else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName]);\n }\n else {\n extra[optionName] = raw[optionName];\n }\n anyChanges = true;\n }\n }\n if (anyChanges) {\n this.currentViewOptionsInput = raw;\n this.currentViewOptionsRefined = refined;\n }\n return {\n rawOptions: this.currentViewOptionsInput,\n refinedOptions: this.currentViewOptionsRefined,\n extra: extra,\n };\n };\n return CalendarDataManager;\n}());\nfunction buildDateEnv(timeZone, explicitLocale, weekNumberCalculation, firstDay, weekText, pluginHooks, availableLocaleData, defaultSeparator) {\n var locale = buildLocale(explicitLocale || availableLocaleData.defaultCode, availableLocaleData.map);\n return new DateEnv({\n calendarSystem: 'gregory',\n timeZone: timeZone,\n namedTimeZoneImpl: pluginHooks.namedTimeZonedImpl,\n locale: locale,\n weekNumberCalculation: weekNumberCalculation,\n firstDay: firstDay,\n weekText: weekText,\n cmdFormatter: pluginHooks.cmdFormatter,\n defaultSeparator: defaultSeparator,\n });\n}\nfunction buildTheme(options, pluginHooks) {\n var ThemeClass = pluginHooks.themeClasses[options.themeSystem] || StandardTheme;\n return new ThemeClass(options);\n}\nfunction buildDateProfileGenerator(props) {\n var DateProfileGeneratorClass = props.dateProfileGeneratorClass || DateProfileGenerator;\n return new DateProfileGeneratorClass(props);\n}\nfunction buildViewApi(type, getCurrentData, dateEnv) {\n return new ViewApi(type, getCurrentData, dateEnv);\n}\nfunction buildEventUiBySource(eventSources) {\n return mapHash(eventSources, function (eventSource) { return eventSource.ui; });\n}\nfunction buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) {\n var eventUiBases = { '': eventUiSingleBase };\n for (var defId in eventDefs) {\n var def = eventDefs[defId];\n if (def.sourceId && eventUiBySource[def.sourceId]) {\n eventUiBases[defId] = eventUiBySource[def.sourceId];\n }\n }\n return eventUiBases;\n}\nfunction buildViewUiProps(calendarContext) {\n var options = calendarContext.options;\n return {\n eventUiSingleBase: createEventUi({\n display: options.eventDisplay,\n editable: options.editable,\n startEditable: options.eventStartEditable,\n durationEditable: options.eventDurationEditable,\n constraint: options.eventConstraint,\n overlap: typeof options.eventOverlap === 'boolean' ? options.eventOverlap : undefined,\n allow: options.eventAllow,\n backgroundColor: options.eventBackgroundColor,\n borderColor: options.eventBorderColor,\n textColor: options.eventTextColor,\n color: options.eventColor,\n // classNames: options.eventClassNames // render hook will handle this\n }, calendarContext),\n selectionConfig: createEventUi({\n constraint: options.selectConstraint,\n overlap: typeof options.selectOverlap === 'boolean' ? options.selectOverlap : undefined,\n allow: options.selectAllow,\n }, calendarContext),\n };\n}\nfunction computeIsLoading(state, context) {\n for (var _i = 0, _a = context.pluginHooks.isLoadingFuncs; _i < _a.length; _i++) {\n var isLoadingFunc = _a[_i];\n if (isLoadingFunc(state)) {\n return true;\n }\n }\n return false;\n}\nfunction parseContextBusinessHours(calendarContext) {\n return parseBusinessHours(calendarContext.options.businessHours, calendarContext);\n}\nfunction warnUnknownOptions(options, viewName) {\n for (var optionName in options) {\n console.warn(\"Unknown option '\" + optionName + \"'\" +\n (viewName ? \" for view '\" + viewName + \"'\" : ''));\n }\n}\n\n// TODO: move this to react plugin?\nvar CalendarDataProvider = /** @class */ (function (_super) {\n __extends(CalendarDataProvider, _super);\n function CalendarDataProvider(props) {\n var _this = _super.call(this, props) || this;\n _this.handleData = function (data) {\n if (!_this.dataManager) { // still within initial run, before assignment in constructor\n // eslint-disable-next-line react/no-direct-mutation-state\n _this.state = data; // can't use setState yet\n }\n else {\n _this.setState(data);\n }\n };\n _this.dataManager = new CalendarDataManager({\n optionOverrides: props.optionOverrides,\n calendarApi: props.calendarApi,\n onData: _this.handleData,\n });\n return _this;\n }\n CalendarDataProvider.prototype.render = function () {\n return this.props.children(this.state);\n };\n CalendarDataProvider.prototype.componentDidUpdate = function (prevProps) {\n var newOptionOverrides = this.props.optionOverrides;\n if (newOptionOverrides !== prevProps.optionOverrides) { // prevent recursive handleData\n this.dataManager.resetOptions(newOptionOverrides);\n }\n };\n return CalendarDataProvider;\n}(Component));\n\n// HELPERS\n/*\nif nextDayThreshold is specified, slicing is done in an all-day fashion.\nyou can get nextDayThreshold from context.nextDayThreshold\n*/\nfunction sliceEvents(props, allDay) {\n return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;\n}\n\nvar NamedTimeZoneImpl = /** @class */ (function () {\n function NamedTimeZoneImpl(timeZoneName) {\n this.timeZoneName = timeZoneName;\n }\n return NamedTimeZoneImpl;\n}());\n\nvar SegHierarchy = /** @class */ (function () {\n function SegHierarchy() {\n // settings\n this.strictOrder = false;\n this.allowReslicing = false;\n this.maxCoord = -1; // -1 means no max\n this.maxStackCnt = -1; // -1 means no max\n this.levelCoords = []; // ordered\n this.entriesByLevel = []; // parallel with levelCoords\n this.stackCnts = {}; // TODO: use better technique!?\n }\n SegHierarchy.prototype.addSegs = function (inputs) {\n var hiddenEntries = [];\n for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) {\n var input = inputs_1[_i];\n this.insertEntry(input, hiddenEntries);\n }\n return hiddenEntries;\n };\n SegHierarchy.prototype.insertEntry = function (entry, hiddenEntries) {\n var insertion = this.findInsertion(entry);\n if (this.isInsertionValid(insertion, entry)) {\n this.insertEntryAt(entry, insertion);\n return 1;\n }\n return this.handleInvalidInsertion(insertion, entry, hiddenEntries);\n };\n SegHierarchy.prototype.isInsertionValid = function (insertion, entry) {\n return (this.maxCoord === -1 || insertion.levelCoord + entry.thickness <= this.maxCoord) &&\n (this.maxStackCnt === -1 || insertion.stackCnt < this.maxStackCnt);\n };\n // returns number of new entries inserted\n SegHierarchy.prototype.handleInvalidInsertion = function (insertion, entry, hiddenEntries) {\n if (this.allowReslicing && insertion.touchingEntry) {\n return this.splitEntry(entry, insertion.touchingEntry, hiddenEntries);\n }\n hiddenEntries.push(entry);\n return 0;\n };\n SegHierarchy.prototype.splitEntry = function (entry, barrier, hiddenEntries) {\n var partCnt = 0;\n var splitHiddenEntries = [];\n var entrySpan = entry.span;\n var barrierSpan = barrier.span;\n if (entrySpan.start < barrierSpan.start) {\n partCnt += this.insertEntry({\n index: entry.index,\n thickness: entry.thickness,\n span: { start: entrySpan.start, end: barrierSpan.start },\n }, splitHiddenEntries);\n }\n if (entrySpan.end > barrierSpan.end) {\n partCnt += this.insertEntry({\n index: entry.index,\n thickness: entry.thickness,\n span: { start: barrierSpan.end, end: entrySpan.end },\n }, splitHiddenEntries);\n }\n if (partCnt) {\n hiddenEntries.push.apply(hiddenEntries, __spreadArray([{\n index: entry.index,\n thickness: entry.thickness,\n span: intersectSpans(barrierSpan, entrySpan), // guaranteed to intersect\n }], splitHiddenEntries));\n return partCnt;\n }\n hiddenEntries.push(entry);\n return 0;\n };\n SegHierarchy.prototype.insertEntryAt = function (entry, insertion) {\n var _a = this, entriesByLevel = _a.entriesByLevel, levelCoords = _a.levelCoords;\n if (insertion.lateral === -1) {\n // create a new level\n insertAt(levelCoords, insertion.level, insertion.levelCoord);\n insertAt(entriesByLevel, insertion.level, [entry]);\n }\n else {\n // insert into existing level\n insertAt(entriesByLevel[insertion.level], insertion.lateral, entry);\n }\n this.stackCnts[buildEntryKey(entry)] = insertion.stackCnt;\n };\n SegHierarchy.prototype.findInsertion = function (newEntry) {\n var _a = this, levelCoords = _a.levelCoords, entriesByLevel = _a.entriesByLevel, strictOrder = _a.strictOrder, stackCnts = _a.stackCnts;\n var levelCnt = levelCoords.length;\n var candidateCoord = 0;\n var touchingLevel = -1;\n var touchingLateral = -1;\n var touchingEntry = null;\n var stackCnt = 0;\n for (var trackingLevel = 0; trackingLevel < levelCnt; trackingLevel += 1) {\n var trackingCoord = levelCoords[trackingLevel];\n // if the current level is past the placed entry, we have found a good empty space and can stop.\n // if strictOrder, keep finding more lateral intersections.\n if (!strictOrder && trackingCoord >= candidateCoord + newEntry.thickness) {\n break;\n }\n var trackingEntries = entriesByLevel[trackingLevel];\n var trackingEntry = void 0;\n var searchRes = binarySearch(trackingEntries, newEntry.span.start, getEntrySpanEnd); // find first entry after newEntry's end\n var lateralIndex = searchRes[0] + searchRes[1]; // if exact match (which doesn't collide), go to next one\n while ( // loop through entries that horizontally intersect\n (trackingEntry = trackingEntries[lateralIndex]) && // but not past the whole entry list\n trackingEntry.span.start < newEntry.span.end // and not entirely past newEntry\n ) {\n var trackingEntryBottom = trackingCoord + trackingEntry.thickness;\n // intersects into the top of the candidate?\n if (trackingEntryBottom > candidateCoord) {\n candidateCoord = trackingEntryBottom;\n touchingEntry = trackingEntry;\n touchingLevel = trackingLevel;\n touchingLateral = lateralIndex;\n }\n // butts up against top of candidate? (will happen if just intersected as well)\n if (trackingEntryBottom === candidateCoord) {\n // accumulate the highest possible stackCnt of the trackingEntries that butt up\n stackCnt = Math.max(stackCnt, stackCnts[buildEntryKey(trackingEntry)] + 1);\n }\n lateralIndex += 1;\n }\n }\n // the destination level will be after touchingEntry's level. find it\n var destLevel = 0;\n if (touchingEntry) {\n destLevel = touchingLevel + 1;\n while (destLevel < levelCnt && levelCoords[destLevel] < candidateCoord) {\n destLevel += 1;\n }\n }\n // if adding to an existing level, find where to insert\n var destLateral = -1;\n if (destLevel < levelCnt && levelCoords[destLevel] === candidateCoord) {\n destLateral = binarySearch(entriesByLevel[destLevel], newEntry.span.end, getEntrySpanEnd)[0];\n }\n return {\n touchingLevel: touchingLevel,\n touchingLateral: touchingLateral,\n touchingEntry: touchingEntry,\n stackCnt: stackCnt,\n levelCoord: candidateCoord,\n level: destLevel,\n lateral: destLateral,\n };\n };\n // sorted by levelCoord (lowest to highest)\n SegHierarchy.prototype.toRects = function () {\n var _a = this, entriesByLevel = _a.entriesByLevel, levelCoords = _a.levelCoords;\n var levelCnt = entriesByLevel.length;\n var rects = [];\n for (var level = 0; level < levelCnt; level += 1) {\n var entries = entriesByLevel[level];\n var levelCoord = levelCoords[level];\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n rects.push(__assign(__assign({}, entry), { levelCoord: levelCoord }));\n }\n }\n return rects;\n };\n return SegHierarchy;\n}());\nfunction getEntrySpanEnd(entry) {\n return entry.span.end;\n}\nfunction buildEntryKey(entry) {\n return entry.index + ':' + entry.span.start;\n}\n// returns groups with entries sorted by input order\nfunction groupIntersectingEntries(entries) {\n var merges = [];\n for (var _i = 0, entries_2 = entries; _i < entries_2.length; _i++) {\n var entry = entries_2[_i];\n var filteredMerges = [];\n var hungryMerge = {\n span: entry.span,\n entries: [entry],\n };\n for (var _a = 0, merges_1 = merges; _a < merges_1.length; _a++) {\n var merge = merges_1[_a];\n if (intersectSpans(merge.span, hungryMerge.span)) {\n hungryMerge = {\n entries: merge.entries.concat(hungryMerge.entries),\n span: joinSpans(merge.span, hungryMerge.span),\n };\n }\n else {\n filteredMerges.push(merge);\n }\n }\n filteredMerges.push(hungryMerge);\n merges = filteredMerges;\n }\n return merges;\n}\nfunction joinSpans(span0, span1) {\n return {\n start: Math.min(span0.start, span1.start),\n end: Math.max(span0.end, span1.end),\n };\n}\nfunction intersectSpans(span0, span1) {\n var start = Math.max(span0.start, span1.start);\n var end = Math.min(span0.end, span1.end);\n if (start < end) {\n return { start: start, end: end };\n }\n return null;\n}\n// general util\n// ---------------------------------------------------------------------------------------------------------------------\nfunction insertAt(arr, index, item) {\n arr.splice(index, 0, item);\n}\nfunction binarySearch(a, searchVal, getItemVal) {\n var startIndex = 0;\n var endIndex = a.length; // exclusive\n if (!endIndex || searchVal < getItemVal(a[startIndex])) { // no items OR before first item\n return [0, 0];\n }\n if (searchVal > getItemVal(a[endIndex - 1])) { // after last item\n return [endIndex, 0];\n }\n while (startIndex < endIndex) {\n var middleIndex = Math.floor(startIndex + (endIndex - startIndex) / 2);\n var middleVal = getItemVal(a[middleIndex]);\n if (searchVal < middleVal) {\n endIndex = middleIndex;\n }\n else if (searchVal > middleVal) {\n startIndex = middleIndex + 1;\n }\n else { // equal!\n return [middleIndex, 1];\n }\n }\n return [startIndex, 0];\n}\n\nvar Interaction = /** @class */ (function () {\n function Interaction(settings) {\n this.component = settings.component;\n this.isHitComboAllowed = settings.isHitComboAllowed || null;\n }\n Interaction.prototype.destroy = function () {\n };\n return Interaction;\n}());\nfunction parseInteractionSettings(component, input) {\n return {\n component: component,\n el: input.el,\n useEventCenter: input.useEventCenter != null ? input.useEventCenter : true,\n isHitComboAllowed: input.isHitComboAllowed || null,\n };\n}\nfunction interactionSettingsToStore(settings) {\n var _a;\n return _a = {},\n _a[settings.component.uid] = settings,\n _a;\n}\n// global state\nvar interactionSettingsStore = {};\n\n/*\nAn abstraction for a dragging interaction originating on an event.\nDoes higher-level things than PointerDragger, such as possibly:\n- a \"mirror\" that moves with the pointer\n- a minimum number of pixels or other criteria for a true drag to begin\n\nsubclasses must emit:\n- pointerdown\n- dragstart\n- dragmove\n- pointerup\n- dragend\n*/\nvar ElementDragging = /** @class */ (function () {\n function ElementDragging(el, selector) {\n this.emitter = new Emitter();\n }\n ElementDragging.prototype.destroy = function () {\n };\n ElementDragging.prototype.setMirrorIsVisible = function (bool) {\n // optional if subclass doesn't want to support a mirror\n };\n ElementDragging.prototype.setMirrorNeedsRevert = function (bool) {\n // optional if subclass doesn't want to support a mirror\n };\n ElementDragging.prototype.setAutoScrollEnabled = function (bool) {\n // optional\n };\n return ElementDragging;\n}());\n\n// TODO: get rid of this in favor of options system,\n// tho it's really easy to access this globally rather than pass thru options.\nvar config = {};\n\n/*\nInformation about what will happen when an external element is dragged-and-dropped\nonto a calendar. Contains information for creating an event.\n*/\nvar DRAG_META_REFINERS = {\n startTime: createDuration,\n duration: createDuration,\n create: Boolean,\n sourceId: String,\n};\nfunction parseDragMeta(raw) {\n var _a = refineProps(raw, DRAG_META_REFINERS), refined = _a.refined, extra = _a.extra;\n return {\n startTime: refined.startTime || null,\n duration: refined.duration || null,\n create: refined.create != null ? refined.create : true,\n sourceId: refined.sourceId,\n leftoverProps: extra,\n };\n}\n\nvar ToolbarSection = /** @class */ (function (_super) {\n __extends(ToolbarSection, _super);\n function ToolbarSection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ToolbarSection.prototype.render = function () {\n var _this = this;\n var children = this.props.widgetGroups.map(function (widgetGroup) { return _this.renderWidgetGroup(widgetGroup); });\n return createElement.apply(void 0, __spreadArray(['div', { className: 'fc-toolbar-chunk' }], children));\n };\n ToolbarSection.prototype.renderWidgetGroup = function (widgetGroup) {\n var props = this.props;\n var theme = this.context.theme;\n var children = [];\n var isOnlyButtons = true;\n for (var _i = 0, widgetGroup_1 = widgetGroup; _i < widgetGroup_1.length; _i++) {\n var widget = widgetGroup_1[_i];\n var buttonName = widget.buttonName, buttonClick = widget.buttonClick, buttonText = widget.buttonText, buttonIcon = widget.buttonIcon, buttonHint = widget.buttonHint;\n if (buttonName === 'title') {\n isOnlyButtons = false;\n children.push(createElement(\"h2\", { className: \"fc-toolbar-title\", id: props.titleId }, props.title));\n }\n else {\n var isPressed = buttonName === props.activeButton;\n var isDisabled = (!props.isTodayEnabled && buttonName === 'today') ||\n (!props.isPrevEnabled && buttonName === 'prev') ||\n (!props.isNextEnabled && buttonName === 'next');\n var buttonClasses = [\"fc-\" + buttonName + \"-button\", theme.getClass('button')];\n if (isPressed) {\n buttonClasses.push(theme.getClass('buttonActive'));\n }\n children.push(createElement(\"button\", { type: \"button\", title: typeof buttonHint === 'function' ? buttonHint(props.navUnit) : buttonHint, disabled: isDisabled, \"aria-pressed\": isPressed, className: buttonClasses.join(' '), onClick: buttonClick }, buttonText || (buttonIcon ? createElement(\"span\", { className: buttonIcon }) : '')));\n }\n }\n if (children.length > 1) {\n var groupClassName = (isOnlyButtons && theme.getClass('buttonGroup')) || '';\n return createElement.apply(void 0, __spreadArray(['div', { className: groupClassName }], children));\n }\n return children[0];\n };\n return ToolbarSection;\n}(BaseComponent));\n\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n function Toolbar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Toolbar.prototype.render = function () {\n var _a = this.props, model = _a.model, extraClassName = _a.extraClassName;\n var forceLtr = false;\n var startContent;\n var endContent;\n var sectionWidgets = model.sectionWidgets;\n var centerContent = sectionWidgets.center;\n if (sectionWidgets.left) {\n forceLtr = true;\n startContent = sectionWidgets.left;\n }\n else {\n startContent = sectionWidgets.start;\n }\n if (sectionWidgets.right) {\n forceLtr = true;\n endContent = sectionWidgets.right;\n }\n else {\n endContent = sectionWidgets.end;\n }\n var classNames = [\n extraClassName || '',\n 'fc-toolbar',\n forceLtr ? 'fc-toolbar-ltr' : '',\n ];\n return (createElement(\"div\", { className: classNames.join(' ') },\n this.renderSection('start', startContent || []),\n this.renderSection('center', centerContent || []),\n this.renderSection('end', endContent || [])));\n };\n Toolbar.prototype.renderSection = function (key, widgetGroups) {\n var props = this.props;\n return (createElement(ToolbarSection, { key: key, widgetGroups: widgetGroups, title: props.title, navUnit: props.navUnit, activeButton: props.activeButton, isTodayEnabled: props.isTodayEnabled, isPrevEnabled: props.isPrevEnabled, isNextEnabled: props.isNextEnabled, titleId: props.titleId }));\n };\n return Toolbar;\n}(BaseComponent));\n\n// TODO: do function component?\nvar ViewContainer = /** @class */ (function (_super) {\n __extends(ViewContainer, _super);\n function ViewContainer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n availableWidth: null,\n };\n _this.handleEl = function (el) {\n _this.el = el;\n setRef(_this.props.elRef, el);\n _this.updateAvailableWidth();\n };\n _this.handleResize = function () {\n _this.updateAvailableWidth();\n };\n return _this;\n }\n ViewContainer.prototype.render = function () {\n var _a = this, props = _a.props, state = _a.state;\n var aspectRatio = props.aspectRatio;\n var classNames = [\n 'fc-view-harness',\n (aspectRatio || props.liquid || props.height)\n ? 'fc-view-harness-active' // harness controls the height\n : 'fc-view-harness-passive', // let the view do the height\n ];\n var height = '';\n var paddingBottom = '';\n if (aspectRatio) {\n if (state.availableWidth !== null) {\n height = state.availableWidth / aspectRatio;\n }\n else {\n // while waiting to know availableWidth, we can't set height to *zero*\n // because will cause lots of unnecessary scrollbars within scrollgrid.\n // BETTER: don't start rendering ANYTHING yet until we know container width\n // NOTE: why not always use paddingBottom? Causes height oscillation (issue 5606)\n paddingBottom = (1 / aspectRatio) * 100 + \"%\";\n }\n }\n else {\n height = props.height || '';\n }\n return (createElement(\"div\", { \"aria-labelledby\": props.labeledById, ref: this.handleEl, className: classNames.join(' '), style: { height: height, paddingBottom: paddingBottom } }, props.children));\n };\n ViewContainer.prototype.componentDidMount = function () {\n this.context.addResizeHandler(this.handleResize);\n };\n ViewContainer.prototype.componentWillUnmount = function () {\n this.context.removeResizeHandler(this.handleResize);\n };\n ViewContainer.prototype.updateAvailableWidth = function () {\n if (this.el && // needed. but why?\n this.props.aspectRatio // aspectRatio is the only height setting that needs availableWidth\n ) {\n this.setState({ availableWidth: this.el.offsetWidth });\n }\n };\n return ViewContainer;\n}(BaseComponent));\n\n/*\nDetects when the user clicks on an event within a DateComponent\n*/\nvar EventClicking = /** @class */ (function (_super) {\n __extends(EventClicking, _super);\n function EventClicking(settings) {\n var _this = _super.call(this, settings) || this;\n _this.handleSegClick = function (ev, segEl) {\n var component = _this.component;\n var context = component.context;\n var seg = getElSeg(segEl);\n if (seg && // might be the
surrounding the more link\n component.isValidSegDownEl(ev.target)) {\n // our way to simulate a link click for elements that can't be tags\n // grab before trigger fired in case trigger trashes DOM thru rerendering\n var hasUrlContainer = elementClosest(ev.target, '.fc-event-forced-url');\n var url = hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href : '';\n context.emitter.trigger('eventClick', {\n el: segEl,\n event: new EventApi(component.context, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: context.viewApi,\n });\n if (url && !ev.defaultPrevented) {\n window.location.href = url;\n }\n }\n };\n _this.destroy = listenBySelector(settings.el, 'click', '.fc-event', // on both fg and bg events\n _this.handleSegClick);\n return _this;\n }\n return EventClicking;\n}(Interaction));\n\n/*\nTriggers events and adds/removes core classNames when the user's pointer\nenters/leaves event-elements of a component.\n*/\nvar EventHovering = /** @class */ (function (_super) {\n __extends(EventHovering, _super);\n function EventHovering(settings) {\n var _this = _super.call(this, settings) || this;\n // for simulating an eventMouseLeave when the event el is destroyed while mouse is over it\n _this.handleEventElRemove = function (el) {\n if (el === _this.currentSegEl) {\n _this.handleSegLeave(null, _this.currentSegEl);\n }\n };\n _this.handleSegEnter = function (ev, segEl) {\n if (getElSeg(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper\n _this.currentSegEl = segEl;\n _this.triggerEvent('eventMouseEnter', ev, segEl);\n }\n };\n _this.handleSegLeave = function (ev, segEl) {\n if (_this.currentSegEl) {\n _this.currentSegEl = null;\n _this.triggerEvent('eventMouseLeave', ev, segEl);\n }\n };\n _this.removeHoverListeners = listenToHoverBySelector(settings.el, '.fc-event', // on both fg and bg events\n _this.handleSegEnter, _this.handleSegLeave);\n return _this;\n }\n EventHovering.prototype.destroy = function () {\n this.removeHoverListeners();\n };\n EventHovering.prototype.triggerEvent = function (publicEvName, ev, segEl) {\n var component = this.component;\n var context = component.context;\n var seg = getElSeg(segEl);\n if (!ev || component.isValidSegDownEl(ev.target)) {\n context.emitter.trigger(publicEvName, {\n el: segEl,\n event: new EventApi(context, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: context.viewApi,\n });\n }\n };\n return EventHovering;\n}(Interaction));\n\nvar CalendarContent = /** @class */ (function (_super) {\n __extends(CalendarContent, _super);\n function CalendarContent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.buildViewContext = memoize(buildViewContext);\n _this.buildViewPropTransformers = memoize(buildViewPropTransformers);\n _this.buildToolbarProps = memoize(buildToolbarProps);\n _this.headerRef = createRef();\n _this.footerRef = createRef();\n _this.interactionsStore = {};\n // eslint-disable-next-line\n _this.state = {\n viewLabelId: getUniqueDomId(),\n };\n // Component Registration\n // -----------------------------------------------------------------------------------------------------------------\n _this.registerInteractiveComponent = function (component, settingsInput) {\n var settings = parseInteractionSettings(component, settingsInput);\n var DEFAULT_INTERACTIONS = [\n EventClicking,\n EventHovering,\n ];\n var interactionClasses = DEFAULT_INTERACTIONS.concat(_this.props.pluginHooks.componentInteractions);\n var interactions = interactionClasses.map(function (TheInteractionClass) { return new TheInteractionClass(settings); });\n _this.interactionsStore[component.uid] = interactions;\n interactionSettingsStore[component.uid] = settings;\n };\n _this.unregisterInteractiveComponent = function (component) {\n var listeners = _this.interactionsStore[component.uid];\n if (listeners) {\n for (var _i = 0, listeners_1 = listeners; _i < listeners_1.length; _i++) {\n var listener = listeners_1[_i];\n listener.destroy();\n }\n delete _this.interactionsStore[component.uid];\n }\n delete interactionSettingsStore[component.uid];\n };\n // Resizing\n // -----------------------------------------------------------------------------------------------------------------\n _this.resizeRunner = new DelayedRunner(function () {\n _this.props.emitter.trigger('_resize', true); // should window resizes be considered \"forced\" ?\n _this.props.emitter.trigger('windowResize', { view: _this.props.viewApi });\n });\n _this.handleWindowResize = function (ev) {\n var options = _this.props.options;\n if (options.handleWindowResize &&\n ev.target === window // avoid jqui events\n ) {\n _this.resizeRunner.request(options.windowResizeDelay);\n }\n };\n return _this;\n }\n /*\n renders INSIDE of an outer div\n */\n CalendarContent.prototype.render = function () {\n var props = this.props;\n var toolbarConfig = props.toolbarConfig, options = props.options;\n var toolbarProps = this.buildToolbarProps(props.viewSpec, props.dateProfile, props.dateProfileGenerator, props.currentDate, getNow(props.options.now, props.dateEnv), // TODO: use NowTimer????\n props.viewTitle);\n var viewVGrow = false;\n var viewHeight = '';\n var viewAspectRatio;\n if (props.isHeightAuto || props.forPrint) {\n viewHeight = '';\n }\n else if (options.height != null) {\n viewVGrow = true;\n }\n else if (options.contentHeight != null) {\n viewHeight = options.contentHeight;\n }\n else {\n viewAspectRatio = Math.max(options.aspectRatio, 0.5); // prevent from getting too tall\n }\n var viewContext = this.buildViewContext(props.viewSpec, props.viewApi, props.options, props.dateProfileGenerator, props.dateEnv, props.theme, props.pluginHooks, props.dispatch, props.getCurrentData, props.emitter, props.calendarApi, this.registerInteractiveComponent, this.unregisterInteractiveComponent);\n var viewLabelId = (toolbarConfig.header && toolbarConfig.header.hasTitle)\n ? this.state.viewLabelId\n : '';\n return (createElement(ViewContextType.Provider, { value: viewContext },\n toolbarConfig.header && (createElement(Toolbar, __assign({ ref: this.headerRef, extraClassName: \"fc-header-toolbar\", model: toolbarConfig.header, titleId: viewLabelId }, toolbarProps))),\n createElement(ViewContainer, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, labeledById: viewLabelId },\n this.renderView(props),\n this.buildAppendContent()),\n toolbarConfig.footer && (createElement(Toolbar, __assign({ ref: this.footerRef, extraClassName: \"fc-footer-toolbar\", model: toolbarConfig.footer, titleId: \"\" }, toolbarProps)))));\n };\n CalendarContent.prototype.componentDidMount = function () {\n var props = this.props;\n this.calendarInteractions = props.pluginHooks.calendarInteractions\n .map(function (CalendarInteractionClass) { return new CalendarInteractionClass(props); });\n window.addEventListener('resize', this.handleWindowResize);\n var propSetHandlers = props.pluginHooks.propSetHandlers;\n for (var propName in propSetHandlers) {\n propSetHandlers[propName](props[propName], props);\n }\n };\n CalendarContent.prototype.componentDidUpdate = function (prevProps) {\n var props = this.props;\n var propSetHandlers = props.pluginHooks.propSetHandlers;\n for (var propName in propSetHandlers) {\n if (props[propName] !== prevProps[propName]) {\n propSetHandlers[propName](props[propName], props);\n }\n }\n };\n CalendarContent.prototype.componentWillUnmount = function () {\n window.removeEventListener('resize', this.handleWindowResize);\n this.resizeRunner.clear();\n for (var _i = 0, _a = this.calendarInteractions; _i < _a.length; _i++) {\n var interaction = _a[_i];\n interaction.destroy();\n }\n this.props.emitter.trigger('_unmount');\n };\n CalendarContent.prototype.buildAppendContent = function () {\n var props = this.props;\n var children = props.pluginHooks.viewContainerAppends.map(function (buildAppendContent) { return buildAppendContent(props); });\n return createElement.apply(void 0, __spreadArray([Fragment, {}], children));\n };\n CalendarContent.prototype.renderView = function (props) {\n var pluginHooks = props.pluginHooks;\n var viewSpec = props.viewSpec;\n var viewProps = {\n dateProfile: props.dateProfile,\n businessHours: props.businessHours,\n eventStore: props.renderableEventStore,\n eventUiBases: props.eventUiBases,\n dateSelection: props.dateSelection,\n eventSelection: props.eventSelection,\n eventDrag: props.eventDrag,\n eventResize: props.eventResize,\n isHeightAuto: props.isHeightAuto,\n forPrint: props.forPrint,\n };\n var transformers = this.buildViewPropTransformers(pluginHooks.viewPropsTransformers);\n for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) {\n var transformer = transformers_1[_i];\n __assign(viewProps, transformer.transform(viewProps, props));\n }\n var ViewComponent = viewSpec.component;\n return (createElement(ViewComponent, __assign({}, viewProps)));\n };\n return CalendarContent;\n}(PureComponent));\nfunction buildToolbarProps(viewSpec, dateProfile, dateProfileGenerator, currentDate, now, title) {\n // don't force any date-profiles to valid date profiles (the `false`) so that we can tell if it's invalid\n var todayInfo = dateProfileGenerator.build(now, undefined, false); // TODO: need `undefined` or else INFINITE LOOP for some reason\n var prevInfo = dateProfileGenerator.buildPrev(dateProfile, currentDate, false);\n var nextInfo = dateProfileGenerator.buildNext(dateProfile, currentDate, false);\n return {\n title: title,\n activeButton: viewSpec.type,\n navUnit: viewSpec.singleUnit,\n isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now),\n isPrevEnabled: prevInfo.isValid,\n isNextEnabled: nextInfo.isValid,\n };\n}\n// Plugin\n// -----------------------------------------------------------------------------------------------------------------\nfunction buildViewPropTransformers(theClasses) {\n return theClasses.map(function (TheClass) { return new TheClass(); });\n}\n\nvar CalendarRoot = /** @class */ (function (_super) {\n __extends(CalendarRoot, _super);\n function CalendarRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n forPrint: false,\n };\n _this.handleBeforePrint = function () {\n _this.setState({ forPrint: true });\n };\n _this.handleAfterPrint = function () {\n _this.setState({ forPrint: false });\n };\n return _this;\n }\n CalendarRoot.prototype.render = function () {\n var props = this.props;\n var options = props.options;\n var forPrint = this.state.forPrint;\n var isHeightAuto = forPrint || options.height === 'auto' || options.contentHeight === 'auto';\n var height = (!isHeightAuto && options.height != null) ? options.height : '';\n var classNames = [\n 'fc',\n forPrint ? 'fc-media-print' : 'fc-media-screen',\n \"fc-direction-\" + options.direction,\n props.theme.getClass('root'),\n ];\n if (!getCanVGrowWithinCell()) {\n classNames.push('fc-liquid-hack');\n }\n return props.children(classNames, height, isHeightAuto, forPrint);\n };\n CalendarRoot.prototype.componentDidMount = function () {\n var emitter = this.props.emitter;\n emitter.on('_beforeprint', this.handleBeforePrint);\n emitter.on('_afterprint', this.handleAfterPrint);\n };\n CalendarRoot.prototype.componentWillUnmount = function () {\n var emitter = this.props.emitter;\n emitter.off('_beforeprint', this.handleBeforePrint);\n emitter.off('_afterprint', this.handleAfterPrint);\n };\n return CalendarRoot;\n}(BaseComponent));\n\n// Computes a default column header formatting string if `colFormat` is not explicitly defined\nfunction computeFallbackHeaderFormat(datesRepDistinctDays, dayCnt) {\n // if more than one week row, or if there are a lot of columns with not much space,\n // put just the day numbers will be in each cell\n if (!datesRepDistinctDays || dayCnt > 10) {\n return createFormatter({ weekday: 'short' }); // \"Sat\"\n }\n if (dayCnt > 1) {\n return createFormatter({ weekday: 'short', month: 'numeric', day: 'numeric', omitCommas: true }); // \"Sat 11/12\"\n }\n return createFormatter({ weekday: 'long' }); // \"Saturday\"\n}\n\nvar CLASS_NAME = 'fc-col-header-cell'; // do the cushion too? no\nfunction renderInner$1(hookProps) {\n return hookProps.text;\n}\n\nvar TableDateCell = /** @class */ (function (_super) {\n __extends(TableDateCell, _super);\n function TableDateCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TableDateCell.prototype.render = function () {\n var _a = this.context, dateEnv = _a.dateEnv, options = _a.options, theme = _a.theme, viewApi = _a.viewApi;\n var props = this.props;\n var date = props.date, dateProfile = props.dateProfile;\n var dayMeta = getDateMeta(date, props.todayRange, null, dateProfile);\n var classNames = [CLASS_NAME].concat(getDayClassNames(dayMeta, theme));\n var text = dateEnv.format(date, props.dayHeaderFormat);\n // if colCnt is 1, we are already in a day-view and don't need a navlink\n var navLinkAttrs = (!dayMeta.isDisabled && props.colCnt > 1)\n ? buildNavLinkAttrs(this.context, date)\n : {};\n var hookProps = __assign(__assign(__assign({ date: dateEnv.toDate(date), view: viewApi }, props.extraHookProps), { text: text }), dayMeta);\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.dayHeaderClassNames, content: options.dayHeaderContent, defaultContent: renderInner$1, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return (createElement(\"th\", __assign({ ref: rootElRef, role: \"columnheader\", className: classNames.concat(customClassNames).join(' '), \"data-date\": !dayMeta.isDisabled ? formatDayString(date) : undefined, colSpan: props.colSpan }, props.extraDataAttrs),\n createElement(\"div\", { className: \"fc-scrollgrid-sync-inner\" }, !dayMeta.isDisabled && (createElement(\"a\", __assign({ ref: innerElRef, className: [\n 'fc-col-header-cell-cushion',\n props.isSticky ? 'fc-sticky' : '',\n ].join(' ') }, navLinkAttrs), innerContent))))); }));\n };\n return TableDateCell;\n}(BaseComponent));\n\nvar WEEKDAY_FORMAT = createFormatter({ weekday: 'long' });\nvar TableDowCell = /** @class */ (function (_super) {\n __extends(TableDowCell, _super);\n function TableDowCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TableDowCell.prototype.render = function () {\n var props = this.props;\n var _a = this.context, dateEnv = _a.dateEnv, theme = _a.theme, viewApi = _a.viewApi, options = _a.options;\n var date = addDays(new Date(259200000), props.dow); // start with Sun, 04 Jan 1970 00:00:00 GMT\n var dateMeta = {\n dow: props.dow,\n isDisabled: false,\n isFuture: false,\n isPast: false,\n isToday: false,\n isOther: false,\n };\n var classNames = [CLASS_NAME].concat(getDayClassNames(dateMeta, theme), props.extraClassNames || []);\n var text = dateEnv.format(date, props.dayHeaderFormat);\n var hookProps = __assign(__assign(__assign(__assign({ // TODO: make this public?\n date: date }, dateMeta), { view: viewApi }), props.extraHookProps), { text: text });\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.dayHeaderClassNames, content: options.dayHeaderContent, defaultContent: renderInner$1, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return (createElement(\"th\", __assign({ ref: rootElRef, role: \"columnheader\", className: classNames.concat(customClassNames).join(' '), colSpan: props.colSpan }, props.extraDataAttrs),\n createElement(\"div\", { className: \"fc-scrollgrid-sync-inner\" },\n createElement(\"a\", { \"aria-label\": dateEnv.format(date, WEEKDAY_FORMAT), className: [\n 'fc-col-header-cell-cushion',\n props.isSticky ? 'fc-sticky' : '',\n ].join(' '), ref: innerElRef }, innerContent)))); }));\n };\n return TableDowCell;\n}(BaseComponent));\n\nvar NowTimer = /** @class */ (function (_super) {\n __extends(NowTimer, _super);\n function NowTimer(props, context) {\n var _this = _super.call(this, props, context) || this;\n _this.initialNowDate = getNow(context.options.now, context.dateEnv);\n _this.initialNowQueriedMs = new Date().valueOf();\n _this.state = _this.computeTiming().currentState;\n return _this;\n }\n NowTimer.prototype.render = function () {\n var _a = this, props = _a.props, state = _a.state;\n return props.children(state.nowDate, state.todayRange);\n };\n NowTimer.prototype.componentDidMount = function () {\n this.setTimeout();\n };\n NowTimer.prototype.componentDidUpdate = function (prevProps) {\n if (prevProps.unit !== this.props.unit) {\n this.clearTimeout();\n this.setTimeout();\n }\n };\n NowTimer.prototype.componentWillUnmount = function () {\n this.clearTimeout();\n };\n NowTimer.prototype.computeTiming = function () {\n var _a = this, props = _a.props, context = _a.context;\n var unroundedNow = addMs(this.initialNowDate, new Date().valueOf() - this.initialNowQueriedMs);\n var currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit);\n var nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit));\n var waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf();\n // there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342)\n // ensure no longer than a day\n waitMs = Math.min(1000 * 60 * 60 * 24, waitMs);\n return {\n currentState: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) },\n nextState: { nowDate: nextUnitStart, todayRange: buildDayRange(nextUnitStart) },\n waitMs: waitMs,\n };\n };\n NowTimer.prototype.setTimeout = function () {\n var _this = this;\n var _a = this.computeTiming(), nextState = _a.nextState, waitMs = _a.waitMs;\n this.timeoutId = setTimeout(function () {\n _this.setState(nextState, function () {\n _this.setTimeout();\n });\n }, waitMs);\n };\n NowTimer.prototype.clearTimeout = function () {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n }\n };\n NowTimer.contextType = ViewContextType;\n return NowTimer;\n}(Component));\nfunction buildDayRange(date) {\n var start = startOfDay(date);\n var end = addDays(start, 1);\n return { start: start, end: end };\n}\n\nvar DayHeader = /** @class */ (function (_super) {\n __extends(DayHeader, _super);\n function DayHeader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.createDayHeaderFormatter = memoize(createDayHeaderFormatter);\n return _this;\n }\n DayHeader.prototype.render = function () {\n var context = this.context;\n var _a = this.props, dates = _a.dates, dateProfile = _a.dateProfile, datesRepDistinctDays = _a.datesRepDistinctDays, renderIntro = _a.renderIntro;\n var dayHeaderFormat = this.createDayHeaderFormatter(context.options.dayHeaderFormat, datesRepDistinctDays, dates.length);\n return (createElement(NowTimer, { unit: \"day\" }, function (nowDate, todayRange) { return (createElement(\"tr\", { role: \"row\" },\n renderIntro && renderIntro('day'),\n dates.map(function (date) { return (datesRepDistinctDays ? (createElement(TableDateCell, { key: date.toISOString(), date: date, dateProfile: dateProfile, todayRange: todayRange, colCnt: dates.length, dayHeaderFormat: dayHeaderFormat })) : (createElement(TableDowCell, { key: date.getUTCDay(), dow: date.getUTCDay(), dayHeaderFormat: dayHeaderFormat }))); }))); }));\n };\n return DayHeader;\n}(BaseComponent));\nfunction createDayHeaderFormatter(explicitFormat, datesRepDistinctDays, dateCnt) {\n return explicitFormat || computeFallbackHeaderFormat(datesRepDistinctDays, dateCnt);\n}\n\nvar DaySeriesModel = /** @class */ (function () {\n function DaySeriesModel(range, dateProfileGenerator) {\n var date = range.start;\n var end = range.end;\n var indices = [];\n var dates = [];\n var dayIndex = -1;\n while (date < end) { // loop each day from start to end\n if (dateProfileGenerator.isHiddenDay(date)) {\n indices.push(dayIndex + 0.5); // mark that it's between indices\n }\n else {\n dayIndex += 1;\n indices.push(dayIndex);\n dates.push(date);\n }\n date = addDays(date, 1);\n }\n this.dates = dates;\n this.indices = indices;\n this.cnt = dates.length;\n }\n DaySeriesModel.prototype.sliceRange = function (range) {\n var firstIndex = this.getDateDayIndex(range.start); // inclusive first index\n var lastIndex = this.getDateDayIndex(addDays(range.end, -1)); // inclusive last index\n var clippedFirstIndex = Math.max(0, firstIndex);\n var clippedLastIndex = Math.min(this.cnt - 1, lastIndex);\n // deal with in-between indices\n clippedFirstIndex = Math.ceil(clippedFirstIndex); // in-between starts round to next cell\n clippedLastIndex = Math.floor(clippedLastIndex); // in-between ends round to prev cell\n if (clippedFirstIndex <= clippedLastIndex) {\n return {\n firstIndex: clippedFirstIndex,\n lastIndex: clippedLastIndex,\n isStart: firstIndex === clippedFirstIndex,\n isEnd: lastIndex === clippedLastIndex,\n };\n }\n return null;\n };\n // Given a date, returns its chronolocial cell-index from the first cell of the grid.\n // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.\n // If before the first offset, returns a negative number.\n // If after the last offset, returns an offset past the last cell offset.\n // Only works for *start* dates of cells. Will not work for exclusive end dates for cells.\n DaySeriesModel.prototype.getDateDayIndex = function (date) {\n var indices = this.indices;\n var dayOffset = Math.floor(diffDays(this.dates[0], date));\n if (dayOffset < 0) {\n return indices[0] - 1;\n }\n if (dayOffset >= indices.length) {\n return indices[indices.length - 1] + 1;\n }\n return indices[dayOffset];\n };\n return DaySeriesModel;\n}());\n\nvar DayTableModel = /** @class */ (function () {\n function DayTableModel(daySeries, breakOnWeeks) {\n var dates = daySeries.dates;\n var daysPerRow;\n var firstDay;\n var rowCnt;\n if (breakOnWeeks) {\n // count columns until the day-of-week repeats\n firstDay = dates[0].getUTCDay();\n for (daysPerRow = 1; daysPerRow < dates.length; daysPerRow += 1) {\n if (dates[daysPerRow].getUTCDay() === firstDay) {\n break;\n }\n }\n rowCnt = Math.ceil(dates.length / daysPerRow);\n }\n else {\n rowCnt = 1;\n daysPerRow = dates.length;\n }\n this.rowCnt = rowCnt;\n this.colCnt = daysPerRow;\n this.daySeries = daySeries;\n this.cells = this.buildCells();\n this.headerDates = this.buildHeaderDates();\n }\n DayTableModel.prototype.buildCells = function () {\n var rows = [];\n for (var row = 0; row < this.rowCnt; row += 1) {\n var cells = [];\n for (var col = 0; col < this.colCnt; col += 1) {\n cells.push(this.buildCell(row, col));\n }\n rows.push(cells);\n }\n return rows;\n };\n DayTableModel.prototype.buildCell = function (row, col) {\n var date = this.daySeries.dates[row * this.colCnt + col];\n return {\n key: date.toISOString(),\n date: date,\n };\n };\n DayTableModel.prototype.buildHeaderDates = function () {\n var dates = [];\n for (var col = 0; col < this.colCnt; col += 1) {\n dates.push(this.cells[0][col].date);\n }\n return dates;\n };\n DayTableModel.prototype.sliceRange = function (range) {\n var colCnt = this.colCnt;\n var seriesSeg = this.daySeries.sliceRange(range);\n var segs = [];\n if (seriesSeg) {\n var firstIndex = seriesSeg.firstIndex, lastIndex = seriesSeg.lastIndex;\n var index = firstIndex;\n while (index <= lastIndex) {\n var row = Math.floor(index / colCnt);\n var nextIndex = Math.min((row + 1) * colCnt, lastIndex + 1);\n segs.push({\n row: row,\n firstCol: index % colCnt,\n lastCol: (nextIndex - 1) % colCnt,\n isStart: seriesSeg.isStart && index === firstIndex,\n isEnd: seriesSeg.isEnd && (nextIndex - 1) === lastIndex,\n });\n index = nextIndex;\n }\n }\n return segs;\n };\n return DayTableModel;\n}());\n\nvar Slicer = /** @class */ (function () {\n function Slicer() {\n this.sliceBusinessHours = memoize(this._sliceBusinessHours);\n this.sliceDateSelection = memoize(this._sliceDateSpan);\n this.sliceEventStore = memoize(this._sliceEventStore);\n this.sliceEventDrag = memoize(this._sliceInteraction);\n this.sliceEventResize = memoize(this._sliceInteraction);\n this.forceDayIfListItem = false; // hack\n }\n Slicer.prototype.sliceProps = function (props, dateProfile, nextDayThreshold, context) {\n var extraArgs = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n extraArgs[_i - 4] = arguments[_i];\n }\n var eventUiBases = props.eventUiBases;\n var eventSegs = this.sliceEventStore.apply(this, __spreadArray([props.eventStore, eventUiBases, dateProfile, nextDayThreshold], extraArgs));\n return {\n dateSelectionSegs: this.sliceDateSelection.apply(this, __spreadArray([props.dateSelection, eventUiBases, context], extraArgs)),\n businessHourSegs: this.sliceBusinessHours.apply(this, __spreadArray([props.businessHours, dateProfile, nextDayThreshold, context], extraArgs)),\n fgEventSegs: eventSegs.fg,\n bgEventSegs: eventSegs.bg,\n eventDrag: this.sliceEventDrag.apply(this, __spreadArray([props.eventDrag, eventUiBases, dateProfile, nextDayThreshold], extraArgs)),\n eventResize: this.sliceEventResize.apply(this, __spreadArray([props.eventResize, eventUiBases, dateProfile, nextDayThreshold], extraArgs)),\n eventSelection: props.eventSelection,\n }; // TODO: give interactionSegs?\n };\n Slicer.prototype.sliceNowDate = function (// does not memoize\n date, context) {\n var extraArgs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n extraArgs[_i - 2] = arguments[_i];\n }\n return this._sliceDateSpan.apply(this, __spreadArray([{ range: { start: date, end: addMs(date, 1) }, allDay: false },\n {},\n context], extraArgs));\n };\n Slicer.prototype._sliceBusinessHours = function (businessHours, dateProfile, nextDayThreshold, context) {\n var extraArgs = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n extraArgs[_i - 4] = arguments[_i];\n }\n if (!businessHours) {\n return [];\n }\n return this._sliceEventStore.apply(this, __spreadArray([expandRecurring(businessHours, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), context),\n {},\n dateProfile,\n nextDayThreshold], extraArgs)).bg;\n };\n Slicer.prototype._sliceEventStore = function (eventStore, eventUiBases, dateProfile, nextDayThreshold) {\n var extraArgs = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n extraArgs[_i - 4] = arguments[_i];\n }\n if (eventStore) {\n var rangeRes = sliceEventStore(eventStore, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n return {\n bg: this.sliceEventRanges(rangeRes.bg, extraArgs),\n fg: this.sliceEventRanges(rangeRes.fg, extraArgs),\n };\n }\n return { bg: [], fg: [] };\n };\n Slicer.prototype._sliceInteraction = function (interaction, eventUiBases, dateProfile, nextDayThreshold) {\n var extraArgs = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n extraArgs[_i - 4] = arguments[_i];\n }\n if (!interaction) {\n return null;\n }\n var rangeRes = sliceEventStore(interaction.mutatedEvents, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n return {\n segs: this.sliceEventRanges(rangeRes.fg, extraArgs),\n affectedInstances: interaction.affectedEvents.instances,\n isEvent: interaction.isEvent,\n };\n };\n Slicer.prototype._sliceDateSpan = function (dateSpan, eventUiBases, context) {\n var extraArgs = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n extraArgs[_i - 3] = arguments[_i];\n }\n if (!dateSpan) {\n return [];\n }\n var eventRange = fabricateEventRange(dateSpan, eventUiBases, context);\n var segs = this.sliceRange.apply(this, __spreadArray([dateSpan.range], extraArgs));\n for (var _a = 0, segs_1 = segs; _a < segs_1.length; _a++) {\n var seg = segs_1[_a];\n seg.eventRange = eventRange;\n }\n return segs;\n };\n /*\n \"complete\" seg means it has component and eventRange\n */\n Slicer.prototype.sliceEventRanges = function (eventRanges, extraArgs) {\n var segs = [];\n for (var _i = 0, eventRanges_1 = eventRanges; _i < eventRanges_1.length; _i++) {\n var eventRange = eventRanges_1[_i];\n segs.push.apply(segs, this.sliceEventRange(eventRange, extraArgs));\n }\n return segs;\n };\n /*\n \"complete\" seg means it has component and eventRange\n */\n Slicer.prototype.sliceEventRange = function (eventRange, extraArgs) {\n var dateRange = eventRange.range;\n // hack to make multi-day events that are being force-displayed as list-items to take up only one day\n if (this.forceDayIfListItem && eventRange.ui.display === 'list-item') {\n dateRange = {\n start: dateRange.start,\n end: addDays(dateRange.start, 1),\n };\n }\n var segs = this.sliceRange.apply(this, __spreadArray([dateRange], extraArgs));\n for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) {\n var seg = segs_2[_i];\n seg.eventRange = eventRange;\n seg.isStart = eventRange.isStart && seg.isStart;\n seg.isEnd = eventRange.isEnd && seg.isEnd;\n }\n return segs;\n };\n return Slicer;\n}());\n/*\nfor incorporating slotMinTime/slotMaxTime if appropriate\nTODO: should be part of DateProfile!\nTimelineDateProfile already does this btw\n*/\nfunction computeActiveRange(dateProfile, isComponentAllDay) {\n var range = dateProfile.activeRange;\n if (isComponentAllDay) {\n return range;\n }\n return {\n start: addMs(range.start, dateProfile.slotMinTime.milliseconds),\n end: addMs(range.end, dateProfile.slotMaxTime.milliseconds - 864e5), // 864e5 = ms in a day\n };\n}\n\n// high-level segmenting-aware tester functions\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isInteractionValid(interaction, dateProfile, context) {\n var instances = interaction.mutatedEvents.instances;\n for (var instanceId in instances) {\n if (!rangeContainsRange(dateProfile.validRange, instances[instanceId].range)) {\n return false;\n }\n }\n return isNewPropsValid({ eventDrag: interaction }, context); // HACK: the eventDrag props is used for ALL interactions\n}\nfunction isDateSelectionValid(dateSelection, dateProfile, context) {\n if (!rangeContainsRange(dateProfile.validRange, dateSelection.range)) {\n return false;\n }\n return isNewPropsValid({ dateSelection: dateSelection }, context);\n}\nfunction isNewPropsValid(newProps, context) {\n var calendarState = context.getCurrentData();\n var props = __assign({ businessHours: calendarState.businessHours, dateSelection: '', eventStore: calendarState.eventStore, eventUiBases: calendarState.eventUiBases, eventSelection: '', eventDrag: null, eventResize: null }, newProps);\n return (context.pluginHooks.isPropsValid || isPropsValid)(props, context);\n}\nfunction isPropsValid(state, context, dateSpanMeta, filterConfig) {\n if (dateSpanMeta === void 0) { dateSpanMeta = {}; }\n if (state.eventDrag && !isInteractionPropsValid(state, context, dateSpanMeta, filterConfig)) {\n return false;\n }\n if (state.dateSelection && !isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig)) {\n return false;\n }\n return true;\n}\n// Moving Event Validation\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isInteractionPropsValid(state, context, dateSpanMeta, filterConfig) {\n var currentState = context.getCurrentData();\n var interaction = state.eventDrag; // HACK: the eventDrag props is used for ALL interactions\n var subjectEventStore = interaction.mutatedEvents;\n var subjectDefs = subjectEventStore.defs;\n var subjectInstances = subjectEventStore.instances;\n var subjectConfigs = compileEventUis(subjectDefs, interaction.isEvent ?\n state.eventUiBases :\n { '': currentState.selectionConfig });\n if (filterConfig) {\n subjectConfigs = mapHash(subjectConfigs, filterConfig);\n }\n // exclude the subject events. TODO: exclude defs too?\n var otherEventStore = excludeInstances(state.eventStore, interaction.affectedEvents.instances);\n var otherDefs = otherEventStore.defs;\n var otherInstances = otherEventStore.instances;\n var otherConfigs = compileEventUis(otherDefs, state.eventUiBases);\n for (var subjectInstanceId in subjectInstances) {\n var subjectInstance = subjectInstances[subjectInstanceId];\n var subjectRange = subjectInstance.range;\n var subjectConfig = subjectConfigs[subjectInstance.defId];\n var subjectDef = subjectDefs[subjectInstance.defId];\n // constraint\n if (!allConstraintsPass(subjectConfig.constraints, subjectRange, otherEventStore, state.businessHours, context)) {\n return false;\n }\n // overlap\n var eventOverlap = context.options.eventOverlap;\n var eventOverlapFunc = typeof eventOverlap === 'function' ? eventOverlap : null;\n for (var otherInstanceId in otherInstances) {\n var otherInstance = otherInstances[otherInstanceId];\n // intersect! evaluate\n if (rangesIntersect(subjectRange, otherInstance.range)) {\n var otherOverlap = otherConfigs[otherInstance.defId].overlap;\n // consider the other event's overlap. only do this if the subject event is a \"real\" event\n if (otherOverlap === false && interaction.isEvent) {\n return false;\n }\n if (subjectConfig.overlap === false) {\n return false;\n }\n if (eventOverlapFunc && !eventOverlapFunc(new EventApi(context, otherDefs[otherInstance.defId], otherInstance), // still event\n new EventApi(context, subjectDef, subjectInstance))) {\n return false;\n }\n }\n }\n // allow (a function)\n var calendarEventStore = currentState.eventStore; // need global-to-calendar, not local to component (splittable)state\n for (var _i = 0, _a = subjectConfig.allows; _i < _a.length; _i++) {\n var subjectAllow = _a[_i];\n var subjectDateSpan = __assign(__assign({}, dateSpanMeta), { range: subjectInstance.range, allDay: subjectDef.allDay });\n var origDef = calendarEventStore.defs[subjectDef.defId];\n var origInstance = calendarEventStore.instances[subjectInstanceId];\n var eventApi = void 0;\n if (origDef) { // was previously in the calendar\n eventApi = new EventApi(context, origDef, origInstance);\n }\n else { // was an external event\n eventApi = new EventApi(context, subjectDef); // no instance, because had no dates\n }\n if (!subjectAllow(buildDateSpanApiWithContext(subjectDateSpan, context), eventApi)) {\n return false;\n }\n }\n }\n return true;\n}\n// Date Selection Validation\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig) {\n var relevantEventStore = state.eventStore;\n var relevantDefs = relevantEventStore.defs;\n var relevantInstances = relevantEventStore.instances;\n var selection = state.dateSelection;\n var selectionRange = selection.range;\n var selectionConfig = context.getCurrentData().selectionConfig;\n if (filterConfig) {\n selectionConfig = filterConfig(selectionConfig);\n }\n // constraint\n if (!allConstraintsPass(selectionConfig.constraints, selectionRange, relevantEventStore, state.businessHours, context)) {\n return false;\n }\n // overlap\n var selectOverlap = context.options.selectOverlap;\n var selectOverlapFunc = typeof selectOverlap === 'function' ? selectOverlap : null;\n for (var relevantInstanceId in relevantInstances) {\n var relevantInstance = relevantInstances[relevantInstanceId];\n // intersect! evaluate\n if (rangesIntersect(selectionRange, relevantInstance.range)) {\n if (selectionConfig.overlap === false) {\n return false;\n }\n if (selectOverlapFunc && !selectOverlapFunc(new EventApi(context, relevantDefs[relevantInstance.defId], relevantInstance), null)) {\n return false;\n }\n }\n }\n // allow (a function)\n for (var _i = 0, _a = selectionConfig.allows; _i < _a.length; _i++) {\n var selectionAllow = _a[_i];\n var fullDateSpan = __assign(__assign({}, dateSpanMeta), selection);\n if (!selectionAllow(buildDateSpanApiWithContext(fullDateSpan, context), null)) {\n return false;\n }\n }\n return true;\n}\n// Constraint Utils\n// ------------------------------------------------------------------------------------------------------------------------\nfunction allConstraintsPass(constraints, subjectRange, otherEventStore, businessHoursUnexpanded, context) {\n for (var _i = 0, constraints_1 = constraints; _i < constraints_1.length; _i++) {\n var constraint = constraints_1[_i];\n if (!anyRangesContainRange(constraintToRanges(constraint, subjectRange, otherEventStore, businessHoursUnexpanded, context), subjectRange)) {\n return false;\n }\n }\n return true;\n}\nfunction constraintToRanges(constraint, subjectRange, // for expanding a recurring constraint, or expanding business hours\notherEventStore, // for if constraint is an even group ID\nbusinessHoursUnexpanded, // for if constraint is 'businessHours'\ncontext) {\n if (constraint === 'businessHours') {\n return eventStoreToRanges(expandRecurring(businessHoursUnexpanded, subjectRange, context));\n }\n if (typeof constraint === 'string') { // an group ID\n return eventStoreToRanges(filterEventStoreDefs(otherEventStore, function (eventDef) { return eventDef.groupId === constraint; }));\n }\n if (typeof constraint === 'object' && constraint) { // non-null object\n return eventStoreToRanges(expandRecurring(constraint, subjectRange, context));\n }\n return []; // if it's false\n}\n// TODO: move to event-store file?\nfunction eventStoreToRanges(eventStore) {\n var instances = eventStore.instances;\n var ranges = [];\n for (var instanceId in instances) {\n ranges.push(instances[instanceId].range);\n }\n return ranges;\n}\n// TODO: move to geom file?\nfunction anyRangesContainRange(outerRanges, innerRange) {\n for (var _i = 0, outerRanges_1 = outerRanges; _i < outerRanges_1.length; _i++) {\n var outerRange = outerRanges_1[_i];\n if (rangeContainsRange(outerRange, innerRange)) {\n return true;\n }\n }\n return false;\n}\n\nvar VISIBLE_HIDDEN_RE = /^(visible|hidden)$/;\nvar Scroller = /** @class */ (function (_super) {\n __extends(Scroller, _super);\n function Scroller() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handleEl = function (el) {\n _this.el = el;\n setRef(_this.props.elRef, el);\n };\n return _this;\n }\n Scroller.prototype.render = function () {\n var props = this.props;\n var liquid = props.liquid, liquidIsAbsolute = props.liquidIsAbsolute;\n var isAbsolute = liquid && liquidIsAbsolute;\n var className = ['fc-scroller'];\n if (liquid) {\n if (liquidIsAbsolute) {\n className.push('fc-scroller-liquid-absolute');\n }\n else {\n className.push('fc-scroller-liquid');\n }\n }\n return (createElement(\"div\", { ref: this.handleEl, className: className.join(' '), style: {\n overflowX: props.overflowX,\n overflowY: props.overflowY,\n left: (isAbsolute && -(props.overcomeLeft || 0)) || '',\n right: (isAbsolute && -(props.overcomeRight || 0)) || '',\n bottom: (isAbsolute && -(props.overcomeBottom || 0)) || '',\n marginLeft: (!isAbsolute && -(props.overcomeLeft || 0)) || '',\n marginRight: (!isAbsolute && -(props.overcomeRight || 0)) || '',\n marginBottom: (!isAbsolute && -(props.overcomeBottom || 0)) || '',\n maxHeight: props.maxHeight || '',\n } }, props.children));\n };\n Scroller.prototype.needsXScrolling = function () {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n return false;\n }\n // testing scrollWidth>clientWidth is unreliable cross-browser when pixel heights aren't integers.\n // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n // inner-child margins and absolute positioning\n var el = this.el;\n var realClientWidth = this.el.getBoundingClientRect().width - this.getYScrollbarWidth();\n var children = el.children;\n for (var i = 0; i < children.length; i += 1) {\n var childEl = children[i];\n if (childEl.getBoundingClientRect().width > realClientWidth) {\n return true;\n }\n }\n return false;\n };\n Scroller.prototype.needsYScrolling = function () {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n return false;\n }\n // testing scrollHeight>clientHeight is unreliable cross-browser when pixel heights aren't integers.\n // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n // inner-child margins and absolute positioning\n var el = this.el;\n var realClientHeight = this.el.getBoundingClientRect().height - this.getXScrollbarWidth();\n var children = el.children;\n for (var i = 0; i < children.length; i += 1) {\n var childEl = children[i];\n if (childEl.getBoundingClientRect().height > realClientHeight) {\n return true;\n }\n }\n return false;\n };\n Scroller.prototype.getXScrollbarWidth = function () {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n return 0;\n }\n return this.el.offsetHeight - this.el.clientHeight; // only works because we guarantee no borders. TODO: add to CSS with important?\n };\n Scroller.prototype.getYScrollbarWidth = function () {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n return 0;\n }\n return this.el.offsetWidth - this.el.clientWidth; // only works because we guarantee no borders. TODO: add to CSS with important?\n };\n return Scroller;\n}(BaseComponent));\n\n/*\nTODO: somehow infer OtherArgs from masterCallback?\nTODO: infer RefType from masterCallback if provided\n*/\nvar RefMap = /** @class */ (function () {\n function RefMap(masterCallback) {\n var _this = this;\n this.masterCallback = masterCallback;\n this.currentMap = {};\n this.depths = {};\n this.callbackMap = {};\n this.handleValue = function (val, key) {\n var _a = _this, depths = _a.depths, currentMap = _a.currentMap;\n var removed = false;\n var added = false;\n if (val !== null) {\n // for bug... ACTUALLY: can probably do away with this now that callers don't share numeric indices anymore\n removed = (key in currentMap);\n currentMap[key] = val;\n depths[key] = (depths[key] || 0) + 1;\n added = true;\n }\n else {\n depths[key] -= 1;\n if (!depths[key]) {\n delete currentMap[key];\n delete _this.callbackMap[key];\n removed = true;\n }\n }\n if (_this.masterCallback) {\n if (removed) {\n _this.masterCallback(null, String(key));\n }\n if (added) {\n _this.masterCallback(val, String(key));\n }\n }\n };\n }\n RefMap.prototype.createRef = function (key) {\n var _this = this;\n var refCallback = this.callbackMap[key];\n if (!refCallback) {\n refCallback = this.callbackMap[key] = function (val) {\n _this.handleValue(val, String(key));\n };\n }\n return refCallback;\n };\n // TODO: check callers that don't care about order. should use getAll instead\n // NOTE: this method has become less valuable now that we are encouraged to map order by some other index\n // TODO: provide ONE array-export function, buildArray, which fails on non-numeric indexes. caller can manipulate and \"collect\"\n RefMap.prototype.collect = function (startIndex, endIndex, step) {\n return collectFromHash(this.currentMap, startIndex, endIndex, step);\n };\n RefMap.prototype.getAll = function () {\n return hashValuesToArray(this.currentMap);\n };\n return RefMap;\n}());\n\nfunction computeShrinkWidth(chunkEls) {\n var shrinkCells = findElements(chunkEls, '.fc-scrollgrid-shrink');\n var largestWidth = 0;\n for (var _i = 0, shrinkCells_1 = shrinkCells; _i < shrinkCells_1.length; _i++) {\n var shrinkCell = shrinkCells_1[_i];\n largestWidth = Math.max(largestWidth, computeSmallestCellWidth(shrinkCell));\n }\n return Math.ceil(largestWidth); // elements work best with integers. round up to ensure contents fits\n}\nfunction getSectionHasLiquidHeight(props, sectionConfig) {\n return props.liquid && sectionConfig.liquid; // does the section do liquid-height? (need to have whole scrollgrid liquid-height as well)\n}\nfunction getAllowYScrolling(props, sectionConfig) {\n return sectionConfig.maxHeight != null || // if its possible for the height to max out, we might need scrollbars\n getSectionHasLiquidHeight(props, sectionConfig); // if the section is liquid height, it might condense enough to require scrollbars\n}\n// TODO: ONLY use `arg`. force out internal function to use same API\nfunction renderChunkContent(sectionConfig, chunkConfig, arg, isHeader) {\n var expandRows = arg.expandRows;\n var content = typeof chunkConfig.content === 'function' ?\n chunkConfig.content(arg) :\n createElement('table', {\n role: 'presentation',\n className: [\n chunkConfig.tableClassName,\n sectionConfig.syncRowHeights ? 'fc-scrollgrid-sync-table' : '',\n ].join(' '),\n style: {\n minWidth: arg.tableMinWidth,\n width: arg.clientWidth,\n height: expandRows ? arg.clientHeight : '', // css `height` on a
serves as a min-height\n },\n }, arg.tableColGroupNode, createElement(isHeader ? 'thead' : 'tbody', {\n role: 'presentation',\n }, typeof chunkConfig.rowContent === 'function'\n ? chunkConfig.rowContent(arg)\n : chunkConfig.rowContent));\n return content;\n}\nfunction isColPropsEqual(cols0, cols1) {\n return isArraysEqual(cols0, cols1, isPropsEqual);\n}\nfunction renderMicroColGroup(cols, shrinkWidth) {\n var colNodes = [];\n /*\n for ColProps with spans, it would have been great to make a single \n HOWEVER, Chrome was getting messing up distributing the width to elements makes Chrome behave.\n */\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var colProps = cols_1[_i];\n var span = colProps.span || 1;\n for (var i = 0; i < span; i += 1) {\n colNodes.push(createElement(\"col\", { style: {\n width: colProps.width === 'shrink' ? sanitizeShrinkWidth(shrinkWidth) : (colProps.width || ''),\n minWidth: colProps.minWidth || '',\n } }));\n }\n }\n return createElement.apply(void 0, __spreadArray(['colgroup', {}], colNodes));\n}\nfunction sanitizeShrinkWidth(shrinkWidth) {\n /* why 4? if we do 0, it will kill any border, which are needed for computeSmallestCellWidth\n 4 accounts for 2 2-pixel borders. TODO: better solution? */\n return shrinkWidth == null ? 4 : shrinkWidth;\n}\nfunction hasShrinkWidth(cols) {\n for (var _i = 0, cols_2 = cols; _i < cols_2.length; _i++) {\n var col = cols_2[_i];\n if (col.width === 'shrink') {\n return true;\n }\n }\n return false;\n}\nfunction getScrollGridClassNames(liquid, context) {\n var classNames = [\n 'fc-scrollgrid',\n context.theme.getClass('table'),\n ];\n if (liquid) {\n classNames.push('fc-scrollgrid-liquid');\n }\n return classNames;\n}\nfunction getSectionClassNames(sectionConfig, wholeTableVGrow) {\n var classNames = [\n 'fc-scrollgrid-section',\n \"fc-scrollgrid-section-\" + sectionConfig.type,\n sectionConfig.className, // used?\n ];\n if (wholeTableVGrow && sectionConfig.liquid && sectionConfig.maxHeight == null) {\n classNames.push('fc-scrollgrid-section-liquid');\n }\n if (sectionConfig.isSticky) {\n classNames.push('fc-scrollgrid-section-sticky');\n }\n return classNames;\n}\nfunction renderScrollShim(arg) {\n return (createElement(\"div\", { className: \"fc-scrollgrid-sticky-shim\", style: {\n width: arg.clientWidth,\n minWidth: arg.tableMinWidth,\n } }));\n}\nfunction getStickyHeaderDates(options) {\n var stickyHeaderDates = options.stickyHeaderDates;\n if (stickyHeaderDates == null || stickyHeaderDates === 'auto') {\n stickyHeaderDates = options.height === 'auto' || options.viewHeight === 'auto';\n }\n return stickyHeaderDates;\n}\nfunction getStickyFooterScrollbar(options) {\n var stickyFooterScrollbar = options.stickyFooterScrollbar;\n if (stickyFooterScrollbar == null || stickyFooterScrollbar === 'auto') {\n stickyFooterScrollbar = options.height === 'auto' || options.viewHeight === 'auto';\n }\n return stickyFooterScrollbar;\n}\n\nvar SimpleScrollGrid = /** @class */ (function (_super) {\n __extends(SimpleScrollGrid, _super);\n function SimpleScrollGrid() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.processCols = memoize(function (a) { return a; }, isColPropsEqual); // so we get same `cols` props every time\n // yucky to memoize VNodes, but much more efficient for consumers\n _this.renderMicroColGroup = memoize(renderMicroColGroup);\n _this.scrollerRefs = new RefMap();\n _this.scrollerElRefs = new RefMap(_this._handleScrollerEl.bind(_this));\n _this.state = {\n shrinkWidth: null,\n forceYScrollbars: false,\n scrollerClientWidths: {},\n scrollerClientHeights: {},\n };\n // TODO: can do a really simple print-view. dont need to join rows\n _this.handleSizing = function () {\n _this.safeSetState(__assign({ shrinkWidth: _this.computeShrinkWidth() }, _this.computeScrollerDims()));\n };\n return _this;\n }\n SimpleScrollGrid.prototype.render = function () {\n var _a = this, props = _a.props, state = _a.state, context = _a.context;\n var sectionConfigs = props.sections || [];\n var cols = this.processCols(props.cols);\n var microColGroupNode = this.renderMicroColGroup(cols, state.shrinkWidth);\n var classNames = getScrollGridClassNames(props.liquid, context);\n if (props.collapsibleWidth) {\n classNames.push('fc-scrollgrid-collapsible');\n }\n // TODO: make DRY\n var configCnt = sectionConfigs.length;\n var configI = 0;\n var currentConfig;\n var headSectionNodes = [];\n var bodySectionNodes = [];\n var footSectionNodes = [];\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {\n headSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true));\n configI += 1;\n }\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {\n bodySectionNodes.push(this.renderSection(currentConfig, microColGroupNode, false));\n configI += 1;\n }\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {\n footSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true));\n configI += 1;\n }\n // firefox bug: when setting height on table and there is a thead or tfoot,\n // the necessary height:100% on the liquid-height body section forces the *whole* table to be taller. (bug #5524)\n // use getCanVGrowWithinCell as a way to detect table-stupid firefox.\n // if so, use a simpler dom structure, jam everything into a lone tbody.\n var isBuggy = !getCanVGrowWithinCell();\n var roleAttrs = { role: 'rowgroup' };\n return createElement('table', {\n role: 'grid',\n className: classNames.join(' '),\n style: { height: props.height },\n }, Boolean(!isBuggy && headSectionNodes.length) && createElement.apply(void 0, __spreadArray(['thead', roleAttrs], headSectionNodes)), Boolean(!isBuggy && bodySectionNodes.length) && createElement.apply(void 0, __spreadArray(['tbody', roleAttrs], bodySectionNodes)), Boolean(!isBuggy && footSectionNodes.length) && createElement.apply(void 0, __spreadArray(['tfoot', roleAttrs], footSectionNodes)), isBuggy && createElement.apply(void 0, __spreadArray(__spreadArray(__spreadArray(['tbody', roleAttrs], headSectionNodes), bodySectionNodes), footSectionNodes)));\n };\n SimpleScrollGrid.prototype.renderSection = function (sectionConfig, microColGroupNode, isHeader) {\n if ('outerContent' in sectionConfig) {\n return (createElement(Fragment, { key: sectionConfig.key }, sectionConfig.outerContent));\n }\n return (createElement(\"tr\", { key: sectionConfig.key, role: \"presentation\", className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, this.renderChunkTd(sectionConfig, microColGroupNode, sectionConfig.chunk, isHeader)));\n };\n SimpleScrollGrid.prototype.renderChunkTd = function (sectionConfig, microColGroupNode, chunkConfig, isHeader) {\n if ('outerContent' in chunkConfig) {\n return chunkConfig.outerContent;\n }\n var props = this.props;\n var _a = this.state, forceYScrollbars = _a.forceYScrollbars, scrollerClientWidths = _a.scrollerClientWidths, scrollerClientHeights = _a.scrollerClientHeights;\n var needsYScrolling = getAllowYScrolling(props, sectionConfig); // TODO: do lazily. do in section config?\n var isLiquid = getSectionHasLiquidHeight(props, sectionConfig);\n // for `!props.liquid` - is WHOLE scrollgrid natural height?\n // TODO: do same thing in advanced scrollgrid? prolly not b/c always has horizontal scrollbars\n var overflowY = !props.liquid ? 'visible' :\n forceYScrollbars ? 'scroll' :\n !needsYScrolling ? 'hidden' :\n 'auto';\n var sectionKey = sectionConfig.key;\n var content = renderChunkContent(sectionConfig, chunkConfig, {\n tableColGroupNode: microColGroupNode,\n tableMinWidth: '',\n clientWidth: (!props.collapsibleWidth && scrollerClientWidths[sectionKey] !== undefined) ? scrollerClientWidths[sectionKey] : null,\n clientHeight: scrollerClientHeights[sectionKey] !== undefined ? scrollerClientHeights[sectionKey] : null,\n expandRows: sectionConfig.expandRows,\n syncRowHeights: false,\n rowSyncHeights: [],\n reportRowHeightChange: function () { },\n }, isHeader);\n return createElement(isHeader ? 'th' : 'td', {\n ref: chunkConfig.elRef,\n role: 'presentation',\n }, createElement(\"div\", { className: \"fc-scroller-harness\" + (isLiquid ? ' fc-scroller-harness-liquid' : '') },\n createElement(Scroller, { ref: this.scrollerRefs.createRef(sectionKey), elRef: this.scrollerElRefs.createRef(sectionKey), overflowY: overflowY, overflowX: !props.liquid ? 'visible' : 'hidden' /* natural height? */, maxHeight: sectionConfig.maxHeight, liquid: isLiquid, liquidIsAbsolute // because its within a harness\n : true }, content)));\n };\n SimpleScrollGrid.prototype._handleScrollerEl = function (scrollerEl, key) {\n var section = getSectionByKey(this.props.sections, key);\n if (section) {\n setRef(section.chunk.scrollerElRef, scrollerEl);\n }\n };\n SimpleScrollGrid.prototype.componentDidMount = function () {\n this.handleSizing();\n this.context.addResizeHandler(this.handleSizing);\n };\n SimpleScrollGrid.prototype.componentDidUpdate = function () {\n // TODO: need better solution when state contains non-sizing things\n this.handleSizing();\n };\n SimpleScrollGrid.prototype.componentWillUnmount = function () {\n this.context.removeResizeHandler(this.handleSizing);\n };\n SimpleScrollGrid.prototype.computeShrinkWidth = function () {\n return hasShrinkWidth(this.props.cols)\n ? computeShrinkWidth(this.scrollerElRefs.getAll())\n : 0;\n };\n SimpleScrollGrid.prototype.computeScrollerDims = function () {\n var scrollbarWidth = getScrollbarWidths();\n var _a = this, scrollerRefs = _a.scrollerRefs, scrollerElRefs = _a.scrollerElRefs;\n var forceYScrollbars = false;\n var scrollerClientWidths = {};\n var scrollerClientHeights = {};\n for (var sectionKey in scrollerRefs.currentMap) {\n var scroller = scrollerRefs.currentMap[sectionKey];\n if (scroller && scroller.needsYScrolling()) {\n forceYScrollbars = true;\n break;\n }\n }\n for (var _i = 0, _b = this.props.sections; _i < _b.length; _i++) {\n var section = _b[_i];\n var sectionKey = section.key;\n var scrollerEl = scrollerElRefs.currentMap[sectionKey];\n if (scrollerEl) {\n var harnessEl = scrollerEl.parentNode; // TODO: weird way to get this. need harness b/c doesn't include table borders\n scrollerClientWidths[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().width - (forceYScrollbars\n ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future\n : 0));\n scrollerClientHeights[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().height);\n }\n }\n return { forceYScrollbars: forceYScrollbars, scrollerClientWidths: scrollerClientWidths, scrollerClientHeights: scrollerClientHeights };\n };\n return SimpleScrollGrid;\n}(BaseComponent));\nSimpleScrollGrid.addStateEquality({\n scrollerClientWidths: isPropsEqual,\n scrollerClientHeights: isPropsEqual,\n});\nfunction getSectionByKey(sections, key) {\n for (var _i = 0, sections_1 = sections; _i < sections_1.length; _i++) {\n var section = sections_1[_i];\n if (section.key === key) {\n return section;\n }\n }\n return null;\n}\n\nvar EventRoot = /** @class */ (function (_super) {\n __extends(EventRoot, _super);\n function EventRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.elRef = createRef();\n return _this;\n }\n EventRoot.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var options = context.options;\n var seg = props.seg;\n var eventRange = seg.eventRange;\n var ui = eventRange.ui;\n var hookProps = {\n event: new EventApi(context, eventRange.def, eventRange.instance),\n view: context.viewApi,\n timeText: props.timeText,\n textColor: ui.textColor,\n backgroundColor: ui.backgroundColor,\n borderColor: ui.borderColor,\n isDraggable: !props.disableDragging && computeSegDraggable(seg, context),\n isStartResizable: !props.disableResizing && computeSegStartResizable(seg, context),\n isEndResizable: !props.disableResizing && computeSegEndResizable(seg),\n isMirror: Boolean(props.isDragging || props.isResizing || props.isDateSelecting),\n isStart: Boolean(seg.isStart),\n isEnd: Boolean(seg.isEnd),\n isPast: Boolean(props.isPast),\n isFuture: Boolean(props.isFuture),\n isToday: Boolean(props.isToday),\n isSelected: Boolean(props.isSelected),\n isDragging: Boolean(props.isDragging),\n isResizing: Boolean(props.isResizing),\n };\n var standardClassNames = getEventClassNames(hookProps).concat(ui.classNames);\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.eventClassNames, content: options.eventContent, defaultContent: props.defaultContent, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount, elRef: this.elRef }, function (rootElRef, customClassNames, innerElRef, innerContent) { return props.children(rootElRef, standardClassNames.concat(customClassNames), innerElRef, innerContent, hookProps); }));\n };\n EventRoot.prototype.componentDidMount = function () {\n setElSeg(this.elRef.current, this.props.seg);\n };\n /*\n need to re-assign seg to the element if seg changes, even if the element is the same\n */\n EventRoot.prototype.componentDidUpdate = function (prevProps) {\n var seg = this.props.seg;\n if (seg !== prevProps.seg) {\n setElSeg(this.elRef.current, seg);\n }\n };\n return EventRoot;\n}(BaseComponent));\n\n// should not be a purecomponent\nvar StandardEvent = /** @class */ (function (_super) {\n __extends(StandardEvent, _super);\n function StandardEvent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StandardEvent.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var seg = props.seg;\n var timeFormat = context.options.eventTimeFormat || props.defaultTimeFormat;\n var timeText = buildSegTimeText(seg, timeFormat, context, props.defaultDisplayEventTime, props.defaultDisplayEventEnd);\n return (createElement(EventRoot, { seg: seg, timeText: timeText, disableDragging: props.disableDragging, disableResizing: props.disableResizing, defaultContent: props.defaultContent || renderInnerContent$1, isDragging: props.isDragging, isResizing: props.isResizing, isDateSelecting: props.isDateSelecting, isSelected: props.isSelected, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) { return (createElement(\"a\", __assign({ className: props.extraClassNames.concat(classNames).join(' '), style: {\n borderColor: hookProps.borderColor,\n backgroundColor: hookProps.backgroundColor,\n }, ref: rootElRef }, getSegAnchorAttrs(seg, context)),\n createElement(\"div\", { className: \"fc-event-main\", ref: innerElRef, style: { color: hookProps.textColor } }, innerContent),\n hookProps.isStartResizable &&\n createElement(\"div\", { className: \"fc-event-resizer fc-event-resizer-start\" }),\n hookProps.isEndResizable &&\n createElement(\"div\", { className: \"fc-event-resizer fc-event-resizer-end\" }))); }));\n };\n return StandardEvent;\n}(BaseComponent));\nfunction renderInnerContent$1(innerProps) {\n return (createElement(\"div\", { className: \"fc-event-main-frame\" },\n innerProps.timeText && (createElement(\"div\", { className: \"fc-event-time\" }, innerProps.timeText)),\n createElement(\"div\", { className: \"fc-event-title-container\" },\n createElement(\"div\", { className: \"fc-event-title fc-sticky\" }, innerProps.event.title || createElement(Fragment, null, \"\\u00A0\")))));\n}\n\nvar NowIndicatorRoot = function (props) { return (createElement(ViewContextType.Consumer, null, function (context) {\n var options = context.options;\n var hookProps = {\n isAxis: props.isAxis,\n date: context.dateEnv.toDate(props.date),\n view: context.viewApi,\n };\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.nowIndicatorClassNames, content: options.nowIndicatorContent, didMount: options.nowIndicatorDidMount, willUnmount: options.nowIndicatorWillUnmount }, props.children));\n})); };\n\nvar DAY_NUM_FORMAT = createFormatter({ day: 'numeric' });\nvar DayCellContent = /** @class */ (function (_super) {\n __extends(DayCellContent, _super);\n function DayCellContent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DayCellContent.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var options = context.options;\n var hookProps = refineDayCellHookProps({\n date: props.date,\n dateProfile: props.dateProfile,\n todayRange: props.todayRange,\n showDayNumber: props.showDayNumber,\n extraProps: props.extraHookProps,\n viewApi: context.viewApi,\n dateEnv: context.dateEnv,\n });\n return (createElement(ContentHook, { hookProps: hookProps, content: options.dayCellContent, defaultContent: props.defaultContent }, props.children));\n };\n return DayCellContent;\n}(BaseComponent));\nfunction refineDayCellHookProps(raw) {\n var date = raw.date, dateEnv = raw.dateEnv;\n var dayMeta = getDateMeta(date, raw.todayRange, null, raw.dateProfile);\n return __assign(__assign(__assign({ date: dateEnv.toDate(date), view: raw.viewApi }, dayMeta), { dayNumberText: raw.showDayNumber ? dateEnv.format(date, DAY_NUM_FORMAT) : '' }), raw.extraProps);\n}\n\nvar DayCellRoot = /** @class */ (function (_super) {\n __extends(DayCellRoot, _super);\n function DayCellRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.refineHookProps = memoizeObjArg(refineDayCellHookProps);\n _this.normalizeClassNames = buildClassNameNormalizer();\n return _this;\n }\n DayCellRoot.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var options = context.options;\n var hookProps = this.refineHookProps({\n date: props.date,\n dateProfile: props.dateProfile,\n todayRange: props.todayRange,\n showDayNumber: props.showDayNumber,\n extraProps: props.extraHookProps,\n viewApi: context.viewApi,\n dateEnv: context.dateEnv,\n });\n var classNames = getDayClassNames(hookProps, context.theme).concat(hookProps.isDisabled\n ? [] // don't use custom classNames if disabled\n : this.normalizeClassNames(options.dayCellClassNames, hookProps));\n var dataAttrs = hookProps.isDisabled ? {} : {\n 'data-date': formatDayString(props.date),\n };\n return (createElement(MountHook, { hookProps: hookProps, didMount: options.dayCellDidMount, willUnmount: options.dayCellWillUnmount, elRef: props.elRef }, function (rootElRef) { return props.children(rootElRef, classNames, dataAttrs, hookProps.isDisabled); }));\n };\n return DayCellRoot;\n}(BaseComponent));\n\nfunction renderFill(fillType) {\n return (createElement(\"div\", { className: \"fc-\" + fillType }));\n}\nvar BgEvent = function (props) { return (createElement(EventRoot, { defaultContent: renderInnerContent, seg: props.seg /* uselesss i think */, timeText: \"\", disableDragging: true, disableResizing: true, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: false, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) { return (createElement(\"div\", { ref: rootElRef, className: ['fc-bg-event'].concat(classNames).join(' '), style: {\n backgroundColor: hookProps.backgroundColor,\n } }, innerContent)); })); };\nfunction renderInnerContent(props) {\n var title = props.event.title;\n return title && (createElement(\"div\", { className: \"fc-event-title\" }, props.event.title));\n}\n\nvar WeekNumberRoot = function (props) { return (createElement(ViewContextType.Consumer, null, function (context) {\n var dateEnv = context.dateEnv, options = context.options;\n var date = props.date;\n var format = options.weekNumberFormat || props.defaultFormat;\n var num = dateEnv.computeWeekNumber(date); // TODO: somehow use for formatting as well?\n var text = dateEnv.format(date, format);\n var hookProps = { num: num, text: text, date: date };\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.weekNumberClassNames, content: options.weekNumberContent, defaultContent: renderInner, didMount: options.weekNumberDidMount, willUnmount: options.weekNumberWillUnmount }, props.children));\n})); };\nfunction renderInner(innerProps) {\n return innerProps.text;\n}\n\nvar PADDING_FROM_VIEWPORT = 10;\nvar Popover = /** @class */ (function (_super) {\n __extends(Popover, _super);\n function Popover() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n titleId: getUniqueDomId(),\n };\n _this.handleRootEl = function (el) {\n _this.rootEl = el;\n if (_this.props.elRef) {\n setRef(_this.props.elRef, el);\n }\n };\n // Triggered when the user clicks *anywhere* in the document, for the autoHide feature\n _this.handleDocumentMouseDown = function (ev) {\n // only hide the popover if the click happened outside the popover\n var target = getEventTargetViaRoot(ev);\n if (!_this.rootEl.contains(target)) {\n _this.handleCloseClick();\n }\n };\n _this.handleDocumentKeyDown = function (ev) {\n if (ev.key === 'Escape') {\n _this.handleCloseClick();\n }\n };\n _this.handleCloseClick = function () {\n var onClose = _this.props.onClose;\n if (onClose) {\n onClose();\n }\n };\n return _this;\n }\n Popover.prototype.render = function () {\n var _a = this.context, theme = _a.theme, options = _a.options;\n var _b = this, props = _b.props, state = _b.state;\n var classNames = [\n 'fc-popover',\n theme.getClass('popover'),\n ].concat(props.extraClassNames || []);\n return createPortal(createElement(\"div\", __assign({ id: props.id, className: classNames.join(' '), \"aria-labelledby\": state.titleId }, props.extraAttrs, { ref: this.handleRootEl }),\n createElement(\"div\", { className: 'fc-popover-header ' + theme.getClass('popoverHeader') },\n createElement(\"span\", { className: \"fc-popover-title\", id: state.titleId }, props.title),\n createElement(\"span\", { className: 'fc-popover-close ' + theme.getIconClass('close'), title: options.closeHint, onClick: this.handleCloseClick })),\n createElement(\"div\", { className: 'fc-popover-body ' + theme.getClass('popoverContent') }, props.children)), props.parentEl);\n };\n Popover.prototype.componentDidMount = function () {\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n this.updateSize();\n };\n Popover.prototype.componentWillUnmount = function () {\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n };\n Popover.prototype.updateSize = function () {\n var isRtl = this.context.isRtl;\n var _a = this.props, alignmentEl = _a.alignmentEl, alignGridTop = _a.alignGridTop;\n var rootEl = this.rootEl;\n var alignmentRect = computeClippedClientRect(alignmentEl);\n if (alignmentRect) {\n var popoverDims = rootEl.getBoundingClientRect();\n // position relative to viewport\n var popoverTop = alignGridTop\n ? elementClosest(alignmentEl, '.fc-scrollgrid').getBoundingClientRect().top\n : alignmentRect.top;\n var popoverLeft = isRtl ? alignmentRect.right - popoverDims.width : alignmentRect.left;\n // constrain\n popoverTop = Math.max(popoverTop, PADDING_FROM_VIEWPORT);\n popoverLeft = Math.min(popoverLeft, document.documentElement.clientWidth - PADDING_FROM_VIEWPORT - popoverDims.width);\n popoverLeft = Math.max(popoverLeft, PADDING_FROM_VIEWPORT);\n var origin_1 = rootEl.offsetParent.getBoundingClientRect();\n applyStyle(rootEl, {\n top: popoverTop - origin_1.top,\n left: popoverLeft - origin_1.left,\n });\n }\n };\n return Popover;\n}(BaseComponent));\n\nvar MorePopover = /** @class */ (function (_super) {\n __extends(MorePopover, _super);\n function MorePopover() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handleRootEl = function (rootEl) {\n _this.rootEl = rootEl;\n if (rootEl) {\n _this.context.registerInteractiveComponent(_this, {\n el: rootEl,\n useEventCenter: false,\n });\n }\n else {\n _this.context.unregisterInteractiveComponent(_this);\n }\n };\n return _this;\n }\n MorePopover.prototype.render = function () {\n var _a = this.context, options = _a.options, dateEnv = _a.dateEnv;\n var props = this.props;\n var startDate = props.startDate, todayRange = props.todayRange, dateProfile = props.dateProfile;\n var title = dateEnv.format(startDate, options.dayPopoverFormat);\n return (createElement(DayCellRoot, { date: startDate, dateProfile: dateProfile, todayRange: todayRange, elRef: this.handleRootEl }, function (rootElRef, dayClassNames, dataAttrs) { return (createElement(Popover, { elRef: rootElRef, id: props.id, title: title, extraClassNames: ['fc-more-popover'].concat(dayClassNames), extraAttrs: dataAttrs /* TODO: make these time-based when not whole-day? */, parentEl: props.parentEl, alignmentEl: props.alignmentEl, alignGridTop: props.alignGridTop, onClose: props.onClose },\n createElement(DayCellContent, { date: startDate, dateProfile: dateProfile, todayRange: todayRange }, function (innerElRef, innerContent) { return (innerContent &&\n createElement(\"div\", { className: \"fc-more-popover-misc\", ref: innerElRef }, innerContent)); }),\n props.children)); }));\n };\n MorePopover.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) {\n var _a = this, rootEl = _a.rootEl, props = _a.props;\n if (positionLeft >= 0 && positionLeft < elWidth &&\n positionTop >= 0 && positionTop < elHeight) {\n return {\n dateProfile: props.dateProfile,\n dateSpan: __assign({ allDay: true, range: {\n start: props.startDate,\n end: props.endDate,\n } }, props.extraDateSpan),\n dayEl: rootEl,\n rect: {\n left: 0,\n top: 0,\n right: elWidth,\n bottom: elHeight,\n },\n layer: 1, // important when comparing with hits from other components\n };\n }\n return null;\n };\n return MorePopover;\n}(DateComponent));\n\nvar MoreLinkRoot = /** @class */ (function (_super) {\n __extends(MoreLinkRoot, _super);\n function MoreLinkRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.linkElRef = createRef();\n _this.state = {\n isPopoverOpen: false,\n popoverId: getUniqueDomId(),\n };\n _this.handleClick = function (ev) {\n var _a = _this, props = _a.props, context = _a.context;\n var moreLinkClick = context.options.moreLinkClick;\n var date = computeRange(props).start;\n function buildPublicSeg(seg) {\n var _a = seg.eventRange, def = _a.def, instance = _a.instance, range = _a.range;\n return {\n event: new EventApi(context, def, instance),\n start: context.dateEnv.toDate(range.start),\n end: context.dateEnv.toDate(range.end),\n isStart: seg.isStart,\n isEnd: seg.isEnd,\n };\n }\n if (typeof moreLinkClick === 'function') {\n moreLinkClick = moreLinkClick({\n date: date,\n allDay: Boolean(props.allDayDate),\n allSegs: props.allSegs.map(buildPublicSeg),\n hiddenSegs: props.hiddenSegs.map(buildPublicSeg),\n jsEvent: ev,\n view: context.viewApi,\n });\n }\n if (!moreLinkClick || moreLinkClick === 'popover') {\n _this.setState({ isPopoverOpen: true });\n }\n else if (typeof moreLinkClick === 'string') { // a view name\n context.calendarApi.zoomTo(date, moreLinkClick);\n }\n };\n _this.handlePopoverClose = function () {\n _this.setState({ isPopoverOpen: false });\n };\n return _this;\n }\n MoreLinkRoot.prototype.render = function () {\n var _this = this;\n var _a = this, props = _a.props, state = _a.state;\n return (createElement(ViewContextType.Consumer, null, function (context) {\n var viewApi = context.viewApi, options = context.options, calendarApi = context.calendarApi;\n var moreLinkText = options.moreLinkText;\n var moreCnt = props.moreCnt;\n var range = computeRange(props);\n var text = typeof moreLinkText === 'function' // TODO: eventually use formatWithOrdinals\n ? moreLinkText.call(calendarApi, moreCnt)\n : \"+\" + moreCnt + \" \" + moreLinkText;\n var title = formatWithOrdinals(options.moreLinkHint, [moreCnt], text);\n var hookProps = {\n num: moreCnt,\n shortText: \"+\" + moreCnt,\n text: text,\n view: viewApi,\n };\n return (createElement(Fragment, null,\n Boolean(props.moreCnt) && (createElement(RenderHook, { elRef: _this.linkElRef, hookProps: hookProps, classNames: options.moreLinkClassNames, content: options.moreLinkContent, defaultContent: props.defaultContent || renderMoreLinkInner, didMount: options.moreLinkDidMount, willUnmount: options.moreLinkWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return props.children(rootElRef, ['fc-more-link'].concat(customClassNames), innerElRef, innerContent, _this.handleClick, title, state.isPopoverOpen, state.isPopoverOpen ? state.popoverId : ''); })),\n state.isPopoverOpen && (createElement(MorePopover, { id: state.popoverId, startDate: range.start, endDate: range.end, dateProfile: props.dateProfile, todayRange: props.todayRange, extraDateSpan: props.extraDateSpan, parentEl: _this.parentEl, alignmentEl: props.alignmentElRef.current, alignGridTop: props.alignGridTop, onClose: _this.handlePopoverClose }, props.popoverContent()))));\n }));\n };\n MoreLinkRoot.prototype.componentDidMount = function () {\n this.updateParentEl();\n };\n MoreLinkRoot.prototype.componentDidUpdate = function () {\n this.updateParentEl();\n };\n MoreLinkRoot.prototype.updateParentEl = function () {\n if (this.linkElRef.current) {\n this.parentEl = elementClosest(this.linkElRef.current, '.fc-view-harness');\n }\n };\n return MoreLinkRoot;\n}(BaseComponent));\nfunction renderMoreLinkInner(props) {\n return props.text;\n}\nfunction computeRange(props) {\n if (props.allDayDate) {\n return {\n start: props.allDayDate,\n end: addDays(props.allDayDate, 1),\n };\n }\n var hiddenSegs = props.hiddenSegs;\n return {\n start: computeEarliestSegStart(hiddenSegs),\n end: computeLatestSegEnd(hiddenSegs),\n };\n}\nfunction computeEarliestSegStart(segs) {\n return segs.reduce(pickEarliestStart).eventRange.range.start;\n}\nfunction pickEarliestStart(seg0, seg1) {\n return seg0.eventRange.range.start < seg1.eventRange.range.start ? seg0 : seg1;\n}\nfunction computeLatestSegEnd(segs) {\n return segs.reduce(pickLatestEnd).eventRange.range.end;\n}\nfunction pickLatestEnd(seg0, seg1) {\n return seg0.eventRange.range.end > seg1.eventRange.range.end ? seg0 : seg1;\n}\n\n// exports\n// --------------------------------------------------------------------------------------------------\nvar version = '5.11.5'; // important to type it, so .d.ts has generic string\n\nexport { BASE_OPTION_DEFAULTS, BASE_OPTION_REFINERS, BaseComponent, BgEvent, CalendarApi, CalendarContent, CalendarDataManager, CalendarDataProvider, CalendarRoot, ContentHook, CustomContentRenderContext, DateComponent, DateEnv, DateProfileGenerator, DayCellContent, DayCellRoot, DayHeader, DaySeriesModel, DayTableModel, DelayedRunner, ElementDragging, ElementScrollController, Emitter, EventApi, EventRoot, EventSourceApi, Interaction, MoreLinkRoot, MountHook, NamedTimeZoneImpl, NowIndicatorRoot, NowTimer, PositionCache, RefMap, RenderHook, ScrollController, ScrollResponder, Scroller, SegHierarchy, SimpleScrollGrid, Slicer, Splitter, StandardEvent, TableDateCell, TableDowCell, Theme, ViewApi, ViewContextType, ViewRoot, WeekNumberRoot, WindowScrollController, addDays, addDurations, addMs, addWeeks, allowContextMenu, allowSelection, applyMutationToEventStore, applyStyle, applyStyleProp, asCleanDays, asRoughMinutes, asRoughMs, asRoughSeconds, binarySearch, buildClassNameNormalizer, buildEntryKey, buildEventApis, buildEventRangeKey, buildHashFromArray, buildIsoString, buildNavLinkAttrs, buildSegCompareObj, buildSegTimeText, collectFromHash, combineEventUis, compareByFieldSpec, compareByFieldSpecs, compareNumbers, compareObjs, computeEarliestSegStart, computeEdges, computeFallbackHeaderFormat, computeHeightAndMargins, computeInnerRect, computeRect, computeSegDraggable, computeSegEndResizable, computeSegStartResizable, computeShrinkWidth, computeSmallestCellWidth, computeVisibleDayRange, config, constrainPoint, createAriaClickAttrs, createDuration, createEmptyEventStore, createEventInstance, createEventUi, createFormatter, createPlugin, diffDates, diffDayAndTime, diffDays, diffPoints, diffWeeks, diffWholeDays, diffWholeWeeks, disableCursor, elementClosest, elementMatches, enableCursor, eventTupleToStore, filterEventStoreDefs, filterHash, findDirectChildren, findElements, flexibleCompare, formatDate, formatDayString, formatIsoTimeString, formatRange, getAllowYScrolling, getCanVGrowWithinCell, getClippingParents, getDateMeta, getDayClassNames, getDefaultEventEnd, getElRoot, getElSeg, getEntrySpanEnd, getEventClassNames, getEventTargetViaRoot, getIsRtlScrollbarOnLeft, getRectCenter, getRelevantEvents, getScrollGridClassNames, getScrollbarWidths, getSectionClassNames, getSectionHasLiquidHeight, getSegAnchorAttrs, getSegMeta, getSlotClassNames, getStickyFooterScrollbar, getStickyHeaderDates, getUnequalProps, getUniqueDomId, globalLocales, globalPlugins, greatestDurationDenominator, groupIntersectingEntries, guid, hasBgRendering, hasShrinkWidth, identity, interactionSettingsStore, interactionSettingsToStore, intersectRanges, intersectRects, intersectSpans, isArraysEqual, isColPropsEqual, isDateSelectionValid, isDateSpansEqual, isInt, isInteractionValid, isMultiDayRange, isPropsEqual, isPropsValid, isValidDate, joinSpans, listenBySelector, mapHash, memoize, memoizeArraylike, memoizeHashlike, memoizeObjArg, mergeEventStores, multiplyDuration, padStart, parseBusinessHours, parseClassNames, parseDragMeta, parseEventDef, parseFieldSpecs, parse as parseMarker, pointInsideRect, preventContextMenu, preventDefault, preventSelection, rangeContainsMarker, rangeContainsRange, rangesEqual, rangesIntersect, refineEventDef, refineProps, removeElement, removeExact, renderChunkContent, renderFill, renderMicroColGroup, renderScrollShim, requestJson, sanitizeShrinkWidth, setElSeg, setRef, sliceEventStore, sliceEvents, sortEventSegs, startOfDay, translateRect, triggerDateSelect, unpromisify, version, whenTransitionDone, wholeDivideDurations };\n//# sourceMappingURL=main.js.map\n","/*!\nFullCalendar v5.11.5\nDocs & License: https://fullcalendar.io/\n(c) 2022 Adam Shaw\n*/\nimport './vdom.js';\nimport { __extends, __assign } from 'tslib';\nimport { flushSync, render, createElement, CalendarRoot, CustomContentRenderContext, CalendarContent, unmountComponentAtNode, DelayedRunner, CalendarDataManager, isArraysEqual, applyStyleProp, CalendarApi } from '@fullcalendar/common';\nexport * from '@fullcalendar/common';\n\nvar Calendar = /** @class */ (function (_super) {\n __extends(Calendar, _super);\n function Calendar(el, optionOverrides) {\n if (optionOverrides === void 0) { optionOverrides = {}; }\n var _this = _super.call(this) || this;\n _this.isRendering = false;\n _this.isRendered = false;\n _this.currentClassNames = [];\n _this.customContentRenderId = 0; // will affect custom generated classNames?\n _this.handleAction = function (action) {\n // actions we know we want to render immediately\n switch (action.type) {\n case 'SET_EVENT_DRAG':\n case 'SET_EVENT_RESIZE':\n _this.renderRunner.tryDrain();\n }\n };\n _this.handleData = function (data) {\n _this.currentData = data;\n _this.renderRunner.request(data.calendarOptions.rerenderDelay);\n };\n _this.handleRenderRequest = function () {\n if (_this.isRendering) {\n _this.isRendered = true;\n var currentData_1 = _this.currentData;\n flushSync(function () {\n render(createElement(CalendarRoot, { options: currentData_1.calendarOptions, theme: currentData_1.theme, emitter: currentData_1.emitter }, function (classNames, height, isHeightAuto, forPrint) {\n _this.setClassNames(classNames);\n _this.setHeight(height);\n return (createElement(CustomContentRenderContext.Provider, { value: _this.customContentRenderId },\n createElement(CalendarContent, __assign({ isHeightAuto: isHeightAuto, forPrint: forPrint }, currentData_1))));\n }), _this.el);\n });\n }\n else if (_this.isRendered) {\n _this.isRendered = false;\n unmountComponentAtNode(_this.el);\n _this.setClassNames([]);\n _this.setHeight('');\n }\n };\n _this.el = el;\n _this.renderRunner = new DelayedRunner(_this.handleRenderRequest);\n new CalendarDataManager({\n optionOverrides: optionOverrides,\n calendarApi: _this,\n onAction: _this.handleAction,\n onData: _this.handleData,\n });\n return _this;\n }\n Object.defineProperty(Calendar.prototype, \"view\", {\n get: function () { return this.currentData.viewApi; } // for public API\n ,\n enumerable: false,\n configurable: true\n });\n Calendar.prototype.render = function () {\n var wasRendering = this.isRendering;\n if (!wasRendering) {\n this.isRendering = true;\n }\n else {\n this.customContentRenderId += 1;\n }\n this.renderRunner.request();\n if (wasRendering) {\n this.updateSize();\n }\n };\n Calendar.prototype.destroy = function () {\n if (this.isRendering) {\n this.isRendering = false;\n this.renderRunner.request();\n }\n };\n Calendar.prototype.updateSize = function () {\n var _this = this;\n flushSync(function () {\n _super.prototype.updateSize.call(_this);\n });\n };\n Calendar.prototype.batchRendering = function (func) {\n this.renderRunner.pause('batchRendering');\n func();\n this.renderRunner.resume('batchRendering');\n };\n Calendar.prototype.pauseRendering = function () {\n this.renderRunner.pause('pauseRendering');\n };\n Calendar.prototype.resumeRendering = function () {\n this.renderRunner.resume('pauseRendering', true);\n };\n Calendar.prototype.resetOptions = function (optionOverrides, append) {\n this.currentDataManager.resetOptions(optionOverrides, append);\n };\n Calendar.prototype.setClassNames = function (classNames) {\n if (!isArraysEqual(classNames, this.currentClassNames)) {\n var classList = this.el.classList;\n for (var _i = 0, _a = this.currentClassNames; _i < _a.length; _i++) {\n var className = _a[_i];\n classList.remove(className);\n }\n for (var _b = 0, classNames_1 = classNames; _b < classNames_1.length; _b++) {\n var className = classNames_1[_b];\n classList.add(className);\n }\n this.currentClassNames = classNames;\n }\n };\n Calendar.prototype.setHeight = function (height) {\n applyStyleProp(this.el, 'height', height);\n };\n return Calendar;\n}(CalendarApi));\n\nexport { Calendar };\n//# sourceMappingURL=main.js.map\n","export var OPTION_IS_COMPLEX = {\n headerToolbar: true,\n footerToolbar: true,\n events: true,\n eventSources: true,\n resources: true\n};\n//# sourceMappingURL=options.js.map","// TODO: add types!\nimport { __assign } from \"tslib\";\n/*\nworks with objects and arrays\n*/\nexport function shallowCopy(val) {\n if (typeof val === 'object') {\n if (Array.isArray(val)) {\n val = Array.prototype.slice.call(val);\n }\n else if (val) { // non-null\n val = __assign({}, val);\n }\n }\n return val;\n}\nexport function mapHash(input, func) {\n var output = {};\n for (var key in input) {\n if (input.hasOwnProperty(key)) {\n output[key] = func(input[key], key);\n }\n }\n return output;\n}\n//# sourceMappingURL=utils.js.map","import Vue from 'vue';\nimport { createPlugin } from '@fullcalendar/core';\n/*\nwrap it in an object with a `vue` key, which the custom content-type handler system will look for\n*/\nexport function wrapVDomGenerator(vDomGenerator) {\n return function (props) {\n return { vue: vDomGenerator(props) };\n };\n}\nexport function createVueContentTypePlugin(parent) {\n return createPlugin({\n contentTypeHandlers: {\n vue: function () { return buildVDomHandler(parent); }, // looks for the `vue` key\n }\n });\n}\nfunction buildVDomHandler(parent) {\n var currentEl;\n var v; // the Vue instance\n function render(el, vDomContent) {\n if (currentEl !== el) {\n if (currentEl && v) { // if changing elements, recreate the vue\n v.$destroy();\n }\n currentEl = el;\n }\n if (!v) {\n v = initVue(vDomContent, parent);\n // vue's mount method *replaces* the given element. create an artificial inner el\n var innerEl = document.createElement('span');\n el.appendChild(innerEl);\n v.$mount(innerEl);\n }\n else {\n v.content = vDomContent;\n }\n }\n function destroy() {\n if (v) { // needed?\n v.$destroy();\n }\n }\n return { render: render, destroy: destroy };\n}\nfunction initVue(initialContent, parent) {\n return new Vue({\n parent: parent,\n data: {\n content: initialContent,\n },\n render: function (h) {\n var content = this.content;\n // the slot result can be an array, but the returned value of a vue component's\n // render method must be a single node.\n if (content.length === 1) {\n return content[0];\n }\n else {\n return h('span', {}, content);\n }\n }\n });\n}\n//# sourceMappingURL=custom-content-type.js.map","import { __assign } from \"tslib\";\nimport Vue from 'vue';\nimport { Calendar } from '@fullcalendar/core';\nimport { OPTION_IS_COMPLEX } from './options';\nimport { shallowCopy, mapHash } from './utils';\nimport { wrapVDomGenerator, createVueContentTypePlugin } from './custom-content-type';\nvar FullCalendar = Vue.extend({\n props: {\n options: Object\n },\n data: initData,\n render: function (createElement) {\n return createElement('div', {\n // when renderId is changed, Vue will trigger a real-DOM async rerender, calling beforeUpdate/updated\n attrs: { 'data-fc-render-id': this.renderId }\n });\n },\n mounted: function () {\n var internal = this.$options;\n internal.scopedSlotOptions = mapHash(this.$scopedSlots, wrapVDomGenerator); // needed for buildOptions\n var calendar = new Calendar(this.$el, this.buildOptions(this.options, this));\n internal.calendar = calendar;\n calendar.render();\n },\n methods: {\n getApi: getApi,\n buildOptions: buildOptions,\n },\n beforeUpdate: function () {\n this.getApi().resumeRendering(); // the watcher handlers paused it\n },\n beforeDestroy: function () {\n this.getApi().destroy();\n },\n watch: buildWatchers()\n});\nfunction initData() {\n return {\n renderId: 0\n };\n}\nfunction buildOptions(suppliedOptions, parent) {\n var internal = this.$options;\n suppliedOptions = suppliedOptions || {};\n return __assign(__assign(__assign({}, internal.scopedSlotOptions), suppliedOptions), { plugins: (suppliedOptions.plugins || []).concat([\n createVueContentTypePlugin(parent)\n ]) });\n}\nfunction getApi() {\n var internal = this.$options;\n return internal.calendar;\n}\nfunction buildWatchers() {\n var watchers = {\n // watches changes of ALL options and their nested objects,\n // but this is only a means to be notified of top-level non-complex options changes.\n options: {\n deep: true,\n handler: function (options) {\n var calendar = this.getApi();\n calendar.pauseRendering();\n calendar.resetOptions(this.buildOptions(options, this));\n this.renderId++; // will queue a rerender\n }\n }\n };\n var _loop_1 = function (complexOptionName) {\n // handlers called when nested objects change\n watchers[\"options.\" + complexOptionName] = {\n deep: true,\n handler: function (val) {\n var _a;\n // unfortunately the handler is called with undefined if new props were set, but the complex one wasn't ever set\n if (val !== undefined) {\n var calendar = this.getApi();\n calendar.pauseRendering();\n calendar.resetOptions((_a = {},\n // the only reason we shallow-copy is to trick FC into knowing there's a nested change.\n // TODO: future versions of FC will more gracefully handle event option-changes that are same-reference.\n _a[complexOptionName] = shallowCopy(val),\n _a), true);\n this.renderId++; // will queue a rerender\n }\n }\n };\n };\n for (var complexOptionName in OPTION_IS_COMPLEX) {\n _loop_1(complexOptionName);\n }\n return watchers;\n}\nexport default FullCalendar;\n//# sourceMappingURL=FullCalendar.js.map","import FullCalendarComponent from './FullCalendar';\n/*\nRegisters the component globally if appropriate.\nThis modules exposes the component AND an install function.\n\nDerived from:\nhttps://vuejs.org/v2/cookbook/packaging-sfc-for-npm.html\n*/\nvar installed = false;\n// declare install function executed by Vue.use()\nexport function install(Vue) {\n if (!installed) {\n installed = true;\n Vue.component('FullCalendar', FullCalendarComponent);\n }\n}\n// detect a globally availble version of Vue (eg. in browser via \n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Calendars.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Calendars.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Calendars.vue?vue&type=template&id=6909e315&\"\nimport script from \"./Calendars.vue?vue&type=script&lang=js&\"\nexport * from \"./Calendars.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./calendar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./calendar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./calendar.vue?vue&type=template&id=2b76cf4d&\"\nimport script from \"./calendar.vue?vue&type=script&lang=js&\"\nexport * from \"./calendar.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import axios from \"axios\";\n// Define the URL of your Firebase Cloud Function\nconst firebaseFunctionURL =\n \"https://us-central1-law-office-flutterflow.cloudfunctions.net/app/consultants\";\nconst firebaseFunctionURL1 =\n \"https://us-central1-law-office-flutterflow.cloudfunctions.net/app/timePeriods\";\nimport \"firebase/firestore\";\nconst agentID = JSON.parse(localStorage.getItem(\"auth.currentUser\"));\nconsole.log(agentID);\n\nimport firebase from \"firebase/app\";\nimport { pushNotification, create } from \"./notification\";\nimport moment from \"moment\";\nconst db = firebase.firestore();\nconst collectionRef = db.collection(\"CosultantRequest\");\nconst users = db.collection(\"users\");\n\nexport function GetAllConsultant() {\n return new Promise((resolve, reject) => {\n const data = [];\n\n collectionRef\n .get()\n .then(async (querySnapshot) => {\n // Create an array of promises for fetching client data\n const promises = querySnapshot.docs.map(async (doc) => {\n const consultant = doc.data();\n const clientId = consultant?.clientID?.id;\n let clientName = \"\";\n\n if (clientId) {\n try {\n const clientDoc = await users.doc(clientId).get();\n if (clientDoc.exists) {\n clientName = clientDoc.data().display_name;\n } else {\n console.log(\"Client not found\");\n }\n } catch (error) {\n console.error(\"Error fetching client data:\", error);\n }\n }\n\n data.push({\n id: doc.id,\n start: nanosecondsToISO8601(doc.data().BookingStart.seconds),\n end: nanosecondsToISO8601(doc.data().BookingEnd.seconds),\n clientName,\n clientId,\n status: consultant.isPaid,\n ...consultant,\n });\n });\n\n // Wait for all client data fetches to complete\n await Promise.all(promises);\n\n resolve(data);\n })\n .catch((error) => {\n console.error(\"Error getting documents:\", error);\n reject(error);\n });\n });\n}\n\nexport async function GetConsultantById(id) {\n try {\n let doc = await collectionRef.doc(id).get();\n if (!doc.exists) {\n const findByFFUID = await collectionRef\n .where(\"FFUID\", \"==\", +id)\n .limit(1)\n .get();\n findByFFUID.forEach((el) => {\n doc = el;\n });\n }\n if (doc.exists) {\n const consultantData = doc.data();\n\n const clientID = consultantData?.clientID?.id;\n let clientData = \"\";\n\n try {\n const clientDoc = await users.doc(clientID).get();\n\n if (clientDoc.exists) {\n clientData = clientDoc.data();\n } else {\n console.log(\"Client not found\");\n }\n } catch (error) {\n console.error(\"Error fetching client data:\", error);\n }\n\n const data = {\n id: doc.id,\n // createdAt: nanosecondsToISO8601(consultantData.created_at.seconds),\n start: doc.data().BookingStart,\n end: doc.data().BookingEnd,\n consultantData,\n clientData,\n };\n console.log(data);\n return data;\n } else {\n console.log(\"consultant not found\");\n throw new Error(\"consultant not found\");\n }\n } catch (error) {\n console.error(\"Error getting consultant document:\", error);\n throw error;\n }\n}\nexport async function updateDocumentData(docId, updatedData, clientID) {\n console.log(docId, updatedData, clientID);\n const docRef = collectionRef.doc(docId);\n // console.log(updatedData);\n try {\n await docRef.update(updatedData);\n console.log(updatedData);\n const body = `تم تحديث موعد الاستشارة الخاصة بك الي ${moment(\n updatedData.startDate\n ).format(\"YYYY-MM-DD HH:mm\")}`;\n const title = \"تم تحديث موعد استشارتك\";\n pushNotification(clientID, body, title);\n create(clientID, agentID, title, body, \"consultant\", docId);\n return true;\n } catch (error) {\n console.error(\"Error updating document: \", error);\n return false;\n }\n}\nexport async function setIsPaid(uuid) {\n try {\n await axios.get(\n `https://us-central1-law-office-flutterflow.cloudfunctions.net/app/consultants/paid/${uuid}`\n );\n return true;\n } catch (err) {\n return false;\n }\n}\nexport function AddBusyTime(BookingStart, BookingEnd, title) {\n return new Promise((resolve, reject) => {\n axios\n .post(`${firebaseFunctionURL}/busy`, {\n BookingStart,\n BookingEnd,\n title,\n })\n .then((res) => {\n // console.log(res);\n resolve(res.data);\n })\n .catch((err) => {\n console.error(\"Error getting agents:\", err);\n\n reject(err);\n });\n });\n}\nexport function GetAllPrices() {\n return new Promise((resolve, reject) => {\n axios\n .get(`${firebaseFunctionURL1}`)\n .then((res) => {\n // console.log(res);\n resolve(res.data.timePeriods);\n })\n .catch((err) => {\n console.error(\"Error getting agents:\", err);\n\n reject(err);\n });\n });\n}\nexport function EditPrice(id, data) {\n return new Promise((resolve, reject) => {\n axios\n .put(`${firebaseFunctionURL1}/${id}`, data)\n .then((res) => {\n // console.log(res);\n resolve(res);\n })\n .catch((err) => {\n console.error(\"Error getting agents:\", err);\n\n reject(err);\n });\n });\n}\nexport function AddPrice(data) {\n return new Promise((resolve, reject) => {\n axios\n .post(`${firebaseFunctionURL1}`, data)\n .then((res) => {\n // console.log(res);\n resolve(res);\n })\n .catch((err) => {\n console.error(\"Error adding price:\", err);\n\n reject(err);\n });\n });\n}\nexport function DeletePrice(id) {\n return new Promise((resolve, reject) => {\n axios\n .delete(`${firebaseFunctionURL1}/${id}`)\n .then((res) => {\n // console.log(res);\n resolve(res);\n })\n .catch((err) => {\n console.error(\"Error getting agents:\", err);\n\n reject(err);\n });\n });\n}\nexport function nanosecondsToISO8601(seconds) {\n const milliseconds = seconds * 1000; // Convert nanoseconds to milliseconds\n const date = new Date(milliseconds);\n return date;\n}\n"],"sourceRoot":""}
/ elements with colspans.\n SOLUTION: making individual