{"version":3,"sources":["webpack:///./src/@core/directives/animations.js","webpack:///./src/styles/scss/participantsScoped.scss?9ee4","webpack:///./src/styles/scss/trainerCalendar.scss?465d","webpack:///./src/views/facility/calendar/components/AppointmentSheduleMultiNew.vue?e244","webpack:///./src/views/facility/calendar/components/AppointmentSheduleNew.vue?fe80","webpack:///./node_modules/vue-form-wizard/dist/vue-form-wizard.js","webpack:///./node_modules/@fullcalendar/daygrid/main.js","webpack:///./node_modules/@fullcalendar/timegrid/main.js","webpack:///./src/views/facility/calendar/AppointmentCalendar.vue?4954","webpack:///./src/views/facility/calendar/components/AppointmentSheduleNew.vue?a871","webpack:///src/views/facility/calendar/components/AppointmentSheduleNew.vue","webpack:///./src/views/facility/calendar/components/AppointmentSheduleNew.vue?69d8","webpack:///./src/views/facility/calendar/components/AppointmentSheduleNew.vue?cd32","webpack:///./src/views/facility/calendar/components/AppointmentSheduleEdit.vue?1497","webpack:///src/views/facility/calendar/components/AppointmentSheduleEdit.vue","webpack:///./src/views/facility/calendar/components/AppointmentSheduleEdit.vue?1afe","webpack:///./src/views/facility/calendar/components/AppointmentSheduleEdit.vue?2569","webpack:///./src/views/facility/calendar/components/AppointmentSheduleMultiNew.vue?214b","webpack:///src/views/facility/calendar/components/AppointmentSheduleMultiNew.vue","webpack:///./src/views/facility/calendar/components/AppointmentSheduleMultiNew.vue?0d66","webpack:///./src/views/facility/calendar/components/AppointmentSheduleMultiNew.vue?078c","webpack:///src/views/facility/calendar/AppointmentCalendar.vue","webpack:///./src/views/facility/calendar/AppointmentCalendar.vue?412e","webpack:///./src/views/facility/calendar/AppointmentCalendar.vue","webpack:///./node_modules/flatpickr/dist/esm/types/options.js","webpack:///./node_modules/flatpickr/dist/esm/l10n/default.js","webpack:///./node_modules/flatpickr/dist/esm/utils/index.js","webpack:///./node_modules/flatpickr/dist/esm/utils/dom.js","webpack:///./node_modules/flatpickr/dist/esm/utils/formatting.js","webpack:///./node_modules/flatpickr/dist/esm/utils/dates.js","webpack:///./node_modules/flatpickr/dist/esm/index.js","webpack:///./node_modules/flatpickr/dist/esm/utils/polyfills.js","webpack:///./src/views/facility/calendar/components/AppointmentSheduleEdit.vue?a711","webpack:///./src/views/facility/calendar/components/AppointmentSheduleMultiNew.vue?a5dc","webpack:///./node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@fullcalendar/interaction/main.js","webpack:///./src/styles/scss/participants.scss?1962","webpack:///./src/views/facility/calendar/ParticipantsForNewModal.vue?8ff3","webpack:///src/views/facility/calendar/ParticipantsForNewModal.vue","webpack:///./src/views/facility/calendar/ParticipantsForNewModal.vue?221b","webpack:///./src/views/facility/calendar/ParticipantsForNewModal.vue","webpack:///./node_modules/vue-flatpickr-component/dist/vue-flatpickr.min.js","webpack:///./src/models/timeScala.js","webpack:///./node_modules/@fullcalendar/common/vdom.js","webpack:///./node_modules/@fullcalendar/common/main.js","webpack:///./node_modules/preact/dist/preact.module.js","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/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/flatpickr/dist/l10n/tr.js"],"names":["heightFade","inserted","el","binding","height","offsetHeight","modifiers","appear","style","overflow","maxHeight","opacity","setTimeout","unbind","undefined","t","e","module","exports","self","n","a","i","l","call","m","c","d","o","Object","defineProperty","configurable","enumerable","get","__esModule","default","prototype","hasOwnProperty","p","s","r","u","options","render","staticRenderFns","_compiled","functional","_scopeId","this","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","b","beforeCreate","_injectStyles","concat","esModule","name","components","WizardButton","WizardStep","props","title","type","String","subtitle","nextButtonText","backButtonText","finishButtonText","hideButtons","Boolean","validateOnBack","color","errorColor","shape","layout","stepsClasses","Array","stepSize","validator","indexOf","transition","startIndex","Number","provide","addTab","removeTab","data","activeTabIndex","currentPercentage","maxStep","loading","tabs","computed","slotProps","nextTab","prevTab","isLastStep","fillButtonStyle","tabCount","length","isVertical","displayPrevButton","stepPercentage","progressBarStyle","backgroundColor","width","progress","borderColor","methods","emitTabChange","$emit","$slots","tabId","replace","splice","changeTab","reset","forEach","checked","navigateToTab","activateAll","beforeTabChange","afterTabChange","setValidationError","focusNextTab","focusPrevTab","setLoading","validationError","validateBeforeChange","then","executeBeforeChange","catch","beforeChange","afterChange","arguments","active","activateTabAndCheckStep","tryChangeRoute","$router","route","push","checkRouteChange","find","deactivateTabs","activateTab","initializeTabs","window","console","warn","mounted","watch","tab","index","iconActiveStyle","stepCheckedStyle","errorStyle","stepTitleStyle","isStepSquare","isTabShape","icon","Function","additionalInfo","inject","$parent","destroyed","$el","parentNode","removeChild","value","install","component","Vue","use","$createElement","_self","_c","staticClass","attrs","tabindex","_t","class","disabled","href","square_shape","tab_shape","role","id","mode","_v","_s","_e","has_error","document","activeElement","findIndex","getElementById","focus","vertical","on","keyup","_k","keyCode","key","button","_l","nativeOn","click","directives","rawName","expression","TableView","_super","_this","apply","headerElRef","renderSimpleLayout","headerRowContent","bodyContent","_a","context","sections","stickyHeaderDates","isSticky","chunk","elRef","tableClassName","rowContent","liquid","content","viewSpec","rootElRef","classNames","ref","className","join","isHeightAuto","forPrint","collapsibleWidth","cols","renderHScrollLayout","colCnt","dayMinWidth","ScrollGrid","pluginHooks","scrollGridImpl","Error","stickyFooterScrollbar","chunks","colGroups","span","minWidth","splitSegsByRow","segs","rowCnt","byRow","_i","segs_1","seg","row","splitSegsByFirstCol","byCol","segs_2","firstCol","splitInteractionByRow","ui","affectedInstances","isEvent","TableCellTop","navLinkAttrs","navLinks","date","tabIndex","dateProfile","todayRange","showDayNumber","extraHookProps","defaultContent","renderTopInner","innerElRef","innerContent","forceDayTop","dayNumberText","DEFAULT_TABLE_EVENT_TIME_FORMAT","hour","minute","omitZeroMinute","meridiem","hasListItemDisplay","display","eventRange","def","allDay","lastCol","isStart","isEnd","TableBlockEvent","extraClassNames","defaultTimeFormat","defaultDisplayEventEnd","disableResizing","TableListItemEvent","timeFormat","eventTimeFormat","timeText","renderInnerContent","isDragging","isResizing","isDateSelecting","isSelected","isPast","isFuture","isToday","getSegAnchorAttrs","innerProps","event","url","TableCellMoreLink","compileSegs","singlePlacements","allSegs","invisibleSegs","allDayDate","moreCnt","hiddenSegs","alignmentElRef","alignGridTop","extraDateSpan","popoverContent","isForcedInvisible","eventDrag","eventResize","map","instanceId","instance","visibility","eventSelection","handleClick","onClick","singlePlacements_1","placement","isVisible","DEFAULT_WEEK_NUM_FORMAT","week","TableCell","handleRootEl","dayElRef","dayClassNames","rootDataAttrs","isDisabled","extraDataAttrs","showWeekNumber","defaultFormat","weekElRef","weekClassNames","fgContentElRef","fgContent","marginTop","moreMarginTop","bgContent","computeFgSegPlacement","dayMaxEvents","dayMaxEventRows","strictOrder","eventInstanceHeights","maxContentHeight","cells","hierarchy","DayGridSegHierarchy","allowReslicing","maxCoord","hiddenConsumes","maxStackCnt","segInputs","unknownHeightSegs","eventHeight","thickness","start","end","hiddenEntries","addSegs","segRects","toRects","placeRects","singleColPlacements","multiColPlacements","leftoverMargins","moreCnts","moreMarginTops","unknownHeightSegs_1","isAbsolute","absoluteTop","col","resliceSeg","_b","hiddenEntries_1","hiddenEntry","hiddenSpan","allRects","rectsByEachCol","groupRectsByEachCol","rects","currentHeight","currentMarginTop","rects_1","rect","levelCoord","multiPlacements","rects_2","isFirstCol","rects_3","spanStart","spanEnd","origRange","range","slicedRange","durationEditable","valueOf","forceHidden","entriesByLevel","excludeHidden","entry","level","filter","handleInvalidInsertion","insertion","touchingEntry","touchingLevel","touchingLateral","touchingEntryId","placeholderEntry","placeholderEntryId","splitEntry","TableRow","cellElRefs","frameElRefs","fgElRefs","segHarnessRefs","state","framePositions","businessHoursByCol","businessHourSegs","bgEventSegsByCol","bgEventSegs","highlightSegsByCol","getHighlightSegs","mirrorSegsByCol","getMirrorSegs","fgEventSegs","eventOrder","eventOrderStrict","renderIntro","cell","normalFgNodes","renderFgSegs","mirrorFgNodes","buildMirrorPlacements","createRef","showDayNumbers","showWeekNumbers","renderFillSegs","componentDidMount","updateSizing","componentDidUpdate","prevProps","prevState","currentProps","dateSelectionSegs","segPlacements","isMirror","nodes","segPlacements_1","left","right","isRtl","lefts","rights","top","fillType","leftRightCss","isExternalSizingChange","clientWidth","frameEls","currentMap","originEl","current","setState","limitByContentHeight","queryEventInstanceHeights","computeMaxContentHeight","segElMap","Math","round","getBoundingClientRect","split","max","firstKey","cellEl","fcContainerEl","bottom","getCellEls","elMap","mirrorSegs","colPlacements","topsByInstanceId","buildAbsoluteTopHash","colPlacements_1","placements","placements_1","addStateEquality","Table","splitBusinessHourSegs","splitBgEventSegs","splitFgEventSegs","splitDateSelectionSegs","splitEventDrag","splitEventResize","rowRefs","rootEl","registerInteractiveComponent","isHitComboAllowed","unregisterInteractiveComponent","expandRows","businessHourSegsByRow","bgEventSegsByRow","fgEventSegsByRow","dateSelectionSegsByRow","eventDragByRow","eventResizeByRow","limitViaBalanced","tableMinWidth","unit","nowDate","clientHeight","colGroupNode","toISOString","renderRowIntro","isSegAllDay","prepareHits","rowPositions","collect","rowObj","colPositions","queryHit","positionLeft","positionTop","leftToIndex","topToIndex","dateSpan","getCellRange","dayEl","getCellEl","tops","bottoms","layer","DayTableSlicer","forceDayIfListItem","sliceRange","dateRange","dayTableModel","DayTable","slicer","tableRef","sliceProps","nextDayThreshold","headerAlignElRef","DayTableView","buildDayTableModel","headerRef","dateProfileGenerator","headerContent","dayHeaders","dates","headerDates","datesRepDistinctDays","contentArg","businessHours","dateSelection","eventStore","eventUiBases","tableColGroupNode","weekNumbers","daySeries","renderRange","test","currentRangeUnit","TableDateProfileGenerator","buildRenderRange","currentRange","isRangeAllDay","endOfWeek","dateEnv","startOfWeek","monthMode","fixedWeekCount","ceil","main","initialView","views","dayGrid","dateProfileGeneratorClass","dayGridDay","duration","days","dayGridWeek","weeks","dayGridMonth","months","AllDaySplitter","getKeyInfo","timed","getKeysForDateSpan","getKeysForEventDef","eventDef","DEFAULT_SLAT_LABEL_FORMAT","TimeColsAxisCell","isLabeled","Consumer","isoTimeStr","viewApi","labelFormat","slotLabelFormat","isArray","hookProps","time","toDate","view","text","format","slotLabelClassNames","slotLabelContent","didMount","slotLabelDidMount","willUnmount","slotLabelWillUnmount","customClassNames","TimeBodyAxis","slatMetas","slatMeta","AUTO_ALL_DAY_MAX_EVENT_ROWS","TimeColsView","allDaySplitter","scrollerElRef","slatCoords","handleScrollTopRequest","scrollTop","scrollerEl","renderHeadAxis","rowKey","frameHeight","dayCnt","renderTableRowAxis","rowHeight","allDayText","allDayClassNames","allDayContent","renderAllDayInner","allDayDidMount","allDayWillUnmount","handleSlatCoords","timeContent","outerContent","theme","getClass","syncRowHeights","arg","rowSyncHeights","colSpan","isNowIndicator","nowIndicator","nowIndicatorTop","safeComputeTop","isAxis","getAllDayMaxEventProps","TimeColsSlatsCoords","positions","slotDuration","startOfDayDate","timeMs","slotMinTime","slotMaxTime","computeTimeTop","computeDateTop","when","slatIndex","slatRemainder","len","els","slatCoverage","milliseconds","min","floor","getHeight","TimeColsSlatsBody","slatElRefs","axis","slotLaneClassNames","slotLaneContent","slotLaneDidMount","slotLaneWillUnmount","TimeColsSlats","minHeight","componentWillUnmount","onCoords","collectSlatEls","splitSegsByCol","segsByCol","splitInteractionByCol","TimeColMoreLink","renderMoreLinkInner","renderPlainFgSegs","shortText","buildPositioning","hiddenGroups","web","buildWeb","stretchWeb","webToRects","buildNode","cacheable","lateral","siblingRange","findNextLevelSegs","nextLevelRes","buildNodes","nextLevelNodes","lateralStart","lateralEnd","pairs","sort","cmpDescPressures","extractNode","subjectLevel","subjectLateral","levelCoords","subjectEntry","afterSubject","levelCnt","entries","searchIndex","topLevelNodes","totalThickness","stretchNode","node","startCoord","prevThickness","endCoord","allThickness","thicknessFraction","newChildren","nextLevelNodes_1","childNode","res","newThickness","processNode","stackDepth","stackForward","processNodes","nodes_1","keyFunc","workFunc","cache","args","computeSegVCoords","colDate","eventMinHeight","vcoords","computeFgSegPlacements","segVCoords","eventMaxStack","dumbSegs","segRects_1","segRect","dumbSegs_1","dumbSeg","DEFAULT_TIME_FORMAT","TimeColEvent","isShort","TimeColMisc","TimeCol","sortEventSegs","isSelectMirror","selectMirror","interactionAffectedInstances","sortedFgSegs","dataAttrs","renderNowIndicator","nowIndicatorSegs","segIsInvisible","renderPositionedFgSegs","eventShortHeight","renderHiddenGroups","segPlacement","vStyle","computeSegVStyle","hStyle","computeSegHStyle","isInset","hiddenGroup","positionCss","compileSegsFromEntries","children","segHCoords","shouldOverlap","slotEventOverlap","nearCoord","farCoord","zIndex","hiddenInstances","segEntries","segEntry","TimeColsContent","splitNowIndicatorSegs","nowIndicatorSegsByRow","updateCoords","onColCoords","collectCellEls","TimeCols","processSlotOptions","handleScrollRequest","request","onScrollTopRequest","top_1","handleColCoords","colCoords","onSlatCoords","scrollResponder","createScrollResponder","update","detach","snapDuration","snapsPerSlot","colIndex","slatTop","slatHeight","partial","localSnapIndex","snapIndex","dayDate","snapDurationOverride","DayTimeColsSlicer","dayRanges","segRange","DayTimeCols","buildDayRanges","timeColsRef","sliceNowDate","ranges","STOCK_SUB_DURATIONS","hours","minutes","seconds","buildSlatMetas","explicitLabelInterval","dayStart","Date","slatTime","slatIterator","labelInterval","computeLabelInterval","metas","slotsPerLabel","DayTimeColsView","buildTimeColsModel","splitProps","slotLabelInterval","hasAttachedAxis","hasDetachedAxis","allDaySlot","timeGridContent","OPTION_REFINERS","optionRefiners","timeGrid","usesMinMaxTime","timeGridDay","timeGridWeek","_vm","_h","staticStyle","$t","optionsTrainer","$event","onChangeTrainer","model","callback","$$v","trainer","optionsActivity","activity","eventCount","calendarOptions","reLoadCalendar","pushNotification","modalTitle","scopedSlots","_u","fn","proxy","$v","trainer_id","$touch","slot","isSubmit","block_time","startTimeScala","item","appointment","$set","start_time","required","endTimeScala","end_time","start_date","end_date","currentPage","totalRows","perPage","ActivityParticipants","ActivityParticipantColumns","onFiltered","removeCustomer","$i18n","locale","filter2","currentPage2","totalRows2","perPage2","InActivityParticipants","filterOn2","onFiltered2","addCustomer","optionsRoom","room","is_data_load","cancel","appointmentCreate","spinMessage","ParticipantsForNewModal","BFormInput","BFormCheckbox","BFormGroup","BFormCheckboxGroup","BRow","BCol","BButton","BCardText","vSelect","BMediaAside","BAvatar","BCollapse","VBToggle","BTabs","BTab","BPopover","VBPopover","BFormTextarea","BModal","BAlert","BBadge","BTable","BCard","BPagination","Ripple","isAddNewLicenceSidebarActive","show","room_id","room_name","is_active","activity_id","activity_name","activity_time","activity_type_id","customer","person_id","full_name","product","trainer_product_id","repeatCount","selectedDays","instructorConfirmBaseData","distributor_person_list","company_branch_persons_data","productListByCustomer","company_branch_id","definition","trainer_name","capacity","time_table_id","delayMinute","isPT","participantsList","tableColumns","sortDesc","sortBy","perPageOptions","filterOn","isSortDirDesc2","sortDesc2","sortBy2","perPageOptions2","selectedActivityTime","dateFormat","minDate","maxDate","configEnd","setup","val","filteredItems","hideModal","cancelAddParticipants","$refs","hide","showPopover","$root","hidePopover","pushNotifications","status","getRoomList","$database","RoomService","get_room_company_branch","is_success","appointmentSheduleNew","AppointmentService","appointment_shedule_new_request","IsSuccess","Result","Trainers","_optionsTrainer","TrainerId","FirstName","Rooms","_room","RoomId","RoomName","inActivityParticipants","InActivityParticipant","time_table_detail_id","ell","TimeTableId","PersonId","customer_name","CustomerName","customer_product_sales_id","TrainerProductId","showModal","$store","app","TrainerService","list_trainer_activities","ActivityId","Name","validations","created","getters","is_trainer_id","is_activity_id","group_count","is_group","x","deleteAppointment","appointmentUpdate","BSpinner","BCardBody","BBordered","BInputGroup","BInputGroupAppend","label","thClass","tdClass","sortable","sendToParentData","appointmentSheduleEdit","toggleModal","toggle","$swal","showCancelButton","confirmButtonText","cancelButtonText","customClass","confirmButton","cancelButton","buttonsStyling","result","configStart","createMultipleAppointments","flatPickr","selectedPeriod","in_activity_participants","startModal","moment","NewModalAppointment","EditModalAppointment","AppointmentSheduleMultiNew","BFormSelect","thisFilteredTempData","appModalData","firstDay","contentHeight","html","plugins","headerToolbar","center","loaded","editable","selectable","initialEvents","handleInitialEvents","select","handleDateSelect","selectAllow","handleDateSelectAllow","selectOverlap","rendering","customButtons","appointment_schedule","dayHeaderFormat","weekday","day","omitCommas","weekends","eventClick","handleEventClick","eventsSet","handleEvents","eventContent","eventDidMount","language","currentEvents","baseCalendarData","counterForWeek","companyBranchId","events","handleWeekendsToggle","refModal","$functions","DateFormat","selectInfo","dateManipulate","setSeconds","getSeconds","getHours","dateManipulateEnd","getMilliseconds","groupId","GroupId","activity_color","ActivityColor","counter","Counter","StartDate","Definition","ActivityTypeId","ActivityName","TrainerName","trainer_lastname","Capacity","textColor","extendedProps","personId","HOOKS","_disable","allowInput","allowInvalidPreload","altFormat","altInput","altInputClass","animate","navigator","userAgent","ariaDateFormat","autoFillDefaultTime","clickOpens","closeOnSelect","conjunction","defaultHour","defaultMinute","defaultSeconds","disable","disableMobile","enableSeconds","enableTime","errorHandler","err","getWeek","givenDate","getTime","setHours","setDate","getDate","getDay","week1","getFullYear","hourIncrement","ignoredFocusElements","inline","minuteIncrement","monthSelectorType","nextArrow","noCalendar","now","onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","position","positionElement","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","wrap","english","weekdays","shorthand","longhand","daysInMonth","firstDayOfWeek","ordinal","nth","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","monthAriaLabel","hourAriaLabel","minuteAriaLabel","pad","number","slice","bool","debounce","wait","clearTimeout","arrayify","obj","toggleClass","elem","classList","remove","createElement","tag","textContent","clearNode","firstChild","findParent","condition","createNumberInput","inputClassName","opts","wrapper","numInput","arrowUp","arrowDown","pattern","setAttribute","appendChild","getEventTarget","composedPath","path","target","error","doNothing","monthToStr","monthNumber","revFormat","D","F","dateObj","monthName","setMonth","G","parseFloat","H","J","K","RegExp","M","shortMonth","S","U","_","unixSeconds","W","weekNum","weekNumber","parseInt","Y","year","setFullYear","Z","ISODate","h","setMinutes","j","month","unixMillSeconds","w","y","tokenRegex","getMonth","getMinutes","substring","createDateFormatter","config","l10n","isMobile","frmt","overrideLocale","formatDate","arr","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","toFixed","datestr","trim","parseDate","matched","ops","matchIndex","regexStr","token","isBackSlash","escaped","match","exec","isNaN","compareDates","date1","date2","isBetween","ts","ts1","ts2","DAY","getDefaultHours","minHour","minMinutes","minSeconds","maxHr","maxMinutes","DEBOUNCED_CHANGE_MS","FlatpickrInstance","element","instanceConfig","assign","flatpickr","defaultConfig","setupHelperFunctions","utils","currentMonth","yr","currentYear","init","input","isOpen","parseConfig","setupLocale","setupInputs","setupDates","build","bindEvents","selectedDates","setHoursFromDate","latestSelectedDateObj","updateValue","setCalendarWidth","isSafari","positionCalendar","triggerEvent","bindToInstance","bind","requestAnimationFrame","calendarContainer","daysContainer","daysWidth","offsetWidth","weekWrapper","removeProperty","updateTime","defaultDate","defaults","timeWrapper","prevValue","_input","setHoursFromInputs","_debouncedChange","ampm2military","military2ampm","hourElement","minuteElement","secondElement","limitMinHours","minTime","minDateHasTime","limitMaxHours","maxTime","maxDateHasTime","onYearInput","eventTarget","delta","toString","changeYear","handler","ev","addEventListener","_handlers","removeEventListener","triggerChange","evt","querySelectorAll","setupMobile","debouncedResize","onResize","onMouseOver","body","ontouchstart","documentClick","capture","open","monthNav","onMonthNavClick","selectDate","timeContainer","selText","timeIncrement","onBlur","jumpToDate","jumpDate","jumpTo","oldYear","oldMonth","message","buildMonthSwitch","redraw","incrementNumInput","contains","inputElem","createEvent","dispatchEvent","fragment","createDocumentFragment","buildMonthNav","innerContainer","buildWeeks","rContainer","buildWeekdays","buildDays","buildTime","customAppend","appendTo","nodeType","insertBefore","nextSibling","createDay","dayNumber","dateIsEnabled","isEnabled","dayElement","$i","todayDateElem","isDateSelected","selectedDateElem","isDateInRange","insertAdjacentHTML","focusOnDayElem","targetNode","getFirstAvailableDay","startMonth","endMonth","endIndex","getNextAvailableDay","givenMonth","loopDelta","numMonthDays","abs","changeMonth","focusOnDay","offset","dayFocused","isInView","startElem","buildMonthDays","firstOfMonth","prevMonthDays","getDaysInMonth","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayIndex","dayNum","dayContainer","frag","shouldBuildMonth","monthsDropdownContainer","innerHTML","selected","buildMonth","container","monthNavFragment","monthElement","selectedMonth","yearInput","yearElement","getElementsByTagName","buildMonths","prevMonthNav","yearElements","monthElements","nextMonthNav","__hidePrevMonthArrow","__hideNextMonthArrow","currentYearElement","updateNavigationCurrentMonth","separator","hourInput","minuteInput","secondInput","getAttribute","weekdayContainer","updateWeekdays","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","clear","triggerChangeEvent","toInitial","mobileInput","_initialDate","close","destroy","lastChild","_type","removeAttribute","k","isCalendarElem","isCalendarElement","isInput","lostFocus","relatedTarget","isIgnored","some","newYear","newYearNum","isNewYear","dateToCheck","enable","array","parsed","from","to","allowKeydown","allowInlineKeydown","blur","isTimeObj","preventDefault","focusAndClose","ctrlKey","stopPropagation","elems","pluginElements","shiftKey","charAt","toLowerCase","hoverDate","firstElementChild","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","dayElem","timestamp","outOfRange","_positionElement","wasOpen","minMaxDateSetter","inverseDateObj","boolOpts","userConfig","JSON","parse","stringify","dataset","formats","_enable","set","parseDateRules","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","hook","pluginConf","getInputElem","querySelector","l10ns","customPositionElement","calendarHeight","reduce","acc","child","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","distanceFromBottom","innerHeight","showOnTop","pageYOffset","pageXOffset","isCenter","isRight","rightMost","centerMost","doc","getDocumentStyleSheet","bodyWidth","centerLeft","centerBefore","centerAfter","centerIndex","cssRules","centerStyle","insertRule","editableSheet","styleSheets","sheet","createStyleSheet","head","msMaxTouchPoints","isSelectable","selectedDate","shouldChangeMonth","selectedIndex","single","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","_createElement","CALLBACKS","option","setSelectedDate","inputDate","rule","preloadedDate","nodeName","placeholder","inputType","mobileFormatStr","defaultValue","step","hooks","initEvent","getDateStr","dObj","isPrevMonth","isNextMonth","isKeyDown","curValue","which","newValue","isHourElem","isMinuteElem","_flatpickr","nodeList","HTMLElement","instances","HTMLCollection","NodeList","selector","Node","en","localize","setDefaults","jQuery","fp_incr","TypeError","source","keys","extendStatics","setPrototypeOf","__proto__","__extends","__","constructor","create","__assign","__spreadArray","pack","ar","touchMouseIgnoreWait","ignoreMouseDepth","listenerCnt","isWindowTouchMoveCancelled","PointerDragging","containerEl","subjectEl","handleSelector","shouldIgnoreMove","shouldWatchScroll","isTouchDragging","wasTouchScroll","handleMouseDown","shouldIgnoreMouse","isPrimaryMouseButton","tryStart","pev","createEventFromMouse","emitter","trigger","initScrollWatch","handleMouseMove","handleMouseUp","recordCoords","cleanup","handleTouchStart","createEventFromTouch","targetEl","handleTouchMove","handleTouchEnd","handleTouchScroll","startIgnoringMouse","handleScroll","pageX","prevScrollX","prevPageX","pageY","prevScrollY","prevPageY","origEvent","isTouch","deltaX","origPageX","deltaY","origPageY","passive","listenerCreated","listenerDestroyed","querySubjectEl","downEl","destroyScrollWatch","cancelTouchScroll","isFirst","touches","onWindowTouchMove","ElementMirror","sourceEl","mirrorEl","sourceElRect","revertDuration","origScreenX","origScreenY","updateElPosition","handleMove","setIsVisible","stop","needsRevertAnimation","done","doRevertAnimation","finalSourceElRect","getMirrorEl","cloneNode","boxSizing","margin","ScrollGeomCache","scrollController","doesListening","getScrollTop","scrollLeft","getScrollLeft","handleScrollChange","origScrollTop","origScrollLeft","scrollWidth","getScrollWidth","scrollHeight","getScrollHeight","getClientWidth","getClientHeight","clientRect","computeClientRect","setScrollTop","getMaxScrollTop","setScrollLeft","getMaxScrollLeft","ElementScrollGeomCache","WindowScrollGeomCache","performance","AutoScroller","scrollQuery","edgeThreshold","maxVelocity","pointerScreenX","pointerScreenY","isAnimating","scrollCaches","everMovedUp","everMovedDown","everMovedLeft","everMovedRight","edge","computeBestEdge","handleSide","msSinceRequest","requestAnimation","scrollStartEl","buildCaches","yDelta","xDelta","scrollCache","invDistance","distance","velocity","sign","bestSide","leftDist","rightDist","topDist","bottomDist","canScrollUp","canScrollDown","canScrollLeft","canScrollRight","queryScrollEls","query","FeaturefulElementDragging","delay","minDistance","touchScrollAllowed","mirrorNeedsRevert","isInteracting","isDelayEnded","isDistanceSurpassed","delayTimeoutId","onPointerDown","pointer","mirror","startDelay","handleDistanceSurpassed","onPointerMove","distanceSq","autoScroller","onPointerUp","tryStopDrag","handleDelayEnd","tryStartDrag","stopDrag","setIgnoreMove","setMirrorIsVisible","setMirrorNeedsRevert","setAutoScrollEnabled","OffsetTracker","origRect","scrollEl","computeLeft","computeTop","isWithinClipping","point","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","activeRange","componentId","hit0","hit1","buildDatePointApiWithContext","datePointTransforms","transform","buildDatePointApi","dateStr","formatIso","omitTime","DateClicking","settings","isValidDateDownEl","hitDragging","jsEvent","calendarApi","DateSelecting","dragSelection","canSelect","getComponentTouchDelay$1","unselect","handleHitUpdate","isFinal","isInvalid","disallowed","joinHitsIntoSelection","dateSelectionTransformers","dispatch","selection","selectMinDistance","dragScroll","selectLongPressDelay","longPressDelay","dateSpan0","dateSpan1","ms","dateSelectionTransformers_1","transformer","EventDragging","subjectSeg","relevantEvents","receivingContext","validMutation","mutatedRelevantEvents","origTarget","initialContext","eventInstanceId","getCurrentData","eventDragMinDistance","getComponentTouchDelay","fixedMirrorParent","dragRevertDuration","isValid","isValidSegDownEl","mutation","interaction","affectedEvents","mutatedEvents","receivingOptions","droppable","computeEventMutation","eventDragMutationMassagers","displayDrag","initialContext_1","receivingContext_1","eventInstance","eventApi","relevantEvents_1","mutatedRelevantEvents_1","clearDrag","updatedEventApi","defs","defId","eventChangeArg","oldEvent","relatedEvents","revert","transformed","eventDropTransformers","datesDelta","eventRemoveArg","draggedEl","addedEventDef","addedEventInstance","addedEventApi","eventAddArg","SELECTOR","useEventCenter","nextContext","prevContext","initialCalendar","massagers","date0","standardProps","hasEnd","allDayMaintainDuration","largeUnit","massagers_1","massager","eventLongPressDelay","EventResizing","draggingSegEl","draggingSeg","segEl","querySegEl","computeMutation","startDelta","endDelta","isFromStart","instanceRange","UnselectAuto","isRecentPointerDateSelect","matchesCancel","matchesEvent","onSelect","onDocumentPointerDown","unselectCancel","onDocumentPointerUp","documentPointer","calendarState","unselectAuto","off","LISTENER_REFINERS","dateClick","eventDragStart","eventDragStop","eventDrop","eventResizeStart","eventResizeStop","drop","eventReceive","eventLeave","ExternalElementDragging","suppliedDragMeta","droppableEvent","dragMeta","buildDragMeta","canDropElOnCalendar","computeEventForDateSpan","finalView","addingEvents_1","getDragMetaFromEl","dropAccept","defProps","leftoverProps","externalDefTransforms","refined","extra","sourceId","forceEventDuration","startTime","str","getEmbeddedElData","prefix","dataAttrPrefix","prefixedName","ExternalDraggable","itemSelector","eventData","InferredElementDragging","mirrorSelector","currentMirrorEl","handlePointerMove","ThirdPartyDraggable","containerOrSettings","Element","componentInteractions","calendarInteractions","elementDraggingImpl","listenerRefiners","isAddNewUserSidebarActive","personData","time_table_infos","getCustomerList","isSortDirDesc","appConfig","isRTL","cancelAppointment","selectProduct","personBaseData","tableColumns2","selectParticipant","selectedCustomer","saveAddParticipants","BMedia","BLink","BDropdown","BDropdownItem","BBreadcrumb","BBreadcrumbItem","FormWizard","isEffect","email","companyBranchID","prop","sortOptions","getParticipantsData","firstArray","get_customer_by_activity_id_product","results","last_name","getProductListByCustomer","product_title","Messages","success","log","Symbol","toStringTag","f","onInput","fp","getElem","fpInput","$on","$watch","watchDisabled","immediate","$nextTick","deep","beforeDestroy","startTimeScalaModel","endTimeScalaModel","FullCalendarVDom","Component","Fragment","createContext","createPortal","flushToDom","unmountComponentAtNode","EventSourceApi","internalEventSource","refetch","sourceIds","isRefetch","publicId","meta","removeElement","elementClosest","closest","documentElement","elementMatches","parentElement","method","matches","matchesSelector","msMatchesSelector","findElements","containers","allMatches","PIXEL_PROP_RE","applyStyle","propName","applyStyleProp","getEventTargetViaRoot","getElRoot","getRootNode","buildDelegationHandler","matchedChild","listenBySelector","eventType","attachedHandler","listenToHoverBySelector","onMouseEnter","onMouseLeave","currentMatchedChild","mouseOverEv","realOnMouseLeave_1","mouseLeaveEv","transitionEventNames","whenTransitionDone","realCallback","eventName","guidNumber","guid","disableCursor","enableCursor","preventSelection","allowSelection","preventContextMenu","allowContextMenu","parseFieldSpecs","specs","tokens","field","order","func","compareByFieldSpecs","obj0","obj1","fieldSpecs","cmp","compareByFieldSpec","fieldSpec","flexibleCompare","localeCompare","padStart","substr","compareNumbers","isInt","computeSmallestCellWidth","allWidthEl","contentWidthEl","DAY_IDS","addWeeks","dateToUtcArray","arrayToUtcDate","addDays","addMs","diffWeeks","m0","m1","diffDays","diffHours","diffMinutes","diffSeconds","diffDayAndTime","m0day","startOfDay","m1day","years","diffWholeWeeks","diffWholeDays","timeAsMs","getUTCFullYear","getUTCMonth","getUTCDate","startOfHour","getUTCHours","startOfMinute","getUTCMinutes","startOfSecond","getUTCSeconds","weekOfYear","marker","dow","doy","weekOfGivenYear","nextW","firstWeekStart","firstWeekOffset","fwd","fwdlw","getUTCDay","dateToLocalArray","arrayToLocalDate","getUTCMilliseconds","UTC","isValidDate","createEventInstance","forcedStartTzo","forcedEndTzo","mergeProps","propObjs","complexPropsMap","dest","name_1","complexObjs","unshift","name_2","filterHash","hash","filtered","mapHash","newHash","arrayToHash","a_1","hashValuesToArray","isPropsEqual","getUnequalProps","compareObjs","oldProps","newProps","equalityFuncs","isObjValsEqual","val0","val1","comparator","collectFromHash","parseRecurring","defaultAllDay","recurringTypes","allDayGuess","typeData","typeId","expandRecurring","framingRange","recurringDef","defaultAllDayEventDuration","defaultTimedEventDuration","starts","expandRecurringRanges","starts_1","typeDef","markers","expand","subtract","INTERNAL_UNITS","PARSE_RE","createDuration","parseString","parseObject","second","millisecond","specifiedWeeks","durationsEqual","d0","d1","addDurations","subtractDurations","multiplyDuration","asRoughYears","dur","asRoughDays","asRoughMonths","asRoughMs","wholeDivideDurations","numerator","denominator","localRes","greatestDurationDenominator","buildIsoString","timeZoneOffset","stripZeroTime","formatTimeZoneOffset","formatDayString","formatIsoTimeString","doIso","mins","isArraysEqual","a0","a1","equalityFunc","memoize","workerFunc","resEquality","teardownFunc","currentArgs","currentRes","newArgs","memoizeObjArg","currentArg","newArg","EXTENDED_SETTINGS_AND_SEVERITIES","STANDARD_DATE_PROP_SEVERITIES","timeZoneName","era","MERIDIEM_RE","COMMA_RE","MULTI_SPACE_RE","LTR_RE","UTC_RE","NativeFormatter","formatSettings","standardDateProps","extendedSettings","severity","buildFormattingFunc","formatRange","betterDefaultSeparator","diffSeverity","computeMarkerDiffSeverity","calendarSystem","biggestUnitForPartial","full0","full1","partialDateProps","computePartialFormattingOptions","partialFormattingFunc","partial0","partial1","findCommonInsertion","defaultSeparator","before","after","getLargestUnit","standardDatePropCnt","formatWeekNumber","computeWeekNumber","weekText","buildNativeFormattingFunc","sanitizeSettings","timeZone","zeroFormat","normalFormat","Intl","DateTimeFormat","codes","zeroProps","postProcess","injectTzoStr","toLocaleLowerCase","tzoStr","replaced","num","parts","simpleNumberFormat","direction","reverse","ca","getMarkerYear","getMarkerMonth","getMarkerDay","biggestUnit","partialOptions","i0","found0","before0","after0","i1","found1","before1","after1","expandZonedMarker","dateInfo","markerToArray","createVerboseFormattingArg","startInfo","endInfo","localeCodes","CmdFormatter","cmdStr","cmdFormatter","FuncFormatter","createFormatter","BASE_OPTION_REFINERS","navLinkDayClick","identity","navLinkWeekClick","bootstrapFontAwesome","buttonIcons","scrollTime","scrollTimeReset","dayPopoverFormat","footerToolbar","defaultRangeSeparator","titleRangeSeparator","dayHeaderClassNames","dayHeaderContent","dayHeaderDidMount","dayHeaderWillUnmount","dayCellClassNames","dayCellContent","dayCellDidMount","dayCellWillUnmount","aspectRatio","weekNumberCalculation","weekNumberClassNames","weekNumberContent","weekNumberDidMount","weekNumberWillUnmount","viewClassNames","viewDidMount","viewWillUnmount","nowIndicatorClassNames","nowIndicatorContent","nowIndicatorDidMount","nowIndicatorWillUnmount","showNonCurrentDates","lazyFetching","startParam","endParam","timeZoneParam","locales","themeSystem","handleWindowResize","windowResizeDelay","weekNumberFormat","eventResizableFromStart","displayEventTime","displayEventEnd","progressiveEventRendering","eventDataTransform","viewHeight","eventSourceFailure","eventSourceSuccess","eventDisplay","eventStartEditable","eventDurationEditable","eventOverlap","eventConstraint","eventAllow","eventBackgroundColor","eventBorderColor","eventTextColor","eventColor","eventClassNames","eventWillUnmount","selectConstraint","slotMinWidth","rerenderDelay","moreLinkText","eventMinWidth","dayCount","dateAlignment","dateIncrement","hiddenDays","validRange","visibleRange","titleFormat","noEventsText","moreLinkClick","moreLinkClassNames","moreLinkContent","moreLinkDidMount","moreLinkWillUnmount","BASE_OPTION_DEFAULTS","CALENDAR_LISTENER_REFINERS","datesSet","eventAdd","eventChange","eventRemove","windowResize","eventMouseEnter","eventMouseLeave","_unmount","_beforeprint","_afterprint","_noEventDrop","_noEventResize","_resize","_scrollRequest","CALENDAR_OPTION_REFINERS","buttonText","eventSources","COMPLEX_OPTION_COMPARATORS","isBoolComplexEqual","VIEW_OPTION_REFINERS","buttonTextKey","mergeRawOptions","optionSets","refineProps","refiners","raw","parseEvents","rawEvents","eventSource","allowOpenRange","createEmptyEventStore","eventRefiners","buildEventRefiners","rawEvents_1","rawEvent","tuple","parseEvent","eventTupleToStore","getRelevantEvents","def_1","newStore","filterEventStoreDefs","lookDef","isEventDefsGrouped","def0","def1","mergeEventStores","store0","store1","filterFunc","excludeSubEventStore","master","sub","filteredDefs","filteredInstances","normalizeConstraint","parseClassNames","EVENT_UI_REFINERS","startEditable","constraint","overlap","allow","EMPTY_EVENT_UI","constraints","allows","createEventUi","combineEventUis","uis","combineTwoEventUis","item0","item1","EVENT_NON_DATE_REFINERS","EVENT_DATE_REFINERS","EVENT_REFINERS","refineEventDef","computeIsDefaultAllDay","recurringRes","parseEventDef","singleRes","parseSingle","eventDefMemberAdders","memberAdder","freeze","startMeta","endMeta","startMarker","endMarker","startInput","createMarkerMeta","isTimeUnspecified","forcedTzo","computeAlignedDayRange","timedRange","computeVisibleDayRange","startDay","endDay","endTimeMS","diffDates","diffWholeYears","diffWholeMonths","parseRange","createMarker","invertRanges","constraintRange","invertedRanges","compareRanges","range0","range1","intersectRanges","newRange","rangesEqual","rangesIntersect","rangeContainsRange","outerRange","innerRange","rangeContainsMarker","constrainMarkerToRange","sliceEventStore","inverseBgByGroupId","inverseBgByDefId","defByGroupId","bgRanges","fgRanges","eventUis","compileEventUis","normalRange","invertedRanges_1","invertedRange","invertedRanges_2","bg","fg","hasBgRendering","setElSeg","fcSeg","getElSeg","eventDefs","compileEventUi","eventOrderSpecs","objs","buildSegCompareObj","_seg","computeSegDraggable","transformers","isDraggableTransformers","transformers_1","computeSegStartResizable","computeSegEndResizable","buildSegTimeText","defaultDisplayEventTime","startOverride","endOverride","wholeEventStart","wholeEventEnd","segStart","segEnd","isStartDay","isEndDay","getSegMeta","getEventClassNames","isDraggable","isStartResizable","isEndResizable","buildEventRangeKey","STANDARD_PROPS","parseDateSpan","defaultDuration","parseOpenDateSpan","isDateSpansEqual","span0","span1","isSpanPropsEqual","buildDateSpanApi","buildRangeApi","buildRangeApiWithTimeZone","startStr","endStr","fabricateEventRange","triggerDateSelect","buildDateSpanApiWithContext","triggerDateUnselect","dateSpanTransforms","getDefaultEventEnd","applyMutationToEventStore","eventConfigBase","eventConfigs","applyMutationToEventDef","applyMutationToEventInstance","eventConfig","copy","eventDefMutationAppliers","applier","forceAllDay","clearEnd","ViewApi","viewTitle","getOption","EVENT_SOURCE_REFINERS","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","changeView","viewType","dateOrRange","zoomTo","spec","viewSpecs","getUnitViewSpec","toolbarConfig","viewTypes","viewsWithButtons","singleUnit","prev","next","prevYear","addYears","nextYear","today","gotoDate","zonedDateInput","incrementDate","deltaInput","formatter","dateOrObj","endDate","selectionInput","addEvent","eventInput","sourceInput","_def","_instance","currentData","triggerEventAdd","sourceApi","getEventSourceById","newEventApi","eventApiToStore","getEventById","getEvents","buildEventApis","removeAllEvents","getEventSources","sourceHash","sourceApis","internalId","addEventSource","sources","removeAllEventSources","refetchEvents","scrollToTime","timeInput","EventApi","_context","setProp","mutate","setExtendedProp","setStart","granularity","maintainDuration","setEnd","endInput","setDates","moveStart","moveEnd","moveDates","setAllDay","formatInput","context_1","eventStore_1","asStore","toPlainObject","collapseColor","collapseExtendedProps","toJSON","excludeInstance","eventApis","excludeInstanceId","calendarSystemClassMap","registerCalendarSystem","theClass","createCalendarSystem","GregorianCalendarSystem","arrayToMarker","ISO_RE","DateEnv","isNamedTimeZone","namedTimeZoneImpl","canComputeOffset","weekDow","weekDoy","weekNumberFunc","timestampToMarker","getYear","addMonths","greatestWholeUnit","countDurationsBetween","diff","startOf","startOfYear","startOfMonth","dateOptions","offsetForMarker","isEndExclusive","extraOptions","omitTimeZoneOffset","timestampToArray","getTimezoneOffset","offsetForArray","globalLocales","RAW_EN_LOCALE","code","list","organizeRawLocales","explicitRawLocales","defaultCode","allRawLocales","rawLocaleMap","allRawLocales_1","rawLocale","buildLocale","inputSingular","available","queryLocale","parseLocale","codeArg","queryRawLocale","simpleId","merged","NumberFormat","canVGrowWithinCell","DEF_DEFAULTS","endTime","daysOfWeek","parseBusinessHours","refineInputs","rawDefs","rawDef","pointInsideRect","intersectRects","rect1","rect2","constrainPoint","getRectCenter","diffPoints","point1","point2","getCanVGrowWithinCell","computeCanVGrowWithinCell","div","possible","EMPTY_EVENT_STORE","Splitter","getKeysForEventDefs","_getKeysForEventDefs","splitDateSelection","_splitDateSpan","splitEventStore","_splitEventStore","splitIndividualUi","_splitIndividualUi","_splitInteraction","eventUiBuilders","keyInfos","defKeys","dateSelections","individualUi","eventStores","eventDrags","eventResizes","info","buildEventUiForKey","keyInfo","buildEventUi","dateSpans","keys_1","splitStores","splitHashes","splitStates","affectedStores_1","mutatedKeysByDefId","mutatedStores_1","populate","allUi","eventUiForKey","baseParts","stuff","getDateMeta","isOther","getDayClassNames","buildNavLinkData","_scrollbarWidths","_isRtlScrollbarOnLeft","getIsRtlScrollbarOnLeft","computeIsRtlScrollbarOnLeft","outerEl","border","padding","innerEl","getScrollbarWidths","computeScrollbarWidths","computeScrollbarWidthsForEl","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","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","hasHandlers","PositionCache","isHorizontal","originClientRect","buildElHorizontals","buildElVerticals","originClientLeft","originClientTop","leftPosition","topPosition","getWidth","leftIndex","topIndex","ScrollController","canScrollVertically","canScrollHorizontally","ElementScrollController","WindowScrollController","scroll","Theme","iconOverrideOption","setIconOverride","iconOverrideHash","iconClassesCopy","buttonName","iconClasses","applyIconOverridePrefix","iconOverridePrefix","classes","getIconClass","rtlIconClasses","baseIconClass","getCustomButtonIconClass","customButtonProps","iconOverrideCustomButtonOption","ScrollResponder","execFunc","queuedRequest","drain","fireInitialScroll","isDatesNew","ViewContextType","buildViewContext","viewOptions","addResizeHandler","removeResizeHandler","PureComponent","shouldComponentUpdate","nextProps","nextState","debug","propEquality","stateEquality","addPropsEquality","contextType","BaseComponent","setRef","DateComponent","uid","elWidth","elHeight","createPlugin","deps","reducers","isLoadingFuncs","contextInit","viewPropsTransformers","isPropsValid","viewContainerAppends","themeClasses","namedTimeZonedImpl","optionChangeHandlers","contentTypeHandlers","propSetHandlers","buildPluginHooks","pluginDefs","globalDefs","isAdded","addDefs","defs_1","combineHooks","buildBuildPluginHooks","currentHooks","currentOverrideDefs","currentGlobalDefs","overrideDefs","hooks0","hooks1","StandardTheme","compileViewDefs","defaultConfigs","overrideConfigs","ensureViewDef","viewDef","buildViewDef","overrideConfig","queryProp","theComponent","superType","superDef","rawOptions","overrides","root","tableCellShaded","buttonGroup","buttonActive","RenderHook","ContentHook","backupElRef","normalizeClassNames","CustomContentRenderContext","renderId","ContentHookInner","updateCustomContent","customContentInfo","getInnerContent","getContentMeta","contentKey","contentVal","buildLifecycleFuncs","normalizeContent","searchKey","MountHook","buildClassNameNormalizer","currentGenerator","currentHookProps","currentClassNames","generator","ViewRoot","parseViewConfigs","inputs","parseViewConfig","createViewHookComponent","viewProps","viewElRef","buildViewSpecs","defaultInputs","optionOverrides","dynamicOptionOverrides","localeDefaults","viewDefs","buildViewSpec","durationInput","durationUnit","singleUnitOverrides","createDurationCached","denom","queryButtonText","optionsSubset","buttonTextMap","optionDefaults","buttonTextOverride","buttonTextDefault","durationInputMap","json","DateProfileGenerator","initHiddenDays","buildPrev","currentDateProfile","forceToValid","prevDate","buildNext","nextDate","currentInfo","buildValidRange","trimHiddenDays","buildCurrentRangeInfo","adjustActiveRange","buildDateIncrement","validRangeInput","simpleInput","refineRange","buildRangeFromDuration","buildRangeFromDayCount","buildCustomVisibleRange","getFallbackDuration","computeRes","isHiddenDay","skipHiddenDays","runningCount","visibleRangeInput","fallback","customAlignment","rangeInput","isHiddenDayHash","inc","isExclusive","reduceViewType","reduceDynamicOptionOverrides","reduceDateProfile","dp","initEventSources","addSources","parseInitialSources","reduceEventSources","removeSource","fetchDirtySources","fetchSourcesByIds","excludeStaticSources","receiveResponse","fetchId","reduceEventSourcesNewTimeZone","computeEventSourcesLoading","eventSourceHash","sources_1","isSourceDirty","doesSourceNeedRange","prevSources","sourceIdHash","nextSources","fetchSource","sourceDef","fetch","xhr","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","reduceEventDrag","currentDrag","newDrag","reduceEventResize","currentResize","newResize","parseToolbars","calendarOptionOverrides","parseToolbar","sectionStrHash","sectionStr","parseSection","calendarCustomButtons","calendarButtonTextOverrides","calendarButtonText","sectionSubstrs","buttonGroupStr","buttonClick","buttonIcon","eventSourceDef$2","arrayEventSourcePlugin","eventSourceDef$1","funcEventSourcePlugin","requestJson","params","successCallback","failureCallback","toUpperCase","injectQueryStringParams","encodeParams","XMLHttpRequest","setRequestHeader","onload","responseText","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","injectHtml","domNodes","injectDomNodes","oldNodes","childNodes","newNodes","newNodes_1","newNode","DelayedRunner","drainedOption","isRunning","isDirty","pauseDepths","timeoutId","isPaused","tryDrain","pause","scope","resume","force","depth","drained","TaskRunner","runTaskOption","queue","delayedRunner","task","completedTasks","shift","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","newState","wasLoading","isLoading","onAction","oldData","changeHandlers","oldCalendarOptions","newCalendarOptions","onData","processRawCalendarOptions","refinedOptions","availableLocaleData","warnUnknownOptions","currentRaw","currentRefined","anyChanges","processRawViewOptions","explicitLocale","ThemeClass","DateProfileGeneratorClass","isLoadingFunc","viewName","CalendarDataProvider","handleData","dataManager","newOptionOverrides","NamedTimeZoneImpl","SegHierarchy","stackCnts","insertEntry","findInsertion","isInsertionValid","insertEntryAt","stackCnt","barrier","partCnt","splitHiddenEntries","entrySpan","barrierSpan","intersectSpans","insertAt","buildEntryKey","newEntry","candidateCoord","trackingLevel","trackingCoord","trackingEntries","trackingEntry","searchRes","binarySearch","getEntrySpanEnd","lateralIndex","trackingEntryBottom","destLevel","destLateral","entries_1","groupIntersectingEntries","merges","entries_2","filteredMerges","hungryMerge","merges_1","merge","joinSpans","searchVal","getItemVal","middleIndex","middleVal","Interaction","parseInteractionSettings","interactionSettingsToStore","interactionSettingsStore","ElementDragging","DRAG_META_REFINERS","parseDragMeta","ToolbarSection","widgetGroups","widgetGroup","renderWidgetGroup","isOnlyButtons","widgetGroup_1","widget","ariaAttrs","buttonClasses","activeButton","isTodayEnabled","isPrevEnabled","isNextEnabled","groupClassName","Toolbar","startContent","endContent","extraClassName","forceLtr","centerContent","renderSection","ViewContainer","availableWidth","handleEl","updateAvailableWidth","handleResize","EventClicking","handleSegClick","hasUrlContainer","defaultPrevented","location","EventHovering","handleEventElRemove","currentSegEl","handleSegLeave","handleSegEnter","removeHoverListeners","publicEvName","CalendarContent","buildViewPropTransformers","buildToolbarProps","handleNavLinkClick","_handleNavLinkClick","footerRef","interactionsStore","settingsInput","DEFAULT_INTERACTIONS","interactionClasses","interactions","TheInteractionClass","listener","resizeRunner","viewAspectRatio","toolbarProps","viewVGrow","viewContext","Provider","renderView","buildAppendContent","CalendarInteractionClass","anchorEl","navLinkOptions","customAction","ViewComponent","todayInfo","prevInfo","nextInfo","theClasses","TheClass","CalendarRoot","handleBeforePrint","handleAfterPrint","computeFallbackHeaderFormat","CLASS_NAME","renderInner$1","TableDateCell","dayMeta","TableDowCell","dateMeta","NowTimer","initialNowDate","initialNowQueriedMs","computeTiming","currentState","unroundedNow","currentUnitStart","nextUnitStart","waitMs","buildDayRange","DayHeader","createDayHeaderFormatter","explicitFormat","dateCnt","DaySeriesModel","indices","cnt","firstIndex","getDateDayIndex","lastIndex","clippedFirstIndex","clippedLastIndex","dayOffset","DayTableModel","breakOnWeeks","daysPerRow","buildCells","buildHeaderDates","rows","buildCell","seriesSeg","nextIndex","Slicer","sliceBusinessHours","_sliceBusinessHours","sliceDateSelection","_sliceDateSpan","_sliceEventStore","sliceEventDrag","_sliceInteraction","sliceEventResize","extraArgs","eventSegs","computeActiveRange","rangeRes","sliceEventRanges","eventRanges","eventRanges_1","sliceEventRange","isComponentAllDay","isInteractionValid","isNewPropsValid","isDateSelectionValid","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","overcomeLeft","overcomeRight","overcomeBottom","marginLeft","marginRight","marginBottom","needsXScrolling","realClientWidth","getYScrollbarWidth","childEl","needsYScrolling","realClientHeight","getXScrollbarWidth","RefMap","masterCallback","depths","callbackMap","handleValue","removed","added","refCallback","getAll","computeShrinkWidth","chunkEls","shrinkCells","largestWidth","shrinkCells_1","shrinkCell","getSectionHasLiquidHeight","sectionConfig","getAllowYScrolling","renderChunkContent","chunkConfig","isColPropsEqual","cols0","cols1","renderMicroColGroup","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","microColGroupNode","currentConfig","configCnt","configI","headSectionNodes","bodySectionNodes","footSectionNodes","isBuggy","renderChunkTd","isLiquid","sectionKey","reportRowHeightChange","section","getSectionByKey","scrollbarWidth","scroller","harnessEl","sections_1","EventRoot","disableDragging","standardClassNames","StandardEvent","renderInnerContent$1","NowIndicatorRoot","DAY_NUM_FORMAT","DayCellContent","refineDayCellHookProps","extraProps","DayCellRoot","refineHookProps","renderFill","BgEvent","WeekNumberRoot","renderInner","PADDING_FROM_VIEWPORT","Popover","handleDocumentMousedown","handleCloseClick","extraAttrs","parentEl","alignmentEl","alignmentRect","popoverDims","popoverTop","popoverLeft","origin_1","offsetParent","MorePopover","startDate","MoreLinkRoot","linkElRef","isPopoverOpen","computeRange","buildPublicSeg","handlePopoverClose","updateParentEl","computeEarliestSegStart","computeLatestSegEnd","pickEarliestStart","seg0","seg1","pickLatestEnd","v","defaultProps","__k","__b","__e","__d","__c","__h","__v","vnode","base","g","__r","debounceRendering","__P","__n","ownerSVGElement","z","A","P","N","C","$","setProperty","cssText","T","I","__E","O","__s","getDerivedStateFromProps","componentWillMount","componentWillReceiveProps","componentWillUpdate","getChildContext","getSnapshotBeforeUpdate","L","diffed","localName","createTextNode","createElementNS","is","dangerouslySetInnerHTML","attributes","__html","unmount","getDerivedStateFromError","componentDidCatch","forceUpdate","Promise","resolve","__H","cancelAnimationFrame","E","isPureReactComponent","__f","for","__u","__R","__O","pop","delete","revealOrder","size","Map","V","isReactComponent","writable","cancelBubble","persist","isPropagationStopped","isDefaultPrevented","nativeEvent","multiple","$$typeof","globalObj","globalThis","oldDebounceRendering","callbackQ","execCallbackSync","FakeComponent","ContextType","origProvider","isNew","subs_1","_props","old","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","buildVDomHandler","currentEl","vDomContent","$destroy","initVue","$mount","initialContent","FullCalendar","extend","initData","internal","$options","scopedSlotOptions","$scopedSlots","calendar","buildOptions","getApi","beforeUpdate","buildWatchers","suppliedOptions","watchers","_loop_1","complexOptionName","GlobalVue","installed","global","factory","Turkish","tr"],"mappings":"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IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,UAIE8iC,EAAoB,CAC/B,CACE94D,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2B,MAAO,SAET,CACEh2B,IAAK,WACLg2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","file":"js/chunk-21a50bec.63a8d7e2.js","sourcesContent":["export const heightFade = {\r\n /* eslint-disable no-param-reassign */\r\n inserted(el, binding) {\r\n const height = `${el.offsetHeight}px`\r\n\r\n if (binding.modifiers.appear) {\r\n el.style.overflow = 'hidden'\r\n el.style.maxHeight = '0px'\r\n el.style.opacity = 0\r\n\r\n // Focus the element\r\n setTimeout(() => {\r\n el.style.maxHeight = height\r\n el.style.opacity = 1\r\n setTimeout(() => {\r\n el.style.overflow = 'unset'\r\n }, 300)\r\n }, 100)\r\n } else {\r\n el.style.maxHeight = height\r\n }\r\n },\r\n unbind(el) {\r\n if (el.style === undefined) return\r\n el.style.overflow = 'hidden'\r\n el.style.maxHeight = '0px'\r\n el.style.opacity = 0\r\n },\r\n /* eslint-enable no-param-reassign */\r\n}\r\n\r\nexport const temp = 2\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./participantsScoped.scss?vue&type=style&index=1&id=d173f0aa&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./trainerCalendar.scss?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppointmentSheduleMultiNew.vue?vue&type=style&index=0&id=5e4ac42a&scoped=true&lang=css&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppointmentSheduleNew.vue?vue&type=style&index=0&lang=css&\"","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.VueFormWizard=e():t.VueFormWizard=e()}(\"undefined\"!=typeof self?self:this,function(){return function(t){function e(n){if(a[n])return a[n].exports;var i=a[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var a={};return e.m=t,e.c=a,e.d=function(t,a,n){e.o(t,a)||Object.defineProperty(t,a,{configurable:!1,enumerable:!0,get:n})},e.n=function(t){var a=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(a,\"a\",a),a},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"\",e(e.s=7)}([function(t,e){t.exports=function(t,e,a,n,i,r){var s,o=t=t||{},c=typeof t.default;\"object\"!==c&&\"function\"!==c||(s=t,o=t.default);var u=\"function\"==typeof o?o.options:o;e&&(u.render=e.render,u.staticRenderFns=e.staticRenderFns,u._compiled=!0),a&&(u.functional=!0),i&&(u._scopeId=i);var l;if(r?(l=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),n&&n.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(r)},u._ssrRegister=l):n&&(l=n),l){var d=u.functional,b=d?u.render:u.beforeCreate;d?(u._injectStyles=l,u.render=function(t,e){return l.call(e),b(t,e)}):u.beforeCreate=b?[].concat(b,l):[l]}return{esModule:s,exports:o,options:u}}},function(t,e,a){\"use strict\";var n=a(2),i=a(4),r=a(14);e.a={name:\"form-wizard\",components:{WizardButton:n.a,WizardStep:i.a},props:{title:{type:String,default:\"Awesome Wizard\"},subtitle:{type:String,default:\"Split a complicated flow in multiple steps\"},nextButtonText:{type:String,default:\"Next\"},backButtonText:{type:String,default:\"Back\"},finishButtonText:{type:String,default:\"Finish\"},hideButtons:{type:Boolean,default:!1},validateOnBack:Boolean,color:{type:String,default:\"#e74c3c\"},errorColor:{type:String,default:\"#8b0000\"},shape:{type:String,default:\"circle\"},layout:{type:String,default:\"horizontal\"},stepsClasses:{type:[String,Array],default:\"\"},stepSize:{type:String,default:\"md\",validator:function(t){return-1!==[\"xs\",\"sm\",\"md\",\"lg\"].indexOf(t)}},transition:{type:String,default:\"\"},startIndex:{type:Number,default:0,validator:function(t){return t>=0}}},provide:function(){return{addTab:this.addTab,removeTab:this.removeTab}},data:function(){return{activeTabIndex:0,currentPercentage:0,maxStep:0,loading:!1,tabs:[]}},computed:{slotProps:function(){return{nextTab:this.nextTab,prevTab:this.prevTab,activeTabIndex:this.activeTabIndex,isLastStep:this.isLastStep,fillButtonStyle:this.fillButtonStyle}},tabCount:function(){return this.tabs.length},isLastStep:function(){return this.activeTabIndex===this.tabCount-1},isVertical:function(){return\"vertical\"===this.layout},displayPrevButton:function(){return 0!==this.activeTabIndex},stepPercentage:function(){return 1/(2*this.tabCount)*100},progressBarStyle:function(){return{backgroundColor:this.color,width:this.progress+\"%\",color:this.color}},fillButtonStyle:function(){return{backgroundColor:this.color,borderColor:this.color,color:\"white\"}},progress:function(){return this.activeTabIndex>0?this.stepPercentage*(2*this.activeTabIndex+1):this.stepPercentage}},methods:{emitTabChange:function(t,e){this.$emit(\"on-change\",t,e),this.$emit(\"update:startIndex\",e)},addTab:function(t){var e=this.$slots.default.indexOf(t.$vnode);t.tabId=\"\"+t.title.replace(/ /g,\"\")+e,this.tabs.splice(e,0,t),e-1&&(a===this.activeTabIndex&&(this.maxStep=this.activeTabIndex-1,this.changeTab(this.activeTabIndex,this.activeTabIndex-1)),athis.activeTabIndex;if(t<=this.maxStep){var n=function n(){a&&t-e.activeTabIndex>1?(e.changeTab(e.activeTabIndex,e.activeTabIndex+1),e.beforeTabChange(e.activeTabIndex,n)):(e.changeTab(e.activeTabIndex,t),e.afterTabChange(e.activeTabIndex))};a?this.beforeTabChange(this.activeTabIndex,n):(this.setValidationError(null),n())}return t<=this.maxStep},nextTab:function(){var t=this,e=function(){t.activeTabIndex0&&(t.setValidationError(null),t.changeTab(t.activeTabIndex,t.activeTabIndex-1))};this.validateOnBack?this.beforeTabChange(this.activeTabIndex,e):e()},focusNextTab:function(){var t=Object(r.b)(this.tabs);if(-1!==t&&t0){var e=this.tabs[t-1].tabId;Object(r.a)(e)}},setLoading:function(t){this.loading=t,this.$emit(\"on-loading\",t)},setValidationError:function(t){this.tabs[this.activeTabIndex].validationError=t,this.$emit(\"on-error\",t)},validateBeforeChange:function(t,e){var a=this;if(this.setValidationError(null),Object(r.c)(t))this.setLoading(!0),t.then(function(t){a.setLoading(!1);var n=!0===t;a.executeBeforeChange(n,e)}).catch(function(t){a.setLoading(!1),a.setValidationError(t)});else{var n=!0===t;this.executeBeforeChange(n,e)}},executeBeforeChange:function(t,e){this.$emit(\"on-validate\",t,this.activeTabIndex),t?e():this.tabs[this.activeTabIndex].validationError=\"error\"},beforeTabChange:function(t,e){if(!this.loading){var a=this.tabs[t];if(a&&void 0!==a.beforeChange){var n=a.beforeChange();this.validateBeforeChange(n,e)}else e()}},afterTabChange:function(t){if(!this.loading){var e=this.tabs[t];e&&void 0!==e.afterChange&&e.afterChange()}},changeTab:function(t,e){var a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=this.tabs[t],i=this.tabs[e];return n&&(n.active=!1),i&&(i.active=!0),a&&this.activeTabIndex!==e&&this.emitTabChange(t,e),this.activeTabIndex=e,this.activateTabAndCheckStep(this.activeTabIndex),!0},tryChangeRoute:function(t){this.$router&&t.route&&this.$router.push(t.route)},checkRouteChange:function(t){var e=-1,a=this.tabs.find(function(a,n){var i=a.route===t;return i&&(e=n),i});if(a&&!a.active){var n=e>this.activeTabIndex;this.navigateToTab(e,n)}},deactivateTabs:function(){this.tabs.forEach(function(t){t.active=!1})},activateTab:function(t){this.deactivateTabs();var e=this.tabs[t];e&&(e.active=!0,e.checked=!0,this.tryChangeRoute(e))},activateTabAndCheckStep:function(t){this.activateTab(t),t>this.maxStep&&(this.maxStep=t),this.activeTabIndex=t},initializeTabs:function(){this.tabs.length>0&&0===this.startIndex&&this.activateTab(this.activeTabIndex),this.startIndex0&&void 0!==arguments[0]?arguments[0]:[],e=n();return t.findIndex(function(t){return t.tabId===e})}function r(t){document.getElementById(t).focus()}function s(t){return t.then&&\"function\"==typeof t.then}e.b=i,e.a=r,e.c=s},function(t,e,a){\"use strict\";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a(\"div\",{staticClass:\"vue-form-wizard\",class:[t.stepSize,{vertical:t.isVertical}],on:{keyup:[function(e){return\"button\"in e||!t._k(e.keyCode,\"right\",39,e.key)?\"button\"in e&&2!==e.button?null:void t.focusNextTab(e):null},function(e){return\"button\"in e||!t._k(e.keyCode,\"left\",37,e.key)?\"button\"in e&&0!==e.button?null:void t.focusPrevTab(e):null}]}},[a(\"div\",{staticClass:\"wizard-header\"},[t._t(\"title\",[a(\"h4\",{staticClass:\"wizard-title\"},[t._v(t._s(t.title))]),t._v(\" \"),a(\"p\",{staticClass:\"category\"},[t._v(t._s(t.subtitle))])])],2),t._v(\" \"),a(\"div\",{staticClass:\"wizard-navigation\"},[t.isVertical?t._e():a(\"div\",{staticClass:\"wizard-progress-with-circle\"},[a(\"div\",{staticClass:\"wizard-progress-bar\",style:t.progressBarStyle})]),t._v(\" \"),a(\"ul\",{staticClass:\"wizard-nav wizard-nav-pills\",class:t.stepsClasses,attrs:{role:\"tablist\"}},[t._l(t.tabs,function(e,n){return t._t(\"step\",[a(\"wizard-step\",{attrs:{tab:e,\"step-size\":t.stepSize,transition:t.transition,index:n},nativeOn:{click:function(e){t.navigateToTab(n)},keyup:function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"enter\",13,e.key))return null;t.navigateToTab(n)}}})],{tab:e,index:n,navigateToTab:t.navigateToTab,stepSize:t.stepSize,transition:t.transition})})],2),t._v(\" \"),a(\"div\",{staticClass:\"wizard-tab-content\"},[t._t(\"default\",null,null,t.slotProps)],2)]),t._v(\" \"),t.hideButtons?t._e():a(\"div\",{staticClass:\"wizard-card-footer clearfix\"},[t._t(\"footer\",[a(\"div\",{staticClass:\"wizard-footer-left\"},[t.displayPrevButton?a(\"span\",{attrs:{role:\"button\",tabindex:\"0\"},on:{click:t.prevTab,keyup:function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"enter\",13,e.key))return null;t.prevTab(e)}}},[t._t(\"prev\",[a(\"wizard-button\",{style:t.fillButtonStyle,attrs:{disabled:t.loading}},[t._v(\"\\n \"+t._s(t.backButtonText)+\"\\n \")])],null,t.slotProps)],2):t._e(),t._v(\" \"),t._t(\"custom-buttons-left\",null,null,t.slotProps)],2),t._v(\" \"),a(\"div\",{staticClass:\"wizard-footer-right\"},[t._t(\"custom-buttons-right\",null,null,t.slotProps),t._v(\" \"),t.isLastStep?a(\"span\",{attrs:{role:\"button\",tabindex:\"0\"},on:{click:t.nextTab,keyup:function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"enter\",13,e.key))return null;t.nextTab(e)}}},[t._t(\"finish\",[a(\"wizard-button\",{style:t.fillButtonStyle},[t._v(\"\\n \"+t._s(t.finishButtonText)+\"\\n \")])],null,t.slotProps)],2):a(\"span\",{attrs:{role:\"button\",tabindex:\"0\"},on:{click:t.nextTab,keyup:function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"enter\",13,e.key))return null;t.nextTab(e)}}},[t._t(\"next\",[a(\"wizard-button\",{style:t.fillButtonStyle,attrs:{disabled:t.loading}},[t._v(\"\\n \"+t._s(t.nextButtonText)+\"\\n \")])],null,t.slotProps)],2)],2)],null,t.slotProps)],2)])},i=[],r={render:n,staticRenderFns:i};e.a=r},function(t,e,a){\"use strict\";var n=a(6),i=a(17),r=a(0),s=r(n.a,i.a,!1,null,null,null);e.a=s.exports},function(t,e,a){\"use strict\";var n=function(){var t=this,e=t.$createElement;return(t._self._c||e)(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.active,expression:\"active\"}],staticClass:\"wizard-tab-container\",attrs:{role:\"tabpanel\",id:t.tabId,\"aria-hidden\":!t.active,\"aria-labelledby\":\"step-\"+t.tabId}},[t._t(\"default\",null,{active:t.active})],2)},i=[],r={render:n,staticRenderFns:i};e.a=r}])});","/*!\nFullCalendar v5.9.0\nDocs & License: https://fullcalendar.io/\n(c) 2021 Adam Shaw\n*/\nimport './main.css';\n\nimport { createRef, getStickyHeaderDates, createElement, ViewRoot, SimpleScrollGrid, getStickyFooterScrollbar, renderScrollShim, DateComponent, buildNavLinkData, DayCellContent, Fragment, BaseComponent, createFormatter, StandardEvent, buildSegTimeText, EventRoot, memoize, MoreLinkRoot, getSegMeta, setRef, DayCellRoot, WeekNumberRoot, buildEntryKey, intersectSpans, SegHierarchy, intersectRanges, addDays, RefMap, sortEventSegs, isPropsEqual, buildEventRangeKey, BgEvent, renderFill, PositionCache, NowTimer, Slicer, DayHeader, DaySeriesModel, DayTableModel, addWeeks, diffWeeks, DateProfileGenerator, createPlugin } from '@fullcalendar/common';\nimport { __extends, __assign, __spreadArray } from 'tslib';\n\n/* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells.\n----------------------------------------------------------------------------------------------------------------------*/\n// It is a manager for a Table subcomponent, which does most of the heavy lifting.\n// It is responsible for managing width/height.\nvar TableView = /** @class */ (function (_super) {\n __extends(TableView, _super);\n function TableView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.headerElRef = createRef();\n return _this;\n }\n TableView.prototype.renderSimpleLayout = function (headerRowContent, bodyContent) {\n var _a = this, props = _a.props, context = _a.context;\n var sections = [];\n var stickyHeaderDates = getStickyHeaderDates(context.options);\n if (headerRowContent) {\n sections.push({\n type: 'header',\n key: 'header',\n isSticky: stickyHeaderDates,\n chunk: {\n elRef: this.headerElRef,\n tableClassName: 'fc-col-header',\n rowContent: headerRowContent,\n },\n });\n }\n sections.push({\n type: 'body',\n key: 'body',\n liquid: true,\n chunk: { content: bodyContent },\n });\n return (createElement(ViewRoot, { viewSpec: context.viewSpec }, function (rootElRef, classNames) { return (createElement(\"div\", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') },\n createElement(SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [] /* TODO: make optional? */, sections: sections }))); }));\n };\n TableView.prototype.renderHScrollLayout = function (headerRowContent, bodyContent, colCnt, dayMinWidth) {\n var ScrollGrid = this.context.pluginHooks.scrollGridImpl;\n if (!ScrollGrid) {\n throw new Error('No ScrollGrid implementation');\n }\n var _a = this, props = _a.props, context = _a.context;\n var stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options);\n var stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options);\n var sections = [];\n if (headerRowContent) {\n sections.push({\n type: 'header',\n key: 'header',\n isSticky: stickyHeaderDates,\n chunks: [{\n key: 'main',\n elRef: this.headerElRef,\n tableClassName: 'fc-col-header',\n rowContent: headerRowContent,\n }],\n });\n }\n sections.push({\n type: 'body',\n key: 'body',\n liquid: true,\n chunks: [{\n key: 'main',\n content: bodyContent,\n }],\n });\n if (stickyFooterScrollbar) {\n sections.push({\n type: 'footer',\n key: 'footer',\n isSticky: true,\n chunks: [{\n key: 'main',\n content: renderScrollShim,\n }],\n });\n }\n return (createElement(ViewRoot, { viewSpec: context.viewSpec }, function (rootElRef, classNames) { return (createElement(\"div\", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') },\n createElement(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections: sections }))); }));\n };\n return TableView;\n}(DateComponent));\n\nfunction splitSegsByRow(segs, rowCnt) {\n var byRow = [];\n for (var i = 0; i < rowCnt; i += 1) {\n byRow[i] = [];\n }\n for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) {\n var seg = segs_1[_i];\n byRow[seg.row].push(seg);\n }\n return byRow;\n}\nfunction splitSegsByFirstCol(segs, colCnt) {\n var byCol = [];\n for (var i = 0; i < colCnt; i += 1) {\n byCol[i] = [];\n }\n for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) {\n var seg = segs_2[_i];\n byCol[seg.firstCol].push(seg);\n }\n return byCol;\n}\nfunction splitInteractionByRow(ui, rowCnt) {\n var byRow = [];\n if (!ui) {\n for (var i = 0; i < rowCnt; i += 1) {\n byRow[i] = null;\n }\n }\n else {\n for (var i = 0; i < rowCnt; i += 1) {\n byRow[i] = {\n affectedInstances: ui.affectedInstances,\n isEvent: ui.isEvent,\n segs: [],\n };\n }\n for (var _i = 0, _a = ui.segs; _i < _a.length; _i++) {\n var seg = _a[_i];\n byRow[seg.row].segs.push(seg);\n }\n }\n return byRow;\n}\n\nvar TableCellTop = /** @class */ (function (_super) {\n __extends(TableCellTop, _super);\n function TableCellTop() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TableCellTop.prototype.render = function () {\n var props = this.props;\n var navLinkAttrs = this.context.options.navLinks\n ? { 'data-navlink': buildNavLinkData(props.date), tabIndex: 0 }\n : {};\n return (createElement(DayCellContent, { date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, defaultContent: renderTopInner }, function (innerElRef, innerContent) { return ((innerContent || props.forceDayTop) && (createElement(\"div\", { className: \"fc-daygrid-day-top\", ref: innerElRef },\n createElement(\"a\", __assign({ className: \"fc-daygrid-day-number\" }, navLinkAttrs), innerContent || createElement(Fragment, null, \"\\u00A0\"))))); }));\n };\n return TableCellTop;\n}(BaseComponent));\nfunction renderTopInner(props) {\n return props.dayNumberText;\n}\n\nvar DEFAULT_TABLE_EVENT_TIME_FORMAT = createFormatter({\n hour: 'numeric',\n minute: '2-digit',\n omitZeroMinute: true,\n meridiem: 'narrow',\n});\nfunction hasListItemDisplay(seg) {\n var display = seg.eventRange.ui.display;\n return display === 'list-item' || (display === 'auto' &&\n !seg.eventRange.def.allDay &&\n seg.firstCol === seg.lastCol && // can't be multi-day\n seg.isStart && // \"\n seg.isEnd // \"\n );\n}\n\nvar TableBlockEvent = /** @class */ (function (_super) {\n __extends(TableBlockEvent, _super);\n function TableBlockEvent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TableBlockEvent.prototype.render = function () {\n var props = this.props;\n return (createElement(StandardEvent, __assign({}, props, { extraClassNames: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.seg.eventRange.def.allDay })));\n };\n return TableBlockEvent;\n}(BaseComponent));\n\nvar TableListItemEvent = /** @class */ (function (_super) {\n __extends(TableListItemEvent, _super);\n function TableListItemEvent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TableListItemEvent.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var timeFormat = context.options.eventTimeFormat || DEFAULT_TABLE_EVENT_TIME_FORMAT;\n var timeText = buildSegTimeText(props.seg, timeFormat, context, true, props.defaultDisplayEventEnd);\n return (createElement(EventRoot, { seg: props.seg, timeText: timeText, defaultContent: renderInnerContent, isDragging: props.isDragging, isResizing: false, isDateSelecting: false, isSelected: props.isSelected, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, function (rootElRef, classNames, innerElRef, innerContent) { return ( // we don't use styles!\n createElement(\"a\", __assign({ className: ['fc-daygrid-event', 'fc-daygrid-dot-event'].concat(classNames).join(' '), ref: rootElRef }, getSegAnchorAttrs(props.seg)), innerContent)); }));\n };\n return TableListItemEvent;\n}(BaseComponent));\nfunction renderInnerContent(innerProps) {\n return (createElement(Fragment, null,\n createElement(\"div\", { className: \"fc-daygrid-event-dot\", style: { borderColor: innerProps.borderColor || innerProps.backgroundColor } }),\n innerProps.timeText && (createElement(\"div\", { className: \"fc-event-time\" }, innerProps.timeText)),\n createElement(\"div\", { className: \"fc-event-title\" }, innerProps.event.title || createElement(Fragment, null, \"\\u00A0\"))));\n}\nfunction getSegAnchorAttrs(seg) {\n var url = seg.eventRange.def.url;\n return url ? { href: url } : {};\n}\n\nvar TableCellMoreLink = /** @class */ (function (_super) {\n __extends(TableCellMoreLink, _super);\n function TableCellMoreLink() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.compileSegs = memoize(compileSegs);\n return _this;\n }\n TableCellMoreLink.prototype.render = function () {\n var props = this.props;\n var _a = this.compileSegs(props.singlePlacements), allSegs = _a.allSegs, invisibleSegs = _a.invisibleSegs;\n return (createElement(MoreLinkRoot, { dateProfile: props.dateProfile, todayRange: props.todayRange, allDayDate: props.allDayDate, moreCnt: props.moreCnt, allSegs: allSegs, hiddenSegs: invisibleSegs, alignmentElRef: props.alignmentElRef, alignGridTop: props.alignGridTop, extraDateSpan: props.extraDateSpan, popoverContent: function () {\n var isForcedInvisible = (props.eventDrag ? props.eventDrag.affectedInstances : null) ||\n (props.eventResize ? props.eventResize.affectedInstances : null) ||\n {};\n return (createElement(Fragment, null, allSegs.map(function (seg) {\n var instanceId = seg.eventRange.instance.instanceId;\n return (createElement(\"div\", { className: \"fc-daygrid-event-harness\", key: instanceId, style: {\n visibility: isForcedInvisible[instanceId] ? 'hidden' : '',\n } }, hasListItemDisplay(seg) ? (createElement(TableListItemEvent, __assign({ seg: seg, isDragging: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, getSegMeta(seg, props.todayRange)))) : (createElement(TableBlockEvent, __assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, getSegMeta(seg, props.todayRange))))));\n })));\n } }, function (rootElRef, classNames, innerElRef, innerContent, handleClick) { return (createElement(\"a\", { ref: rootElRef, className: ['fc-daygrid-more-link'].concat(classNames).join(' '), onClick: handleClick }, innerContent)); }));\n };\n return TableCellMoreLink;\n}(BaseComponent));\nfunction compileSegs(singlePlacements) {\n var allSegs = [];\n var invisibleSegs = [];\n for (var _i = 0, singlePlacements_1 = singlePlacements; _i < singlePlacements_1.length; _i++) {\n var placement = singlePlacements_1[_i];\n allSegs.push(placement.seg);\n if (!placement.isVisible) {\n invisibleSegs.push(placement.seg);\n }\n }\n return { allSegs: allSegs, invisibleSegs: invisibleSegs };\n}\n\nvar DEFAULT_WEEK_NUM_FORMAT = createFormatter({ week: 'narrow' });\nvar TableCell = /** @class */ (function (_super) {\n __extends(TableCell, _super);\n function TableCell() {\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 setRef(_this.props.elRef, el);\n };\n return _this;\n }\n TableCell.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context, rootElRef = _a.rootElRef;\n var options = context.options;\n var date = props.date, dateProfile = props.dateProfile;\n var navLinkAttrs = options.navLinks\n ? { 'data-navlink': buildNavLinkData(date, 'week'), tabIndex: 0 }\n : {};\n return (createElement(DayCellRoot, { date: date, dateProfile: dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, elRef: this.handleRootEl }, function (dayElRef, dayClassNames, rootDataAttrs, isDisabled) { return (createElement(\"td\", __assign({ ref: dayElRef, className: ['fc-daygrid-day'].concat(dayClassNames, props.extraClassNames || []).join(' ') }, rootDataAttrs, props.extraDataAttrs),\n createElement(\"div\", { className: \"fc-daygrid-day-frame fc-scrollgrid-sync-inner\", ref: props.innerElRef /* different from hook system! RENAME */ },\n props.showWeekNumber && (createElement(WeekNumberRoot, { date: date, defaultFormat: DEFAULT_WEEK_NUM_FORMAT }, function (weekElRef, weekClassNames, innerElRef, innerContent) { return (createElement(\"a\", __assign({ ref: weekElRef, className: ['fc-daygrid-week-number'].concat(weekClassNames).join(' ') }, navLinkAttrs), innerContent)); })),\n !isDisabled && (createElement(TableCellTop, { date: date, dateProfile: dateProfile, showDayNumber: props.showDayNumber, forceDayTop: props.forceDayTop, todayRange: props.todayRange, extraHookProps: props.extraHookProps })),\n createElement(\"div\", { className: \"fc-daygrid-day-events\", ref: props.fgContentElRef },\n props.fgContent,\n createElement(\"div\", { className: \"fc-daygrid-day-bottom\", style: { marginTop: props.moreMarginTop } },\n createElement(TableCellMoreLink, { allDayDate: date, singlePlacements: props.singlePlacements, moreCnt: props.moreCnt, alignmentElRef: rootElRef, alignGridTop: !props.showDayNumber, extraDateSpan: props.extraDateSpan, dateProfile: props.dateProfile, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, todayRange: props.todayRange }))),\n createElement(\"div\", { className: \"fc-daygrid-day-bg\" }, props.bgContent)))); }));\n };\n return TableCell;\n}(DateComponent));\n\nfunction computeFgSegPlacement(segs, // assumed already sorted\ndayMaxEvents, dayMaxEventRows, strictOrder, eventInstanceHeights, maxContentHeight, cells) {\n var hierarchy = new DayGridSegHierarchy();\n hierarchy.allowReslicing = true;\n hierarchy.strictOrder = strictOrder;\n if (dayMaxEvents === true || dayMaxEventRows === true) {\n hierarchy.maxCoord = maxContentHeight;\n hierarchy.hiddenConsumes = true;\n }\n else if (typeof dayMaxEvents === 'number') {\n hierarchy.maxStackCnt = dayMaxEvents;\n }\n else if (typeof dayMaxEventRows === 'number') {\n hierarchy.maxStackCnt = dayMaxEventRows;\n hierarchy.hiddenConsumes = true;\n }\n // create segInputs only for segs with known heights\n var segInputs = [];\n var unknownHeightSegs = [];\n for (var i = 0; i < segs.length; i += 1) {\n var seg = segs[i];\n var instanceId = seg.eventRange.instance.instanceId;\n var eventHeight = eventInstanceHeights[instanceId];\n if (eventHeight != null) {\n segInputs.push({\n index: i,\n thickness: eventHeight,\n span: {\n start: seg.firstCol,\n end: seg.lastCol + 1,\n },\n });\n }\n else {\n unknownHeightSegs.push(seg);\n }\n }\n var hiddenEntries = hierarchy.addSegs(segInputs);\n var segRects = hierarchy.toRects();\n var _a = placeRects(segRects, segs, cells), singleColPlacements = _a.singleColPlacements, multiColPlacements = _a.multiColPlacements, leftoverMargins = _a.leftoverMargins;\n var moreCnts = [];\n var moreMarginTops = [];\n // add segs with unknown heights\n for (var _i = 0, unknownHeightSegs_1 = unknownHeightSegs; _i < unknownHeightSegs_1.length; _i++) {\n var seg = unknownHeightSegs_1[_i];\n multiColPlacements[seg.firstCol].push({\n seg: seg,\n isVisible: false,\n isAbsolute: true,\n absoluteTop: 0,\n marginTop: 0,\n });\n for (var col = seg.firstCol; col <= seg.lastCol; col += 1) {\n singleColPlacements[col].push({\n seg: resliceSeg(seg, col, col + 1, cells),\n isVisible: false,\n isAbsolute: false,\n absoluteTop: 0,\n marginTop: 0,\n });\n }\n }\n // add the hidden entries\n for (var col = 0; col < cells.length; col += 1) {\n moreCnts.push(0);\n }\n for (var _b = 0, hiddenEntries_1 = hiddenEntries; _b < hiddenEntries_1.length; _b++) {\n var hiddenEntry = hiddenEntries_1[_b];\n var seg = segs[hiddenEntry.index];\n var hiddenSpan = hiddenEntry.span;\n multiColPlacements[hiddenSpan.start].push({\n seg: resliceSeg(seg, hiddenSpan.start, hiddenSpan.end, cells),\n isVisible: false,\n isAbsolute: true,\n absoluteTop: 0,\n marginTop: 0,\n });\n for (var col = hiddenSpan.start; col < hiddenSpan.end; col += 1) {\n moreCnts[col] += 1;\n singleColPlacements[col].push({\n seg: resliceSeg(seg, col, col + 1, cells),\n isVisible: false,\n isAbsolute: false,\n absoluteTop: 0,\n marginTop: 0,\n });\n }\n }\n // deal with leftover margins\n for (var col = 0; col < cells.length; col += 1) {\n moreMarginTops.push(leftoverMargins[col]);\n }\n return { singleColPlacements: singleColPlacements, multiColPlacements: multiColPlacements, moreCnts: moreCnts, moreMarginTops: moreMarginTops };\n}\n// rects ordered by top coord, then left\nfunction placeRects(allRects, segs, cells) {\n var rectsByEachCol = groupRectsByEachCol(allRects, cells.length);\n var singleColPlacements = [];\n var multiColPlacements = [];\n var leftoverMargins = [];\n for (var col = 0; col < cells.length; col += 1) {\n var rects = rectsByEachCol[col];\n // compute all static segs in singlePlacements\n var singlePlacements = [];\n var currentHeight = 0;\n var currentMarginTop = 0;\n for (var _i = 0, rects_1 = rects; _i < rects_1.length; _i++) {\n var rect = rects_1[_i];\n var seg = segs[rect.index];\n singlePlacements.push({\n seg: resliceSeg(seg, col, col + 1, cells),\n isVisible: true,\n isAbsolute: false,\n absoluteTop: rect.levelCoord,\n marginTop: rect.levelCoord - currentHeight,\n });\n currentHeight = rect.levelCoord + rect.thickness;\n }\n // compute mixed static/absolute segs in multiPlacements\n var multiPlacements = [];\n currentHeight = 0;\n currentMarginTop = 0;\n for (var _a = 0, rects_2 = rects; _a < rects_2.length; _a++) {\n var rect = rects_2[_a];\n var seg = segs[rect.index];\n var isAbsolute = rect.span.end - rect.span.start > 1; // multi-column?\n var isFirstCol = rect.span.start === col;\n currentMarginTop += rect.levelCoord - currentHeight; // amount of space since bottom of previous seg\n currentHeight = rect.levelCoord + rect.thickness; // height will now be bottom of current seg\n if (isAbsolute) {\n currentMarginTop += rect.thickness;\n if (isFirstCol) {\n multiPlacements.push({\n seg: resliceSeg(seg, rect.span.start, rect.span.end, cells),\n isVisible: true,\n isAbsolute: true,\n absoluteTop: rect.levelCoord,\n marginTop: 0,\n });\n }\n }\n else if (isFirstCol) {\n multiPlacements.push({\n seg: resliceSeg(seg, rect.span.start, rect.span.end, cells),\n isVisible: true,\n isAbsolute: false,\n absoluteTop: rect.levelCoord,\n marginTop: currentMarginTop, // claim the margin\n });\n currentMarginTop = 0;\n }\n }\n singleColPlacements.push(singlePlacements);\n multiColPlacements.push(multiPlacements);\n leftoverMargins.push(currentMarginTop);\n }\n return { singleColPlacements: singleColPlacements, multiColPlacements: multiColPlacements, leftoverMargins: leftoverMargins };\n}\nfunction groupRectsByEachCol(rects, colCnt) {\n var rectsByEachCol = [];\n for (var col = 0; col < colCnt; col += 1) {\n rectsByEachCol.push([]);\n }\n for (var _i = 0, rects_3 = rects; _i < rects_3.length; _i++) {\n var rect = rects_3[_i];\n for (var col = rect.span.start; col < rect.span.end; col += 1) {\n rectsByEachCol[col].push(rect);\n }\n }\n return rectsByEachCol;\n}\nfunction resliceSeg(seg, spanStart, spanEnd, cells) {\n if (seg.firstCol === spanStart && seg.lastCol === spanEnd - 1) {\n return seg;\n }\n var eventRange = seg.eventRange;\n var origRange = eventRange.range;\n var slicedRange = intersectRanges(origRange, {\n start: cells[spanStart].date,\n end: addDays(cells[spanEnd - 1].date, 1),\n });\n return __assign(__assign({}, seg), { firstCol: spanStart, lastCol: spanEnd - 1, eventRange: {\n def: eventRange.def,\n ui: __assign(__assign({}, eventRange.ui), { durationEditable: false }),\n instance: eventRange.instance,\n range: slicedRange,\n }, isStart: seg.isStart && slicedRange.start.valueOf() === origRange.start.valueOf(), isEnd: seg.isEnd && slicedRange.end.valueOf() === origRange.end.valueOf() });\n}\nvar DayGridSegHierarchy = /** @class */ (function (_super) {\n __extends(DayGridSegHierarchy, _super);\n function DayGridSegHierarchy() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // config\n _this.hiddenConsumes = false;\n // allows us to keep hidden entries in the hierarchy so they take up space\n _this.forceHidden = {};\n return _this;\n }\n DayGridSegHierarchy.prototype.addSegs = function (segInputs) {\n var _this = this;\n var hiddenSegs = _super.prototype.addSegs.call(this, segInputs);\n var entriesByLevel = this.entriesByLevel;\n var excludeHidden = function (entry) { return !_this.forceHidden[buildEntryKey(entry)]; };\n // remove the forced-hidden segs\n for (var level = 0; level < entriesByLevel.length; level += 1) {\n entriesByLevel[level] = entriesByLevel[level].filter(excludeHidden);\n }\n return hiddenSegs;\n };\n DayGridSegHierarchy.prototype.handleInvalidInsertion = function (insertion, entry, hiddenEntries) {\n var _a = this, entriesByLevel = _a.entriesByLevel, forceHidden = _a.forceHidden;\n var touchingEntry = insertion.touchingEntry, touchingLevel = insertion.touchingLevel, touchingLateral = insertion.touchingLateral;\n if (this.hiddenConsumes && touchingEntry) {\n var touchingEntryId = buildEntryKey(touchingEntry);\n // if not already hidden\n if (!forceHidden[touchingEntryId]) {\n if (this.allowReslicing) {\n var placeholderEntry = __assign(__assign({}, touchingEntry), { span: intersectSpans(touchingEntry.span, entry.span) });\n var placeholderEntryId = buildEntryKey(placeholderEntry);\n forceHidden[placeholderEntryId] = true;\n entriesByLevel[touchingLevel][touchingLateral] = placeholderEntry; // replace touchingEntry with our placeholder\n this.splitEntry(touchingEntry, entry, hiddenEntries); // split up the touchingEntry, reinsert it\n }\n else {\n forceHidden[touchingEntryId] = true;\n hiddenEntries.push(touchingEntry);\n }\n }\n }\n return _super.prototype.handleInvalidInsertion.call(this, insertion, entry, hiddenEntries);\n };\n return DayGridSegHierarchy;\n}(SegHierarchy));\n\nvar TableRow = /** @class */ (function (_super) {\n __extends(TableRow, _super);\n function TableRow() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellElRefs = new RefMap(); // the \n _this.frameElRefs = new RefMap(); // the fc-daygrid-day-frame\n _this.fgElRefs = new RefMap(); // the fc-daygrid-day-events\n _this.segHarnessRefs = new RefMap(); // indexed by \"instanceId:firstCol\"\n _this.rootElRef = createRef();\n _this.state = {\n framePositions: null,\n maxContentHeight: null,\n eventInstanceHeights: {},\n };\n return _this;\n }\n TableRow.prototype.render = function () {\n var _this = this;\n var _a = this, props = _a.props, state = _a.state, context = _a.context;\n var options = context.options;\n var colCnt = props.cells.length;\n var businessHoursByCol = splitSegsByFirstCol(props.businessHourSegs, colCnt);\n var bgEventSegsByCol = splitSegsByFirstCol(props.bgEventSegs, colCnt);\n var highlightSegsByCol = splitSegsByFirstCol(this.getHighlightSegs(), colCnt);\n var mirrorSegsByCol = splitSegsByFirstCol(this.getMirrorSegs(), colCnt);\n var _b = computeFgSegPlacement(sortEventSegs(props.fgEventSegs, options.eventOrder), props.dayMaxEvents, props.dayMaxEventRows, options.eventOrderStrict, state.eventInstanceHeights, state.maxContentHeight, props.cells), singleColPlacements = _b.singleColPlacements, multiColPlacements = _b.multiColPlacements, moreCnts = _b.moreCnts, moreMarginTops = _b.moreMarginTops;\n var isForcedInvisible = // TODO: messy way to compute this\n (props.eventDrag && props.eventDrag.affectedInstances) ||\n (props.eventResize && props.eventResize.affectedInstances) ||\n {};\n return (createElement(\"tr\", { ref: this.rootElRef },\n props.renderIntro && props.renderIntro(),\n props.cells.map(function (cell, col) {\n var normalFgNodes = _this.renderFgSegs(col, props.forPrint ? singleColPlacements[col] : multiColPlacements[col], props.todayRange, isForcedInvisible);\n var mirrorFgNodes = _this.renderFgSegs(col, buildMirrorPlacements(mirrorSegsByCol[col], multiColPlacements), props.todayRange, {}, Boolean(props.eventDrag), Boolean(props.eventResize), false);\n return (createElement(TableCell, { key: cell.key, elRef: _this.cellElRefs.createRef(cell.key), innerElRef: _this.frameElRefs.createRef(cell.key) /* FF problem, but okay to use for left/right. TODO: rename prop */, dateProfile: props.dateProfile, date: cell.date, showDayNumber: props.showDayNumbers, showWeekNumber: props.showWeekNumbers && col === 0, forceDayTop: props.showWeekNumbers /* even displaying weeknum for row, not necessarily day */, todayRange: props.todayRange, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, extraHookProps: cell.extraHookProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, extraDateSpan: cell.extraDateSpan, moreCnt: moreCnts[col], moreMarginTop: moreMarginTops[col], singlePlacements: singleColPlacements[col], fgContentElRef: _this.fgElRefs.createRef(cell.key), fgContent: ( // Fragment scopes the keys\n createElement(Fragment, null,\n createElement(Fragment, null, normalFgNodes),\n createElement(Fragment, null, mirrorFgNodes))), bgContent: ( // Fragment scopes the keys\n createElement(Fragment, null,\n _this.renderFillSegs(highlightSegsByCol[col], 'highlight'),\n _this.renderFillSegs(businessHoursByCol[col], 'non-business'),\n _this.renderFillSegs(bgEventSegsByCol[col], 'bg-event'))) }));\n })));\n };\n TableRow.prototype.componentDidMount = function () {\n this.updateSizing(true);\n };\n TableRow.prototype.componentDidUpdate = function (prevProps, prevState) {\n var currentProps = this.props;\n this.updateSizing(!isPropsEqual(prevProps, currentProps));\n };\n TableRow.prototype.getHighlightSegs = function () {\n var props = this.props;\n if (props.eventDrag && props.eventDrag.segs.length) { // messy check\n return props.eventDrag.segs;\n }\n if (props.eventResize && props.eventResize.segs.length) { // messy check\n return props.eventResize.segs;\n }\n return props.dateSelectionSegs;\n };\n TableRow.prototype.getMirrorSegs = function () {\n var props = this.props;\n if (props.eventResize && props.eventResize.segs.length) { // messy check\n return props.eventResize.segs;\n }\n return [];\n };\n TableRow.prototype.renderFgSegs = function (col, segPlacements, todayRange, isForcedInvisible, isDragging, isResizing, isDateSelecting) {\n var context = this.context;\n var eventSelection = this.props.eventSelection;\n var framePositions = this.state.framePositions;\n var defaultDisplayEventEnd = this.props.cells.length === 1; // colCnt === 1\n var isMirror = isDragging || isResizing || isDateSelecting;\n var nodes = [];\n if (framePositions) {\n for (var _i = 0, segPlacements_1 = segPlacements; _i < segPlacements_1.length; _i++) {\n var placement = segPlacements_1[_i];\n var seg = placement.seg;\n var instanceId = seg.eventRange.instance.instanceId;\n var key = instanceId + ':' + col;\n var isVisible = placement.isVisible && !isForcedInvisible[instanceId];\n var isAbsolute = placement.isAbsolute;\n var left = '';\n var right = '';\n if (isAbsolute) {\n if (context.isRtl) {\n right = 0;\n left = framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol];\n }\n else {\n left = 0;\n right = framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol];\n }\n }\n /*\n known bug: events that are force to be list-item but span multiple days still take up space in later columns\n todo: in print view, for multi-day events, don't display title within non-start/end segs\n */\n nodes.push(createElement(\"div\", { className: 'fc-daygrid-event-harness' + (isAbsolute ? ' fc-daygrid-event-harness-abs' : ''), key: key, ref: isMirror ? null : this.segHarnessRefs.createRef(key), style: {\n visibility: isVisible ? '' : 'hidden',\n marginTop: isAbsolute ? '' : placement.marginTop,\n top: isAbsolute ? placement.absoluteTop : '',\n left: left,\n right: right,\n } }, hasListItemDisplay(seg) ? (createElement(TableListItemEvent, __assign({ seg: seg, isDragging: isDragging, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, getSegMeta(seg, todayRange)))) : (createElement(TableBlockEvent, __assign({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, getSegMeta(seg, todayRange))))));\n }\n }\n return nodes;\n };\n TableRow.prototype.renderFillSegs = function (segs, fillType) {\n var isRtl = this.context.isRtl;\n var todayRange = this.props.todayRange;\n var framePositions = this.state.framePositions;\n var nodes = [];\n if (framePositions) {\n for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) {\n var seg = segs_1[_i];\n var leftRightCss = isRtl ? {\n right: 0,\n left: framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol],\n } : {\n left: 0,\n right: framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol],\n };\n nodes.push(createElement(\"div\", { key: buildEventRangeKey(seg.eventRange), className: \"fc-daygrid-bg-harness\", style: leftRightCss }, fillType === 'bg-event' ?\n createElement(BgEvent, __assign({ seg: seg }, getSegMeta(seg, todayRange))) :\n renderFill(fillType)));\n }\n }\n return createElement.apply(void 0, __spreadArray([Fragment, {}], nodes));\n };\n TableRow.prototype.updateSizing = function (isExternalSizingChange) {\n var _a = this, props = _a.props, frameElRefs = _a.frameElRefs;\n if (!props.forPrint &&\n props.clientWidth !== null // positioning ready?\n ) {\n if (isExternalSizingChange) {\n var frameEls = props.cells.map(function (cell) { return frameElRefs.currentMap[cell.key]; });\n if (frameEls.length) {\n var originEl = this.rootElRef.current;\n this.setState({\n framePositions: new PositionCache(originEl, frameEls, true, // isHorizontal\n false),\n });\n }\n }\n var limitByContentHeight = props.dayMaxEvents === true || props.dayMaxEventRows === true;\n this.setState({\n eventInstanceHeights: this.queryEventInstanceHeights(),\n maxContentHeight: limitByContentHeight ? this.computeMaxContentHeight() : null,\n });\n }\n };\n TableRow.prototype.queryEventInstanceHeights = function () {\n var segElMap = this.segHarnessRefs.currentMap;\n var eventInstanceHeights = {};\n // get the max height amongst instance segs\n for (var key in segElMap) {\n var height = Math.round(segElMap[key].getBoundingClientRect().height);\n var instanceId = key.split(':')[0]; // deconstruct how renderFgSegs makes the key\n eventInstanceHeights[instanceId] = Math.max(eventInstanceHeights[instanceId] || 0, height);\n }\n return eventInstanceHeights;\n };\n TableRow.prototype.computeMaxContentHeight = function () {\n var firstKey = this.props.cells[0].key;\n var cellEl = this.cellElRefs.currentMap[firstKey];\n var fcContainerEl = this.fgElRefs.currentMap[firstKey];\n return cellEl.getBoundingClientRect().bottom - fcContainerEl.getBoundingClientRect().top;\n };\n TableRow.prototype.getCellEls = function () {\n var elMap = this.cellElRefs.currentMap;\n return this.props.cells.map(function (cell) { return elMap[cell.key]; });\n };\n return TableRow;\n}(DateComponent));\nTableRow.addStateEquality({\n eventInstanceHeights: isPropsEqual,\n});\nfunction buildMirrorPlacements(mirrorSegs, colPlacements) {\n if (!mirrorSegs.length) {\n return [];\n }\n var topsByInstanceId = buildAbsoluteTopHash(colPlacements); // TODO: cache this at first render?\n return mirrorSegs.map(function (seg) { return ({\n seg: seg,\n isVisible: true,\n isAbsolute: true,\n absoluteTop: topsByInstanceId[seg.eventRange.instance.instanceId],\n marginTop: 0,\n }); });\n}\nfunction buildAbsoluteTopHash(colPlacements) {\n var topsByInstanceId = {};\n for (var _i = 0, colPlacements_1 = colPlacements; _i < colPlacements_1.length; _i++) {\n var placements = colPlacements_1[_i];\n for (var _a = 0, placements_1 = placements; _a < placements_1.length; _a++) {\n var placement = placements_1[_a];\n topsByInstanceId[placement.seg.eventRange.instance.instanceId] = placement.absoluteTop;\n }\n }\n return topsByInstanceId;\n}\n\nvar Table = /** @class */ (function (_super) {\n __extends(Table, _super);\n function Table() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.splitBusinessHourSegs = memoize(splitSegsByRow);\n _this.splitBgEventSegs = memoize(splitSegsByRow);\n _this.splitFgEventSegs = memoize(splitSegsByRow);\n _this.splitDateSelectionSegs = memoize(splitSegsByRow);\n _this.splitEventDrag = memoize(splitInteractionByRow);\n _this.splitEventResize = memoize(splitInteractionByRow);\n _this.rowRefs = new RefMap();\n _this.handleRootEl = function (rootEl) {\n _this.rootEl = rootEl;\n if (rootEl) {\n _this.context.registerInteractiveComponent(_this, {\n el: rootEl,\n isHitComboAllowed: _this.props.isHitComboAllowed,\n });\n }\n else {\n _this.context.unregisterInteractiveComponent(_this);\n }\n };\n return _this;\n }\n Table.prototype.render = function () {\n var _this = this;\n var props = this.props;\n var dateProfile = props.dateProfile, dayMaxEventRows = props.dayMaxEventRows, dayMaxEvents = props.dayMaxEvents, expandRows = props.expandRows;\n var rowCnt = props.cells.length;\n var businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, rowCnt);\n var bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, rowCnt);\n var fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, rowCnt);\n var dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, rowCnt);\n var eventDragByRow = this.splitEventDrag(props.eventDrag, rowCnt);\n var eventResizeByRow = this.splitEventResize(props.eventResize, rowCnt);\n var limitViaBalanced = dayMaxEvents === true || dayMaxEventRows === true;\n // if rows can't expand to fill fixed height, can't do balanced-height event limit\n // TODO: best place to normalize these options?\n if (limitViaBalanced && !expandRows) {\n limitViaBalanced = false;\n dayMaxEventRows = null;\n dayMaxEvents = null;\n }\n var classNames = [\n 'fc-daygrid-body',\n limitViaBalanced ? 'fc-daygrid-body-balanced' : 'fc-daygrid-body-unbalanced',\n expandRows ? '' : 'fc-daygrid-body-natural', // will height of one row depend on the others?\n ];\n return (createElement(\"div\", { className: classNames.join(' '), ref: this.handleRootEl, style: {\n // these props are important to give this wrapper correct dimensions for interactions\n // TODO: if we set it here, can we avoid giving to inner tables?\n width: props.clientWidth,\n minWidth: props.tableMinWidth,\n } },\n createElement(NowTimer, { unit: \"day\" }, function (nowDate, todayRange) { return (createElement(Fragment, null,\n createElement(\"table\", { className: \"fc-scrollgrid-sync-table\", style: {\n width: props.clientWidth,\n minWidth: props.tableMinWidth,\n height: expandRows ? props.clientHeight : '',\n } },\n props.colGroupNode,\n createElement(\"tbody\", null, props.cells.map(function (cells, row) { return (createElement(TableRow, { ref: _this.rowRefs.createRef(row), key: cells.length\n ? cells[0].date.toISOString() /* best? or put key on cell? or use diff formatter? */\n : row // in case there are no cells (like when resource view is loading)\n , showDayNumbers: rowCnt > 1, showWeekNumbers: props.showWeekNumbers, todayRange: todayRange, dateProfile: dateProfile, cells: cells, renderIntro: props.renderRowIntro, businessHourSegs: businessHourSegsByRow[row], eventSelection: props.eventSelection, bgEventSegs: bgEventSegsByRow[row].filter(isSegAllDay) /* hack */, fgEventSegs: fgEventSegsByRow[row], dateSelectionSegs: dateSelectionSegsByRow[row], eventDrag: eventDragByRow[row], eventResize: eventResizeByRow[row], dayMaxEvents: dayMaxEvents, dayMaxEventRows: dayMaxEventRows, clientWidth: props.clientWidth, clientHeight: props.clientHeight, forPrint: props.forPrint })); }))))); })));\n };\n // Hit System\n // ----------------------------------------------------------------------------------------------------\n Table.prototype.prepareHits = function () {\n this.rowPositions = new PositionCache(this.rootEl, this.rowRefs.collect().map(function (rowObj) { return rowObj.getCellEls()[0]; }), // first cell el in each row. TODO: not optimal\n false, true);\n this.colPositions = new PositionCache(this.rootEl, this.rowRefs.currentMap[0].getCellEls(), // cell els in first row\n true, // horizontal\n false);\n };\n Table.prototype.queryHit = function (positionLeft, positionTop) {\n var _a = this, colPositions = _a.colPositions, rowPositions = _a.rowPositions;\n var col = colPositions.leftToIndex(positionLeft);\n var row = rowPositions.topToIndex(positionTop);\n if (row != null && col != null) {\n var cell = this.props.cells[row][col];\n return {\n dateProfile: this.props.dateProfile,\n dateSpan: __assign({ range: this.getCellRange(row, col), allDay: true }, cell.extraDateSpan),\n dayEl: this.getCellEl(row, col),\n rect: {\n left: colPositions.lefts[col],\n right: colPositions.rights[col],\n top: rowPositions.tops[row],\n bottom: rowPositions.bottoms[row],\n },\n layer: 0,\n };\n }\n return null;\n };\n Table.prototype.getCellEl = function (row, col) {\n return this.rowRefs.currentMap[row].getCellEls()[col]; // TODO: not optimal\n };\n Table.prototype.getCellRange = function (row, col) {\n var start = this.props.cells[row][col].date;\n var end = addDays(start, 1);\n return { start: start, end: end };\n };\n return Table;\n}(DateComponent));\nfunction isSegAllDay(seg) {\n return seg.eventRange.def.allDay;\n}\n\nvar DayTableSlicer = /** @class */ (function (_super) {\n __extends(DayTableSlicer, _super);\n function DayTableSlicer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.forceDayIfListItem = true;\n return _this;\n }\n DayTableSlicer.prototype.sliceRange = function (dateRange, dayTableModel) {\n return dayTableModel.sliceRange(dateRange);\n };\n return DayTableSlicer;\n}(Slicer));\n\nvar DayTable = /** @class */ (function (_super) {\n __extends(DayTable, _super);\n function DayTable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.slicer = new DayTableSlicer();\n _this.tableRef = createRef();\n return _this;\n }\n DayTable.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n return (createElement(Table, __assign({ ref: this.tableRef }, this.slicer.sliceProps(props, props.dateProfile, props.nextDayThreshold, context, props.dayTableModel), { dateProfile: props.dateProfile, cells: props.dayTableModel.cells, colGroupNode: props.colGroupNode, tableMinWidth: props.tableMinWidth, renderRowIntro: props.renderRowIntro, dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, showWeekNumbers: props.showWeekNumbers, expandRows: props.expandRows, headerAlignElRef: props.headerAlignElRef, clientWidth: props.clientWidth, clientHeight: props.clientHeight, forPrint: props.forPrint })));\n };\n return DayTable;\n}(DateComponent));\n\nvar DayTableView = /** @class */ (function (_super) {\n __extends(DayTableView, _super);\n function DayTableView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.buildDayTableModel = memoize(buildDayTableModel);\n _this.headerRef = createRef();\n _this.tableRef = createRef();\n return _this;\n }\n DayTableView.prototype.render = function () {\n var _this = this;\n var _a = this.context, options = _a.options, dateProfileGenerator = _a.dateProfileGenerator;\n var props = this.props;\n var dayTableModel = this.buildDayTableModel(props.dateProfile, dateProfileGenerator);\n var headerContent = options.dayHeaders && (createElement(DayHeader, { ref: this.headerRef, dateProfile: props.dateProfile, dates: dayTableModel.headerDates, datesRepDistinctDays: dayTableModel.rowCnt === 1 }));\n var bodyContent = function (contentArg) { return (createElement(DayTable, { ref: _this.tableRef, dateProfile: props.dateProfile, dayTableModel: dayTableModel, businessHours: props.businessHours, dateSelection: props.dateSelection, eventStore: props.eventStore, eventUiBases: props.eventUiBases, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, nextDayThreshold: options.nextDayThreshold, colGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, dayMaxEvents: options.dayMaxEvents, dayMaxEventRows: options.dayMaxEventRows, showWeekNumbers: options.weekNumbers, expandRows: !props.isHeightAuto, headerAlignElRef: _this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint })); };\n return options.dayMinWidth\n ? this.renderHScrollLayout(headerContent, bodyContent, dayTableModel.colCnt, options.dayMinWidth)\n : this.renderSimpleLayout(headerContent, bodyContent);\n };\n return DayTableView;\n}(TableView));\nfunction buildDayTableModel(dateProfile, dateProfileGenerator) {\n var daySeries = new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator);\n return new DayTableModel(daySeries, /year|month|week/.test(dateProfile.currentRangeUnit));\n}\n\nvar TableDateProfileGenerator = /** @class */ (function (_super) {\n __extends(TableDateProfileGenerator, _super);\n function TableDateProfileGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // Computes the date range that will be rendered.\n TableDateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) {\n var dateEnv = this.props.dateEnv;\n var renderRange = _super.prototype.buildRenderRange.call(this, currentRange, currentRangeUnit, isRangeAllDay);\n var start = renderRange.start;\n var end = renderRange.end;\n var endOfWeek;\n // year and month views should be aligned with weeks. this is already done for week\n if (/^(year|month)$/.test(currentRangeUnit)) {\n start = dateEnv.startOfWeek(start);\n // make end-of-week if not already\n endOfWeek = dateEnv.startOfWeek(end);\n if (endOfWeek.valueOf() !== end.valueOf()) {\n end = addWeeks(endOfWeek, 1);\n }\n }\n // ensure 6 weeks\n if (this.props.monthMode &&\n this.props.fixedWeekCount) {\n var rowCnt = Math.ceil(// could be partial weeks due to hiddenDays\n diffWeeks(start, end));\n end = addWeeks(end, 6 - rowCnt);\n }\n return { start: start, end: end };\n };\n return TableDateProfileGenerator;\n}(DateProfileGenerator));\n\nvar main = createPlugin({\n initialView: 'dayGridMonth',\n views: {\n dayGrid: {\n component: DayTableView,\n dateProfileGeneratorClass: TableDateProfileGenerator,\n },\n dayGridDay: {\n type: 'dayGrid',\n duration: { days: 1 },\n },\n dayGridWeek: {\n type: 'dayGrid',\n duration: { weeks: 1 },\n },\n dayGridMonth: {\n type: 'dayGrid',\n duration: { months: 1 },\n monthMode: true,\n fixedWeekCount: true,\n },\n },\n});\n\nexport default main;\nexport { DayTableView as DayGridView, DayTable, DayTableSlicer, Table, TableView, buildDayTableModel };\n//# sourceMappingURL=main.js.map\n","/*!\nFullCalendar v5.9.0\nDocs & License: https://fullcalendar.io/\n(c) 2021 Adam Shaw\n*/\nimport './main.css';\n\nimport { hasBgRendering, Splitter, createFormatter, createElement, ViewContextType, RenderHook, BaseComponent, createRef, diffDays, buildNavLinkData, WeekNumberRoot, getStickyHeaderDates, ViewRoot, SimpleScrollGrid, getStickyFooterScrollbar, NowTimer, NowIndicatorRoot, renderScrollShim, DateComponent, rangeContainsMarker, startOfDay, asRoughMs, createDuration, RefMap, PositionCache, MoreLinkRoot, setRef, SegHierarchy, groupIntersectingEntries, buildEntryKey, binarySearch, getEntrySpanEnd, StandardEvent, DayCellContent, Fragment, getSegMeta, memoize, sortEventSegs, DayCellRoot, buildIsoString, computeEarliestSegStart, buildEventRangeKey, BgEvent, renderFill, addDurations, multiplyDuration, wholeDivideDurations, intersectRanges, Slicer, formatIsoTimeString, DayHeader, DaySeriesModel, DayTableModel, createPlugin } from '@fullcalendar/common';\nimport { __extends, __assign } from 'tslib';\nimport { DayTable } from '@fullcalendar/daygrid';\n\nvar AllDaySplitter = /** @class */ (function (_super) {\n __extends(AllDaySplitter, _super);\n function AllDaySplitter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AllDaySplitter.prototype.getKeyInfo = function () {\n return {\n allDay: {},\n timed: {},\n };\n };\n AllDaySplitter.prototype.getKeysForDateSpan = function (dateSpan) {\n if (dateSpan.allDay) {\n return ['allDay'];\n }\n return ['timed'];\n };\n AllDaySplitter.prototype.getKeysForEventDef = function (eventDef) {\n if (!eventDef.allDay) {\n return ['timed'];\n }\n if (hasBgRendering(eventDef)) {\n return ['timed', 'allDay'];\n }\n return ['allDay'];\n };\n return AllDaySplitter;\n}(Splitter));\n\nvar DEFAULT_SLAT_LABEL_FORMAT = createFormatter({\n hour: 'numeric',\n minute: '2-digit',\n omitZeroMinute: true,\n meridiem: 'short',\n});\nfunction TimeColsAxisCell(props) {\n var classNames = [\n 'fc-timegrid-slot',\n 'fc-timegrid-slot-label',\n props.isLabeled ? 'fc-scrollgrid-shrink' : 'fc-timegrid-slot-minor',\n ];\n return (createElement(ViewContextType.Consumer, null, function (context) {\n if (!props.isLabeled) {\n return (createElement(\"td\", { className: classNames.join(' '), \"data-time\": props.isoTimeStr }));\n }\n var dateEnv = context.dateEnv, options = context.options, viewApi = context.viewApi;\n var labelFormat = // TODO: fully pre-parse\n options.slotLabelFormat == null ? DEFAULT_SLAT_LABEL_FORMAT :\n Array.isArray(options.slotLabelFormat) ? createFormatter(options.slotLabelFormat[0]) :\n createFormatter(options.slotLabelFormat);\n var hookProps = {\n level: 0,\n time: props.time,\n date: dateEnv.toDate(props.date),\n view: viewApi,\n text: dateEnv.format(props.date, labelFormat),\n };\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.slotLabelClassNames, content: options.slotLabelContent, defaultContent: renderInnerContent, didMount: options.slotLabelDidMount, willUnmount: options.slotLabelWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return (createElement(\"td\", { ref: rootElRef, className: classNames.concat(customClassNames).join(' '), \"data-time\": props.isoTimeStr },\n createElement(\"div\", { className: \"fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame\" },\n createElement(\"div\", { className: \"fc-timegrid-slot-label-cushion fc-scrollgrid-shrink-cushion\", ref: innerElRef }, innerContent)))); }));\n }));\n}\nfunction renderInnerContent(props) {\n return props.text;\n}\n\nvar TimeBodyAxis = /** @class */ (function (_super) {\n __extends(TimeBodyAxis, _super);\n function TimeBodyAxis() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TimeBodyAxis.prototype.render = function () {\n return this.props.slatMetas.map(function (slatMeta) { return (createElement(\"tr\", { key: slatMeta.key },\n createElement(TimeColsAxisCell, __assign({}, slatMeta)))); });\n };\n return TimeBodyAxis;\n}(BaseComponent));\n\nvar DEFAULT_WEEK_NUM_FORMAT = createFormatter({ week: 'short' });\nvar AUTO_ALL_DAY_MAX_EVENT_ROWS = 5;\nvar TimeColsView = /** @class */ (function (_super) {\n __extends(TimeColsView, _super);\n function TimeColsView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.allDaySplitter = new AllDaySplitter(); // for use by subclasses\n _this.headerElRef = createRef();\n _this.rootElRef = createRef();\n _this.scrollerElRef = createRef();\n _this.state = {\n slatCoords: null,\n };\n _this.handleScrollTopRequest = function (scrollTop) {\n var scrollerEl = _this.scrollerElRef.current;\n if (scrollerEl) { // TODO: not sure how this could ever be null. weirdness with the reducer\n scrollerEl.scrollTop = scrollTop;\n }\n };\n /* Header Render Methods\n ------------------------------------------------------------------------------------------------------------------*/\n _this.renderHeadAxis = function (rowKey, frameHeight) {\n if (frameHeight === void 0) { frameHeight = ''; }\n var options = _this.context.options;\n var dateProfile = _this.props.dateProfile;\n var range = dateProfile.renderRange;\n var dayCnt = diffDays(range.start, range.end);\n var navLinkAttrs = (options.navLinks && dayCnt === 1) // only do in day views (to avoid doing in week views that dont need it)\n ? { 'data-navlink': buildNavLinkData(range.start, 'week'), tabIndex: 0 }\n : {};\n if (options.weekNumbers && rowKey === 'day') {\n return (createElement(WeekNumberRoot, { date: range.start, defaultFormat: DEFAULT_WEEK_NUM_FORMAT }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement(\"th\", { ref: rootElRef, className: [\n 'fc-timegrid-axis',\n 'fc-scrollgrid-shrink',\n ].concat(classNames).join(' ') },\n createElement(\"div\", { className: \"fc-timegrid-axis-frame fc-scrollgrid-shrink-frame fc-timegrid-axis-frame-liquid\", style: { height: frameHeight } },\n createElement(\"a\", __assign({ ref: innerElRef, className: \"fc-timegrid-axis-cushion fc-scrollgrid-shrink-cushion fc-scrollgrid-sync-inner\" }, navLinkAttrs), innerContent)))); }));\n }\n return (createElement(\"th\", { className: \"fc-timegrid-axis\" },\n createElement(\"div\", { className: \"fc-timegrid-axis-frame\", style: { height: frameHeight } })));\n };\n /* Table Component Render Methods\n ------------------------------------------------------------------------------------------------------------------*/\n // only a one-way height sync. we don't send the axis inner-content height to the DayGrid,\n // but DayGrid still needs to have classNames on inner elements in order to measure.\n _this.renderTableRowAxis = function (rowHeight) {\n var _a = _this.context, options = _a.options, viewApi = _a.viewApi;\n var hookProps = {\n text: options.allDayText,\n view: viewApi,\n };\n return (\n // TODO: make reusable hook. used in list view too\n createElement(RenderHook, { hookProps: hookProps, classNames: options.allDayClassNames, content: options.allDayContent, defaultContent: renderAllDayInner, didMount: options.allDayDidMount, willUnmount: options.allDayWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement(\"td\", { ref: rootElRef, className: [\n 'fc-timegrid-axis',\n 'fc-scrollgrid-shrink',\n ].concat(classNames).join(' ') },\n createElement(\"div\", { className: 'fc-timegrid-axis-frame fc-scrollgrid-shrink-frame' + (rowHeight == null ? ' fc-timegrid-axis-frame-liquid' : ''), style: { height: rowHeight } },\n createElement(\"span\", { className: \"fc-timegrid-axis-cushion fc-scrollgrid-shrink-cushion fc-scrollgrid-sync-inner\", ref: innerElRef }, innerContent)))); }));\n };\n _this.handleSlatCoords = function (slatCoords) {\n _this.setState({ slatCoords: slatCoords });\n };\n return _this;\n }\n // rendering\n // ----------------------------------------------------------------------------------------------------\n TimeColsView.prototype.renderSimpleLayout = function (headerRowContent, allDayContent, timeContent) {\n var _a = this, context = _a.context, props = _a.props;\n var sections = [];\n var stickyHeaderDates = getStickyHeaderDates(context.options);\n if (headerRowContent) {\n sections.push({\n type: 'header',\n key: 'header',\n isSticky: stickyHeaderDates,\n chunk: {\n elRef: this.headerElRef,\n tableClassName: 'fc-col-header',\n rowContent: headerRowContent,\n },\n });\n }\n if (allDayContent) {\n sections.push({\n type: 'body',\n key: 'all-day',\n chunk: { content: allDayContent },\n });\n sections.push({\n type: 'body',\n key: 'all-day-divider',\n outerContent: ( // TODO: rename to cellContent so don't need to define ?\n createElement(\"tr\", { className: \"fc-scrollgrid-section\" },\n createElement(\"td\", { className: 'fc-timegrid-divider ' + context.theme.getClass('tableCellShaded') }))),\n });\n }\n sections.push({\n type: 'body',\n key: 'body',\n liquid: true,\n expandRows: Boolean(context.options.expandRows),\n chunk: {\n scrollerElRef: this.scrollerElRef,\n content: timeContent,\n },\n });\n return (createElement(ViewRoot, { viewSpec: context.viewSpec, elRef: this.rootElRef }, function (rootElRef, classNames) { return (createElement(\"div\", { className: ['fc-timegrid'].concat(classNames).join(' '), ref: rootElRef },\n createElement(SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [{ width: 'shrink' }], sections: sections }))); }));\n };\n TimeColsView.prototype.renderHScrollLayout = function (headerRowContent, allDayContent, timeContent, colCnt, dayMinWidth, slatMetas, slatCoords) {\n var _this = this;\n var ScrollGrid = this.context.pluginHooks.scrollGridImpl;\n if (!ScrollGrid) {\n throw new Error('No ScrollGrid implementation');\n }\n var _a = this, context = _a.context, props = _a.props;\n var stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options);\n var stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options);\n var sections = [];\n if (headerRowContent) {\n sections.push({\n type: 'header',\n key: 'header',\n isSticky: stickyHeaderDates,\n syncRowHeights: true,\n chunks: [\n {\n key: 'axis',\n rowContent: function (arg) { return (createElement(\"tr\", null, _this.renderHeadAxis('day', arg.rowSyncHeights[0]))); },\n },\n {\n key: 'cols',\n elRef: this.headerElRef,\n tableClassName: 'fc-col-header',\n rowContent: headerRowContent,\n },\n ],\n });\n }\n if (allDayContent) {\n sections.push({\n type: 'body',\n key: 'all-day',\n syncRowHeights: true,\n chunks: [\n {\n key: 'axis',\n rowContent: function (contentArg) { return (createElement(\"tr\", null, _this.renderTableRowAxis(contentArg.rowSyncHeights[0]))); },\n },\n {\n key: 'cols',\n content: allDayContent,\n },\n ],\n });\n sections.push({\n key: 'all-day-divider',\n type: 'body',\n outerContent: ( // TODO: rename to cellContent so don't need to define ?\n createElement(\"tr\", { className: \"fc-scrollgrid-section\" },\n createElement(\"td\", { colSpan: 2, className: 'fc-timegrid-divider ' + context.theme.getClass('tableCellShaded') }))),\n });\n }\n var isNowIndicator = context.options.nowIndicator;\n sections.push({\n type: 'body',\n key: 'body',\n liquid: true,\n expandRows: Boolean(context.options.expandRows),\n chunks: [\n {\n key: 'axis',\n content: function (arg) { return (\n // TODO: make this now-indicator arrow more DRY with TimeColsContent\n createElement(\"div\", { className: \"fc-timegrid-axis-chunk\" },\n createElement(\"table\", { style: { height: arg.expandRows ? arg.clientHeight : '' } },\n arg.tableColGroupNode,\n createElement(\"tbody\", null,\n createElement(TimeBodyAxis, { slatMetas: slatMetas }))),\n createElement(\"div\", { className: \"fc-timegrid-now-indicator-container\" },\n createElement(NowTimer, { unit: isNowIndicator ? 'minute' : 'day' /* hacky */ }, function (nowDate) {\n var nowIndicatorTop = isNowIndicator &&\n slatCoords &&\n slatCoords.safeComputeTop(nowDate); // might return void\n if (typeof nowIndicatorTop === 'number') {\n return (createElement(NowIndicatorRoot, { isAxis: true, date: nowDate }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement(\"div\", { ref: rootElRef, className: ['fc-timegrid-now-indicator-arrow'].concat(classNames).join(' '), style: { top: nowIndicatorTop } }, innerContent)); }));\n }\n return null;\n })))); },\n },\n {\n key: 'cols',\n scrollerElRef: this.scrollerElRef,\n content: timeContent,\n },\n ],\n });\n if (stickyFooterScrollbar) {\n sections.push({\n key: 'footer',\n type: 'footer',\n isSticky: true,\n chunks: [\n {\n key: 'axis',\n content: renderScrollShim,\n },\n {\n key: 'cols',\n content: renderScrollShim,\n },\n ],\n });\n }\n return (createElement(ViewRoot, { viewSpec: context.viewSpec, elRef: this.rootElRef }, function (rootElRef, classNames) { return (createElement(\"div\", { className: ['fc-timegrid'].concat(classNames).join(' '), ref: rootElRef },\n createElement(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: false, colGroups: [\n { width: 'shrink', cols: [{ width: 'shrink' }] },\n { cols: [{ span: colCnt, minWidth: dayMinWidth }] },\n ], sections: sections }))); }));\n };\n /* Dimensions\n ------------------------------------------------------------------------------------------------------------------*/\n TimeColsView.prototype.getAllDayMaxEventProps = function () {\n var _a = this.context.options, dayMaxEvents = _a.dayMaxEvents, dayMaxEventRows = _a.dayMaxEventRows;\n if (dayMaxEvents === true || dayMaxEventRows === true) { // is auto?\n dayMaxEvents = undefined;\n dayMaxEventRows = AUTO_ALL_DAY_MAX_EVENT_ROWS; // make sure \"auto\" goes to a real number\n }\n return { dayMaxEvents: dayMaxEvents, dayMaxEventRows: dayMaxEventRows };\n };\n return TimeColsView;\n}(DateComponent));\nfunction renderAllDayInner(hookProps) {\n return hookProps.text;\n}\n\nvar TimeColsSlatsCoords = /** @class */ (function () {\n function TimeColsSlatsCoords(positions, dateProfile, slotDuration) {\n this.positions = positions;\n this.dateProfile = dateProfile;\n this.slotDuration = slotDuration;\n }\n TimeColsSlatsCoords.prototype.safeComputeTop = function (date) {\n var dateProfile = this.dateProfile;\n if (rangeContainsMarker(dateProfile.currentRange, date)) {\n var startOfDayDate = startOfDay(date);\n var timeMs = date.valueOf() - startOfDayDate.valueOf();\n if (timeMs >= asRoughMs(dateProfile.slotMinTime) &&\n timeMs < asRoughMs(dateProfile.slotMaxTime)) {\n return this.computeTimeTop(createDuration(timeMs));\n }\n }\n return null;\n };\n // Computes the top coordinate, relative to the bounds of the grid, of the given date.\n // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight.\n TimeColsSlatsCoords.prototype.computeDateTop = function (when, startOfDayDate) {\n if (!startOfDayDate) {\n startOfDayDate = startOfDay(when);\n }\n return this.computeTimeTop(createDuration(when.valueOf() - startOfDayDate.valueOf()));\n };\n // Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration).\n // This is a makeshify way to compute the time-top. Assumes all slatMetas dates are uniform.\n // Eventually allow computation with arbirary slat dates.\n TimeColsSlatsCoords.prototype.computeTimeTop = function (duration) {\n var _a = this, positions = _a.positions, dateProfile = _a.dateProfile;\n var len = positions.els.length;\n // floating-point value of # of slots covered\n var slatCoverage = (duration.milliseconds - asRoughMs(dateProfile.slotMinTime)) / asRoughMs(this.slotDuration);\n var slatIndex;\n var slatRemainder;\n // compute a floating-point number for how many slats should be progressed through.\n // from 0 to number of slats (inclusive)\n // constrained because slotMinTime/slotMaxTime might be customized.\n slatCoverage = Math.max(0, slatCoverage);\n slatCoverage = Math.min(len, slatCoverage);\n // an integer index of the furthest whole slat\n // from 0 to number slats (*exclusive*, so len-1)\n slatIndex = Math.floor(slatCoverage);\n slatIndex = Math.min(slatIndex, len - 1);\n // how much further through the slatIndex slat (from 0.0-1.0) must be covered in addition.\n // could be 1.0 if slatCoverage is covering *all* the slots\n slatRemainder = slatCoverage - slatIndex;\n return positions.tops[slatIndex] +\n positions.getHeight(slatIndex) * slatRemainder;\n };\n return TimeColsSlatsCoords;\n}());\n\nvar TimeColsSlatsBody = /** @class */ (function (_super) {\n __extends(TimeColsSlatsBody, _super);\n function TimeColsSlatsBody() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TimeColsSlatsBody.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var options = context.options;\n var slatElRefs = props.slatElRefs;\n return (createElement(\"tbody\", null, props.slatMetas.map(function (slatMeta, i) {\n var hookProps = {\n time: slatMeta.time,\n date: context.dateEnv.toDate(slatMeta.date),\n view: context.viewApi,\n };\n var classNames = [\n 'fc-timegrid-slot',\n 'fc-timegrid-slot-lane',\n slatMeta.isLabeled ? '' : 'fc-timegrid-slot-minor',\n ];\n return (createElement(\"tr\", { key: slatMeta.key, ref: slatElRefs.createRef(slatMeta.key) },\n props.axis && (createElement(TimeColsAxisCell, __assign({}, slatMeta))),\n createElement(RenderHook, { hookProps: hookProps, classNames: options.slotLaneClassNames, content: options.slotLaneContent, didMount: options.slotLaneDidMount, willUnmount: options.slotLaneWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return (createElement(\"td\", { ref: rootElRef, className: classNames.concat(customClassNames).join(' '), \"data-time\": slatMeta.isoTimeStr }, innerContent)); })));\n })));\n };\n return TimeColsSlatsBody;\n}(BaseComponent));\n\n/*\nfor the horizontal \"slats\" that run width-wise. Has a time axis on a side. Depends on RTL.\n*/\nvar TimeColsSlats = /** @class */ (function (_super) {\n __extends(TimeColsSlats, _super);\n function TimeColsSlats() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.rootElRef = createRef();\n _this.slatElRefs = new RefMap();\n return _this;\n }\n TimeColsSlats.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n return (createElement(\"div\", { className: \"fc-timegrid-slots\", ref: this.rootElRef },\n createElement(\"table\", { className: context.theme.getClass('table'), style: {\n minWidth: props.tableMinWidth,\n width: props.clientWidth,\n height: props.minHeight,\n } },\n props.tableColGroupNode /* relies on there only being a single for the axis */,\n createElement(TimeColsSlatsBody, { slatElRefs: this.slatElRefs, axis: props.axis, slatMetas: props.slatMetas }))));\n };\n TimeColsSlats.prototype.componentDidMount = function () {\n this.updateSizing();\n };\n TimeColsSlats.prototype.componentDidUpdate = function () {\n this.updateSizing();\n };\n TimeColsSlats.prototype.componentWillUnmount = function () {\n if (this.props.onCoords) {\n this.props.onCoords(null);\n }\n };\n TimeColsSlats.prototype.updateSizing = function () {\n var _a = this, context = _a.context, props = _a.props;\n if (props.onCoords &&\n props.clientWidth !== null // means sizing has stabilized\n ) {\n var rootEl = this.rootElRef.current;\n if (rootEl.offsetHeight) { // not hidden by css\n props.onCoords(new TimeColsSlatsCoords(new PositionCache(this.rootElRef.current, collectSlatEls(this.slatElRefs.currentMap, props.slatMetas), false, true), this.props.dateProfile, context.options.slotDuration));\n }\n }\n };\n return TimeColsSlats;\n}(BaseComponent));\nfunction collectSlatEls(elMap, slatMetas) {\n return slatMetas.map(function (slatMeta) { return elMap[slatMeta.key]; });\n}\n\nfunction splitSegsByCol(segs, colCnt) {\n var segsByCol = [];\n var i;\n for (i = 0; i < colCnt; i += 1) {\n segsByCol.push([]);\n }\n if (segs) {\n for (i = 0; i < segs.length; i += 1) {\n segsByCol[segs[i].col].push(segs[i]);\n }\n }\n return segsByCol;\n}\nfunction splitInteractionByCol(ui, colCnt) {\n var byRow = [];\n if (!ui) {\n for (var i = 0; i < colCnt; i += 1) {\n byRow[i] = null;\n }\n }\n else {\n for (var i = 0; i < colCnt; i += 1) {\n byRow[i] = {\n affectedInstances: ui.affectedInstances,\n isEvent: ui.isEvent,\n segs: [],\n };\n }\n for (var _i = 0, _a = ui.segs; _i < _a.length; _i++) {\n var seg = _a[_i];\n byRow[seg.col].segs.push(seg);\n }\n }\n return byRow;\n}\n\nvar TimeColMoreLink = /** @class */ (function (_super) {\n __extends(TimeColMoreLink, _super);\n function TimeColMoreLink() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.rootElRef = createRef();\n return _this;\n }\n TimeColMoreLink.prototype.render = function () {\n var _this = this;\n var props = this.props;\n return (createElement(MoreLinkRoot, { allDayDate: null, moreCnt: props.hiddenSegs.length, allSegs: props.hiddenSegs, hiddenSegs: props.hiddenSegs, alignmentElRef: this.rootElRef, defaultContent: renderMoreLinkInner, extraDateSpan: props.extraDateSpan, dateProfile: props.dateProfile, todayRange: props.todayRange, popoverContent: function () { return renderPlainFgSegs(props.hiddenSegs, props); } }, function (rootElRef, classNames, innerElRef, innerContent, handleClick) { return (createElement(\"a\", { ref: function (el) {\n setRef(rootElRef, el);\n setRef(_this.rootElRef, el);\n }, className: ['fc-timegrid-more-link'].concat(classNames).join(' '), style: { top: props.top, bottom: props.bottom }, onClick: handleClick },\n createElement(\"div\", { ref: innerElRef, className: \"fc-timegrid-more-link-inner fc-sticky\" }, innerContent))); }));\n };\n return TimeColMoreLink;\n}(BaseComponent));\nfunction renderMoreLinkInner(props) {\n return props.shortText;\n}\n\n// segInputs assumed sorted\nfunction buildPositioning(segInputs, strictOrder, maxStackCnt) {\n var hierarchy = new SegHierarchy();\n if (strictOrder != null) {\n hierarchy.strictOrder = strictOrder;\n }\n if (maxStackCnt != null) {\n hierarchy.maxStackCnt = maxStackCnt;\n }\n var hiddenEntries = hierarchy.addSegs(segInputs);\n var hiddenGroups = groupIntersectingEntries(hiddenEntries);\n var web = buildWeb(hierarchy);\n web = stretchWeb(web, 1); // all levelCoords/thickness will have 0.0-1.0\n var segRects = webToRects(web);\n return { segRects: segRects, hiddenGroups: hiddenGroups };\n}\nfunction buildWeb(hierarchy) {\n var entriesByLevel = hierarchy.entriesByLevel;\n var buildNode = cacheable(function (level, lateral) { return level + ':' + lateral; }, function (level, lateral) {\n var siblingRange = findNextLevelSegs(hierarchy, level, lateral);\n var nextLevelRes = buildNodes(siblingRange, buildNode);\n var entry = entriesByLevel[level][lateral];\n return [\n __assign(__assign({}, entry), { nextLevelNodes: nextLevelRes[0] }),\n entry.thickness + nextLevelRes[1], // the pressure builds\n ];\n });\n return buildNodes(entriesByLevel.length\n ? { level: 0, lateralStart: 0, lateralEnd: entriesByLevel[0].length }\n : null, buildNode)[0];\n}\nfunction buildNodes(siblingRange, buildNode) {\n if (!siblingRange) {\n return [[], 0];\n }\n var level = siblingRange.level, lateralStart = siblingRange.lateralStart, lateralEnd = siblingRange.lateralEnd;\n var lateral = lateralStart;\n var pairs = [];\n while (lateral < lateralEnd) {\n pairs.push(buildNode(level, lateral));\n lateral += 1;\n }\n pairs.sort(cmpDescPressures);\n return [\n pairs.map(extractNode),\n pairs[0][1], // first item's pressure\n ];\n}\nfunction cmpDescPressures(a, b) {\n return b[1] - a[1];\n}\nfunction extractNode(a) {\n return a[0];\n}\nfunction findNextLevelSegs(hierarchy, subjectLevel, subjectLateral) {\n var levelCoords = hierarchy.levelCoords, entriesByLevel = hierarchy.entriesByLevel;\n var subjectEntry = entriesByLevel[subjectLevel][subjectLateral];\n var afterSubject = levelCoords[subjectLevel] + subjectEntry.thickness;\n var levelCnt = levelCoords.length;\n var level = subjectLevel;\n // skip past levels that are too high up\n for (; level < levelCnt && levelCoords[level] < afterSubject; level += 1)\n ; // do nothing\n for (; level < levelCnt; level += 1) {\n var entries = entriesByLevel[level];\n var entry = void 0;\n var searchIndex = binarySearch(entries, subjectEntry.span.start, getEntrySpanEnd);\n var lateralStart = searchIndex[0] + searchIndex[1]; // if exact match (which doesn't collide), go to next one\n var lateralEnd = lateralStart;\n while ( // loop through entries that horizontally intersect\n (entry = entries[lateralEnd]) && // but not past the whole seg list\n entry.span.start < subjectEntry.span.end) {\n lateralEnd += 1;\n }\n if (lateralStart < lateralEnd) {\n return { level: level, lateralStart: lateralStart, lateralEnd: lateralEnd };\n }\n }\n return null;\n}\nfunction stretchWeb(topLevelNodes, totalThickness) {\n var stretchNode = cacheable(function (node, startCoord, prevThickness) { return buildEntryKey(node); }, function (node, startCoord, prevThickness) {\n var nextLevelNodes = node.nextLevelNodes, thickness = node.thickness;\n var allThickness = thickness + prevThickness;\n var thicknessFraction = thickness / allThickness;\n var endCoord;\n var newChildren = [];\n if (!nextLevelNodes.length) {\n endCoord = totalThickness;\n }\n else {\n for (var _i = 0, nextLevelNodes_1 = nextLevelNodes; _i < nextLevelNodes_1.length; _i++) {\n var childNode = nextLevelNodes_1[_i];\n if (endCoord === undefined) {\n var res = stretchNode(childNode, startCoord, allThickness);\n endCoord = res[0];\n newChildren.push(res[1]);\n }\n else {\n var res = stretchNode(childNode, endCoord, 0);\n newChildren.push(res[1]);\n }\n }\n }\n var newThickness = (endCoord - startCoord) * thicknessFraction;\n return [endCoord - newThickness, __assign(__assign({}, node), { thickness: newThickness, nextLevelNodes: newChildren })];\n });\n return topLevelNodes.map(function (node) { return stretchNode(node, 0, 0)[1]; });\n}\n// not sorted in any particular order\nfunction webToRects(topLevelNodes) {\n var rects = [];\n var processNode = cacheable(function (node, levelCoord, stackDepth) { return buildEntryKey(node); }, function (node, levelCoord, stackDepth) {\n var rect = __assign(__assign({}, node), { levelCoord: levelCoord,\n stackDepth: stackDepth, stackForward: 0 });\n rects.push(rect);\n return (rect.stackForward = processNodes(node.nextLevelNodes, levelCoord + node.thickness, stackDepth + 1) + 1);\n });\n function processNodes(nodes, levelCoord, stackDepth) {\n var stackForward = 0;\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var node = nodes_1[_i];\n stackForward = Math.max(processNode(node, levelCoord, stackDepth), stackForward);\n }\n return stackForward;\n }\n processNodes(topLevelNodes, 0, 0);\n return rects; // TODO: sort rects by levelCoord to be consistent with toRects?\n}\n// TODO: move to general util\nfunction cacheable(keyFunc, workFunc) {\n var cache = {};\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var key = keyFunc.apply(void 0, args);\n return (key in cache)\n ? cache[key]\n : (cache[key] = workFunc.apply(void 0, args));\n };\n}\n\nfunction computeSegVCoords(segs, colDate, slatCoords, eventMinHeight) {\n if (slatCoords === void 0) { slatCoords = null; }\n if (eventMinHeight === void 0) { eventMinHeight = 0; }\n var vcoords = [];\n if (slatCoords) {\n for (var i = 0; i < segs.length; i += 1) {\n var seg = segs[i];\n var spanStart = slatCoords.computeDateTop(seg.start, colDate);\n var spanEnd = Math.max(spanStart + (eventMinHeight || 0), // :(\n slatCoords.computeDateTop(seg.end, colDate));\n vcoords.push({\n start: Math.round(spanStart),\n end: Math.round(spanEnd), //\n });\n }\n }\n return vcoords;\n}\nfunction computeFgSegPlacements(segs, segVCoords, // might not have for every seg\neventOrderStrict, eventMaxStack) {\n var segInputs = [];\n var dumbSegs = []; // segs without coords\n for (var i = 0; i < segs.length; i += 1) {\n var vcoords = segVCoords[i];\n if (vcoords) {\n segInputs.push({\n index: i,\n thickness: 1,\n span: vcoords,\n });\n }\n else {\n dumbSegs.push(segs[i]);\n }\n }\n var _a = buildPositioning(segInputs, eventOrderStrict, eventMaxStack), segRects = _a.segRects, hiddenGroups = _a.hiddenGroups;\n var segPlacements = [];\n for (var _i = 0, segRects_1 = segRects; _i < segRects_1.length; _i++) {\n var segRect = segRects_1[_i];\n segPlacements.push({\n seg: segs[segRect.index],\n rect: segRect,\n });\n }\n for (var _b = 0, dumbSegs_1 = dumbSegs; _b < dumbSegs_1.length; _b++) {\n var dumbSeg = dumbSegs_1[_b];\n segPlacements.push({ seg: dumbSeg, rect: null });\n }\n return { segPlacements: segPlacements, hiddenGroups: hiddenGroups };\n}\n\nvar DEFAULT_TIME_FORMAT = createFormatter({\n hour: 'numeric',\n minute: '2-digit',\n meridiem: false,\n});\nvar TimeColEvent = /** @class */ (function (_super) {\n __extends(TimeColEvent, _super);\n function TimeColEvent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TimeColEvent.prototype.render = function () {\n var classNames = [\n 'fc-timegrid-event',\n 'fc-v-event',\n ];\n if (this.props.isShort) {\n classNames.push('fc-timegrid-event-short');\n }\n return (createElement(StandardEvent, __assign({}, this.props, { defaultTimeFormat: DEFAULT_TIME_FORMAT, extraClassNames: classNames })));\n };\n return TimeColEvent;\n}(BaseComponent));\n\nvar TimeColMisc = /** @class */ (function (_super) {\n __extends(TimeColMisc, _super);\n function TimeColMisc() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TimeColMisc.prototype.render = function () {\n var props = this.props;\n return (createElement(DayCellContent, { date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, extraHookProps: props.extraHookProps }, function (innerElRef, innerContent) { return (innerContent &&\n createElement(\"div\", { className: \"fc-timegrid-col-misc\", ref: innerElRef }, innerContent)); }));\n };\n return TimeColMisc;\n}(BaseComponent));\n\nvar TimeCol = /** @class */ (function (_super) {\n __extends(TimeCol, _super);\n function TimeCol() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.sortEventSegs = memoize(sortEventSegs);\n return _this;\n }\n // TODO: memoize event-placement?\n TimeCol.prototype.render = function () {\n var _this = this;\n var _a = this, props = _a.props, context = _a.context;\n var isSelectMirror = context.options.selectMirror;\n var mirrorSegs = (props.eventDrag && props.eventDrag.segs) ||\n (props.eventResize && props.eventResize.segs) ||\n (isSelectMirror && props.dateSelectionSegs) ||\n [];\n var interactionAffectedInstances = // TODO: messy way to compute this\n (props.eventDrag && props.eventDrag.affectedInstances) ||\n (props.eventResize && props.eventResize.affectedInstances) ||\n {};\n var sortedFgSegs = this.sortEventSegs(props.fgEventSegs, context.options.eventOrder);\n return (createElement(DayCellRoot, { elRef: props.elRef, date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, extraHookProps: props.extraHookProps }, function (rootElRef, classNames, dataAttrs) { return (createElement(\"td\", __assign({ ref: rootElRef, className: ['fc-timegrid-col'].concat(classNames, props.extraClassNames || []).join(' ') }, dataAttrs, props.extraDataAttrs),\n createElement(\"div\", { className: \"fc-timegrid-col-frame\" },\n createElement(\"div\", { className: \"fc-timegrid-col-bg\" },\n _this.renderFillSegs(props.businessHourSegs, 'non-business'),\n _this.renderFillSegs(props.bgEventSegs, 'bg-event'),\n _this.renderFillSegs(props.dateSelectionSegs, 'highlight')),\n createElement(\"div\", { className: \"fc-timegrid-col-events\" }, _this.renderFgSegs(sortedFgSegs, interactionAffectedInstances, false, false, false)),\n createElement(\"div\", { className: \"fc-timegrid-col-events\" }, _this.renderFgSegs(mirrorSegs, {}, Boolean(props.eventDrag), Boolean(props.eventResize), Boolean(isSelectMirror))),\n createElement(\"div\", { className: \"fc-timegrid-now-indicator-container\" }, _this.renderNowIndicator(props.nowIndicatorSegs)),\n createElement(TimeColMisc, { date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, extraHookProps: props.extraHookProps })))); }));\n };\n TimeCol.prototype.renderFgSegs = function (sortedFgSegs, segIsInvisible, isDragging, isResizing, isDateSelecting) {\n var props = this.props;\n if (props.forPrint) {\n return renderPlainFgSegs(sortedFgSegs, props);\n }\n return this.renderPositionedFgSegs(sortedFgSegs, segIsInvisible, isDragging, isResizing, isDateSelecting);\n };\n TimeCol.prototype.renderPositionedFgSegs = function (segs, // if not mirror, needs to be sorted\n segIsInvisible, isDragging, isResizing, isDateSelecting) {\n var _this = this;\n var _a = this.context.options, eventMaxStack = _a.eventMaxStack, eventShortHeight = _a.eventShortHeight, eventOrderStrict = _a.eventOrderStrict, eventMinHeight = _a.eventMinHeight;\n var _b = this.props, date = _b.date, slatCoords = _b.slatCoords, eventSelection = _b.eventSelection, todayRange = _b.todayRange, nowDate = _b.nowDate;\n var isMirror = isDragging || isResizing || isDateSelecting;\n var segVCoords = computeSegVCoords(segs, date, slatCoords, eventMinHeight);\n var _c = computeFgSegPlacements(segs, segVCoords, eventOrderStrict, eventMaxStack), segPlacements = _c.segPlacements, hiddenGroups = _c.hiddenGroups;\n return (createElement(Fragment, null,\n this.renderHiddenGroups(hiddenGroups, segs),\n segPlacements.map(function (segPlacement) {\n var seg = segPlacement.seg, rect = segPlacement.rect;\n var instanceId = seg.eventRange.instance.instanceId;\n var isVisible = isMirror || Boolean(!segIsInvisible[instanceId] && rect);\n var vStyle = computeSegVStyle(rect && rect.span);\n var hStyle = (!isMirror && rect) ? _this.computeSegHStyle(rect) : { left: 0, right: 0 };\n var isInset = Boolean(rect) && rect.stackForward > 0;\n var isShort = Boolean(rect) && (rect.span.end - rect.span.start) < eventShortHeight; // look at other places for this problem\n return (createElement(\"div\", { className: 'fc-timegrid-event-harness' +\n (isInset ? ' fc-timegrid-event-harness-inset' : ''), key: instanceId, style: __assign(__assign({ visibility: isVisible ? '' : 'hidden' }, vStyle), hStyle) },\n createElement(TimeColEvent, __assign({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, isShort: isShort }, getSegMeta(seg, todayRange, nowDate)))));\n })));\n };\n // will already have eventMinHeight applied because segInputs already had it\n TimeCol.prototype.renderHiddenGroups = function (hiddenGroups, segs) {\n var _a = this.props, extraDateSpan = _a.extraDateSpan, dateProfile = _a.dateProfile, todayRange = _a.todayRange, nowDate = _a.nowDate, eventSelection = _a.eventSelection, eventDrag = _a.eventDrag, eventResize = _a.eventResize;\n return (createElement(Fragment, null, hiddenGroups.map(function (hiddenGroup) {\n var positionCss = computeSegVStyle(hiddenGroup.span);\n var hiddenSegs = compileSegsFromEntries(hiddenGroup.entries, segs);\n return (createElement(TimeColMoreLink, { key: buildIsoString(computeEarliestSegStart(hiddenSegs)), hiddenSegs: hiddenSegs, top: positionCss.top, bottom: positionCss.bottom, extraDateSpan: extraDateSpan, dateProfile: dateProfile, todayRange: todayRange, nowDate: nowDate, eventSelection: eventSelection, eventDrag: eventDrag, eventResize: eventResize }));\n })));\n };\n TimeCol.prototype.renderFillSegs = function (segs, fillType) {\n var _a = this, props = _a.props, context = _a.context;\n var segVCoords = computeSegVCoords(segs, props.date, props.slatCoords, context.options.eventMinHeight); // don't assume all populated\n var children = segVCoords.map(function (vcoords, i) {\n var seg = segs[i];\n return (createElement(\"div\", { key: buildEventRangeKey(seg.eventRange), className: \"fc-timegrid-bg-harness\", style: computeSegVStyle(vcoords) }, fillType === 'bg-event' ?\n createElement(BgEvent, __assign({ seg: seg }, getSegMeta(seg, props.todayRange, props.nowDate))) :\n renderFill(fillType)));\n });\n return createElement(Fragment, null, children);\n };\n TimeCol.prototype.renderNowIndicator = function (segs) {\n var _a = this.props, slatCoords = _a.slatCoords, date = _a.date;\n if (!slatCoords) {\n return null;\n }\n return segs.map(function (seg, i) { return (createElement(NowIndicatorRoot, { isAxis: false, date: date, \n // key doesn't matter. will only ever be one\n key: i }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement(\"div\", { ref: rootElRef, className: ['fc-timegrid-now-indicator-line'].concat(classNames).join(' '), style: { top: slatCoords.computeDateTop(seg.start, date) } }, innerContent)); })); });\n };\n TimeCol.prototype.computeSegHStyle = function (segHCoords) {\n var _a = this.context, isRtl = _a.isRtl, options = _a.options;\n var shouldOverlap = options.slotEventOverlap;\n var nearCoord = segHCoords.levelCoord; // the left side if LTR. the right side if RTL. floating-point\n var farCoord = segHCoords.levelCoord + segHCoords.thickness; // the right side if LTR. the left side if RTL. floating-point\n var left; // amount of space from left edge, a fraction of the total width\n var right; // amount of space from right edge, a fraction of the total width\n if (shouldOverlap) {\n // double the width, but don't go beyond the maximum forward coordinate (1.0)\n farCoord = Math.min(1, nearCoord + (farCoord - nearCoord) * 2);\n }\n if (isRtl) {\n left = 1 - farCoord;\n right = nearCoord;\n }\n else {\n left = nearCoord;\n right = 1 - farCoord;\n }\n var props = {\n zIndex: segHCoords.stackDepth + 1,\n left: left * 100 + '%',\n right: right * 100 + '%',\n };\n if (shouldOverlap && !segHCoords.stackForward) {\n // add padding to the edge so that forward stacked events don't cover the resizer's icon\n props[isRtl ? 'marginLeft' : 'marginRight'] = 10 * 2; // 10 is a guesstimate of the icon's width\n }\n return props;\n };\n return TimeCol;\n}(BaseComponent));\nfunction renderPlainFgSegs(sortedFgSegs, _a) {\n var todayRange = _a.todayRange, nowDate = _a.nowDate, eventSelection = _a.eventSelection, eventDrag = _a.eventDrag, eventResize = _a.eventResize;\n var hiddenInstances = (eventDrag ? eventDrag.affectedInstances : null) ||\n (eventResize ? eventResize.affectedInstances : null) ||\n {};\n return (createElement(Fragment, null, sortedFgSegs.map(function (seg) {\n var instanceId = seg.eventRange.instance.instanceId;\n return (createElement(\"div\", { key: instanceId, style: { visibility: hiddenInstances[instanceId] ? 'hidden' : '' } },\n createElement(TimeColEvent, __assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === eventSelection, isShort: false }, getSegMeta(seg, todayRange, nowDate)))));\n })));\n}\nfunction computeSegVStyle(segVCoords) {\n if (!segVCoords) {\n return { top: '', bottom: '' };\n }\n return {\n top: segVCoords.start,\n bottom: -segVCoords.end,\n };\n}\nfunction compileSegsFromEntries(segEntries, allSegs) {\n return segEntries.map(function (segEntry) { return allSegs[segEntry.index]; });\n}\n\nvar TimeColsContent = /** @class */ (function (_super) {\n __extends(TimeColsContent, _super);\n function TimeColsContent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.splitFgEventSegs = memoize(splitSegsByCol);\n _this.splitBgEventSegs = memoize(splitSegsByCol);\n _this.splitBusinessHourSegs = memoize(splitSegsByCol);\n _this.splitNowIndicatorSegs = memoize(splitSegsByCol);\n _this.splitDateSelectionSegs = memoize(splitSegsByCol);\n _this.splitEventDrag = memoize(splitInteractionByCol);\n _this.splitEventResize = memoize(splitInteractionByCol);\n _this.rootElRef = createRef();\n _this.cellElRefs = new RefMap();\n return _this;\n }\n TimeColsContent.prototype.render = function () {\n var _this = this;\n var _a = this, props = _a.props, context = _a.context;\n var nowIndicatorTop = context.options.nowIndicator &&\n props.slatCoords &&\n props.slatCoords.safeComputeTop(props.nowDate); // might return void\n var colCnt = props.cells.length;\n var fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, colCnt);\n var bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, colCnt);\n var businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, colCnt);\n var nowIndicatorSegsByRow = this.splitNowIndicatorSegs(props.nowIndicatorSegs, colCnt);\n var dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, colCnt);\n var eventDragByRow = this.splitEventDrag(props.eventDrag, colCnt);\n var eventResizeByRow = this.splitEventResize(props.eventResize, colCnt);\n return (createElement(\"div\", { className: \"fc-timegrid-cols\", ref: this.rootElRef },\n createElement(\"table\", { style: {\n minWidth: props.tableMinWidth,\n width: props.clientWidth,\n } },\n props.tableColGroupNode,\n createElement(\"tbody\", null,\n createElement(\"tr\", null,\n props.axis && (createElement(\"td\", { className: \"fc-timegrid-col fc-timegrid-axis\" },\n createElement(\"div\", { className: \"fc-timegrid-col-frame\" },\n createElement(\"div\", { className: \"fc-timegrid-now-indicator-container\" }, typeof nowIndicatorTop === 'number' && (createElement(NowIndicatorRoot, { isAxis: true, date: props.nowDate }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement(\"div\", { ref: rootElRef, className: ['fc-timegrid-now-indicator-arrow'].concat(classNames).join(' '), style: { top: nowIndicatorTop } }, innerContent)); })))))),\n props.cells.map(function (cell, i) { return (createElement(TimeCol, { key: cell.key, elRef: _this.cellElRefs.createRef(cell.key), dateProfile: props.dateProfile, date: cell.date, nowDate: props.nowDate, todayRange: props.todayRange, extraHookProps: cell.extraHookProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, extraDateSpan: cell.extraDateSpan, fgEventSegs: fgEventSegsByRow[i], bgEventSegs: bgEventSegsByRow[i], businessHourSegs: businessHourSegsByRow[i], nowIndicatorSegs: nowIndicatorSegsByRow[i], dateSelectionSegs: dateSelectionSegsByRow[i], eventDrag: eventDragByRow[i], eventResize: eventResizeByRow[i], slatCoords: props.slatCoords, eventSelection: props.eventSelection, forPrint: props.forPrint })); }))))));\n };\n TimeColsContent.prototype.componentDidMount = function () {\n this.updateCoords();\n };\n TimeColsContent.prototype.componentDidUpdate = function () {\n this.updateCoords();\n };\n TimeColsContent.prototype.updateCoords = function () {\n var props = this.props;\n if (props.onColCoords &&\n props.clientWidth !== null // means sizing has stabilized\n ) {\n props.onColCoords(new PositionCache(this.rootElRef.current, collectCellEls(this.cellElRefs.currentMap, props.cells), true, // horizontal\n false));\n }\n };\n return TimeColsContent;\n}(BaseComponent));\nfunction collectCellEls(elMap, cells) {\n return cells.map(function (cell) { return elMap[cell.key]; });\n}\n\n/* A component that renders one or more columns of vertical time slots\n----------------------------------------------------------------------------------------------------------------------*/\nvar TimeCols = /** @class */ (function (_super) {\n __extends(TimeCols, _super);\n function TimeCols() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.processSlotOptions = memoize(processSlotOptions);\n _this.state = {\n slatCoords: null,\n };\n _this.handleRootEl = function (el) {\n if (el) {\n _this.context.registerInteractiveComponent(_this, {\n el: el,\n isHitComboAllowed: _this.props.isHitComboAllowed,\n });\n }\n else {\n _this.context.unregisterInteractiveComponent(_this);\n }\n };\n _this.handleScrollRequest = function (request) {\n var onScrollTopRequest = _this.props.onScrollTopRequest;\n var slatCoords = _this.state.slatCoords;\n if (onScrollTopRequest && slatCoords) {\n if (request.time) {\n var top_1 = slatCoords.computeTimeTop(request.time);\n top_1 = Math.ceil(top_1); // zoom can give weird floating-point values. rather scroll a little bit further\n if (top_1) {\n top_1 += 1; // to overcome top border that slots beyond the first have. looks better\n }\n onScrollTopRequest(top_1);\n }\n return true;\n }\n return false;\n };\n _this.handleColCoords = function (colCoords) {\n _this.colCoords = colCoords;\n };\n _this.handleSlatCoords = function (slatCoords) {\n _this.setState({ slatCoords: slatCoords });\n if (_this.props.onSlatCoords) {\n _this.props.onSlatCoords(slatCoords);\n }\n };\n return _this;\n }\n TimeCols.prototype.render = function () {\n var _a = this, props = _a.props, state = _a.state;\n return (createElement(\"div\", { className: \"fc-timegrid-body\", ref: this.handleRootEl, style: {\n // these props are important to give this wrapper correct dimensions for interactions\n // TODO: if we set it here, can we avoid giving to inner tables?\n width: props.clientWidth,\n minWidth: props.tableMinWidth,\n } },\n createElement(TimeColsSlats, { axis: props.axis, dateProfile: props.dateProfile, slatMetas: props.slatMetas, clientWidth: props.clientWidth, minHeight: props.expandRows ? props.clientHeight : '', tableMinWidth: props.tableMinWidth, tableColGroupNode: props.axis ? props.tableColGroupNode : null /* axis depends on the colgroup's shrinking */, onCoords: this.handleSlatCoords }),\n createElement(TimeColsContent, { cells: props.cells, axis: props.axis, dateProfile: props.dateProfile, businessHourSegs: props.businessHourSegs, bgEventSegs: props.bgEventSegs, fgEventSegs: props.fgEventSegs, dateSelectionSegs: props.dateSelectionSegs, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, todayRange: props.todayRange, nowDate: props.nowDate, nowIndicatorSegs: props.nowIndicatorSegs, clientWidth: props.clientWidth, tableMinWidth: props.tableMinWidth, tableColGroupNode: props.tableColGroupNode, slatCoords: state.slatCoords, onColCoords: this.handleColCoords, forPrint: props.forPrint })));\n };\n TimeCols.prototype.componentDidMount = function () {\n this.scrollResponder = this.context.createScrollResponder(this.handleScrollRequest);\n };\n TimeCols.prototype.componentDidUpdate = function (prevProps) {\n this.scrollResponder.update(prevProps.dateProfile !== this.props.dateProfile);\n };\n TimeCols.prototype.componentWillUnmount = function () {\n this.scrollResponder.detach();\n };\n TimeCols.prototype.queryHit = function (positionLeft, positionTop) {\n var _a = this.context, dateEnv = _a.dateEnv, options = _a.options;\n var colCoords = this.colCoords;\n var dateProfile = this.props.dateProfile;\n var slatCoords = this.state.slatCoords;\n var _b = this.processSlotOptions(this.props.slotDuration, options.snapDuration), snapDuration = _b.snapDuration, snapsPerSlot = _b.snapsPerSlot;\n var colIndex = colCoords.leftToIndex(positionLeft);\n var slatIndex = slatCoords.positions.topToIndex(positionTop);\n if (colIndex != null && slatIndex != null) {\n var cell = this.props.cells[colIndex];\n var slatTop = slatCoords.positions.tops[slatIndex];\n var slatHeight = slatCoords.positions.getHeight(slatIndex);\n var partial = (positionTop - slatTop) / slatHeight; // floating point number between 0 and 1\n var localSnapIndex = Math.floor(partial * snapsPerSlot); // the snap # relative to start of slat\n var snapIndex = slatIndex * snapsPerSlot + localSnapIndex;\n var dayDate = this.props.cells[colIndex].date;\n var time = addDurations(dateProfile.slotMinTime, multiplyDuration(snapDuration, snapIndex));\n var start = dateEnv.add(dayDate, time);\n var end = dateEnv.add(start, snapDuration);\n return {\n dateProfile: dateProfile,\n dateSpan: __assign({ range: { start: start, end: end }, allDay: false }, cell.extraDateSpan),\n dayEl: colCoords.els[colIndex],\n rect: {\n left: colCoords.lefts[colIndex],\n right: colCoords.rights[colIndex],\n top: slatTop,\n bottom: slatTop + slatHeight,\n },\n layer: 0,\n };\n }\n return null;\n };\n return TimeCols;\n}(DateComponent));\nfunction processSlotOptions(slotDuration, snapDurationOverride) {\n var snapDuration = snapDurationOverride || slotDuration;\n var snapsPerSlot = wholeDivideDurations(slotDuration, snapDuration);\n if (snapsPerSlot === null) {\n snapDuration = slotDuration;\n snapsPerSlot = 1;\n // TODO: say warning?\n }\n return { snapDuration: snapDuration, snapsPerSlot: snapsPerSlot };\n}\n\nvar DayTimeColsSlicer = /** @class */ (function (_super) {\n __extends(DayTimeColsSlicer, _super);\n function DayTimeColsSlicer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DayTimeColsSlicer.prototype.sliceRange = function (range, dayRanges) {\n var segs = [];\n for (var col = 0; col < dayRanges.length; col += 1) {\n var segRange = intersectRanges(range, dayRanges[col]);\n if (segRange) {\n segs.push({\n start: segRange.start,\n end: segRange.end,\n isStart: segRange.start.valueOf() === range.start.valueOf(),\n isEnd: segRange.end.valueOf() === range.end.valueOf(),\n col: col,\n });\n }\n }\n return segs;\n };\n return DayTimeColsSlicer;\n}(Slicer));\n\nvar DayTimeCols = /** @class */ (function (_super) {\n __extends(DayTimeCols, _super);\n function DayTimeCols() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.buildDayRanges = memoize(buildDayRanges);\n _this.slicer = new DayTimeColsSlicer();\n _this.timeColsRef = createRef();\n return _this;\n }\n DayTimeCols.prototype.render = function () {\n var _this = this;\n var _a = this, props = _a.props, context = _a.context;\n var dateProfile = props.dateProfile, dayTableModel = props.dayTableModel;\n var isNowIndicator = context.options.nowIndicator;\n var dayRanges = this.buildDayRanges(dayTableModel, dateProfile, context.dateEnv);\n // give it the first row of cells\n // TODO: would move this further down hierarchy, but sliceNowDate needs it\n return (createElement(NowTimer, { unit: isNowIndicator ? 'minute' : 'day' }, function (nowDate, todayRange) { return (createElement(TimeCols, __assign({ ref: _this.timeColsRef }, _this.slicer.sliceProps(props, dateProfile, null, context, dayRanges), { forPrint: props.forPrint, axis: props.axis, dateProfile: dateProfile, slatMetas: props.slatMetas, slotDuration: props.slotDuration, cells: dayTableModel.cells[0], tableColGroupNode: props.tableColGroupNode, tableMinWidth: props.tableMinWidth, clientWidth: props.clientWidth, clientHeight: props.clientHeight, expandRows: props.expandRows, nowDate: nowDate, nowIndicatorSegs: isNowIndicator && _this.slicer.sliceNowDate(nowDate, context, dayRanges), todayRange: todayRange, onScrollTopRequest: props.onScrollTopRequest, onSlatCoords: props.onSlatCoords }))); }));\n };\n return DayTimeCols;\n}(DateComponent));\nfunction buildDayRanges(dayTableModel, dateProfile, dateEnv) {\n var ranges = [];\n for (var _i = 0, _a = dayTableModel.headerDates; _i < _a.length; _i++) {\n var date = _a[_i];\n ranges.push({\n start: dateEnv.add(date, dateProfile.slotMinTime),\n end: dateEnv.add(date, dateProfile.slotMaxTime),\n });\n }\n return ranges;\n}\n\n// potential nice values for the slot-duration and interval-duration\n// from largest to smallest\nvar STOCK_SUB_DURATIONS = [\n { hours: 1 },\n { minutes: 30 },\n { minutes: 15 },\n { seconds: 30 },\n { seconds: 15 },\n];\nfunction buildSlatMetas(slotMinTime, slotMaxTime, explicitLabelInterval, slotDuration, dateEnv) {\n var dayStart = new Date(0);\n var slatTime = slotMinTime;\n var slatIterator = createDuration(0);\n var labelInterval = explicitLabelInterval || computeLabelInterval(slotDuration);\n var metas = [];\n while (asRoughMs(slatTime) < asRoughMs(slotMaxTime)) {\n var date = dateEnv.add(dayStart, slatTime);\n var isLabeled = wholeDivideDurations(slatIterator, labelInterval) !== null;\n metas.push({\n date: date,\n time: slatTime,\n key: date.toISOString(),\n isoTimeStr: formatIsoTimeString(date),\n isLabeled: isLabeled,\n });\n slatTime = addDurations(slatTime, slotDuration);\n slatIterator = addDurations(slatIterator, slotDuration);\n }\n return metas;\n}\n// Computes an automatic value for slotLabelInterval\nfunction computeLabelInterval(slotDuration) {\n var i;\n var labelInterval;\n var slotsPerLabel;\n // find the smallest stock label interval that results in more than one slots-per-label\n for (i = STOCK_SUB_DURATIONS.length - 1; i >= 0; i -= 1) {\n labelInterval = createDuration(STOCK_SUB_DURATIONS[i]);\n slotsPerLabel = wholeDivideDurations(labelInterval, slotDuration);\n if (slotsPerLabel !== null && slotsPerLabel > 1) {\n return labelInterval;\n }\n }\n return slotDuration; // fall back\n}\n\nvar DayTimeColsView = /** @class */ (function (_super) {\n __extends(DayTimeColsView, _super);\n function DayTimeColsView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.buildTimeColsModel = memoize(buildTimeColsModel);\n _this.buildSlatMetas = memoize(buildSlatMetas);\n return _this;\n }\n DayTimeColsView.prototype.render = function () {\n var _this = this;\n var _a = this.context, options = _a.options, dateEnv = _a.dateEnv, dateProfileGenerator = _a.dateProfileGenerator;\n var props = this.props;\n var dateProfile = props.dateProfile;\n var dayTableModel = this.buildTimeColsModel(dateProfile, dateProfileGenerator);\n var splitProps = this.allDaySplitter.splitProps(props);\n var slatMetas = this.buildSlatMetas(dateProfile.slotMinTime, dateProfile.slotMaxTime, options.slotLabelInterval, options.slotDuration, dateEnv);\n var dayMinWidth = options.dayMinWidth;\n var hasAttachedAxis = !dayMinWidth;\n var hasDetachedAxis = dayMinWidth;\n var headerContent = options.dayHeaders && (createElement(DayHeader, { dates: dayTableModel.headerDates, dateProfile: dateProfile, datesRepDistinctDays: true, renderIntro: hasAttachedAxis ? this.renderHeadAxis : null }));\n var allDayContent = (options.allDaySlot !== false) && (function (contentArg) { return (createElement(DayTable, __assign({}, splitProps.allDay, { dateProfile: dateProfile, dayTableModel: dayTableModel, nextDayThreshold: options.nextDayThreshold, tableMinWidth: contentArg.tableMinWidth, colGroupNode: contentArg.tableColGroupNode, renderRowIntro: hasAttachedAxis ? _this.renderTableRowAxis : null, showWeekNumbers: false, expandRows: false, headerAlignElRef: _this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint }, _this.getAllDayMaxEventProps()))); });\n var timeGridContent = function (contentArg) { return (createElement(DayTimeCols, __assign({}, splitProps.timed, { dayTableModel: dayTableModel, dateProfile: dateProfile, axis: hasAttachedAxis, slotDuration: options.slotDuration, slatMetas: slatMetas, forPrint: props.forPrint, tableColGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, onSlatCoords: _this.handleSlatCoords, expandRows: contentArg.expandRows, onScrollTopRequest: _this.handleScrollTopRequest }))); };\n return hasDetachedAxis\n ? this.renderHScrollLayout(headerContent, allDayContent, timeGridContent, dayTableModel.colCnt, dayMinWidth, slatMetas, this.state.slatCoords)\n : this.renderSimpleLayout(headerContent, allDayContent, timeGridContent);\n };\n return DayTimeColsView;\n}(TimeColsView));\nfunction buildTimeColsModel(dateProfile, dateProfileGenerator) {\n var daySeries = new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator);\n return new DayTableModel(daySeries, false);\n}\n\nvar OPTION_REFINERS = {\n allDaySlot: Boolean,\n};\n\nvar main = createPlugin({\n initialView: 'timeGridWeek',\n optionRefiners: OPTION_REFINERS,\n views: {\n timeGrid: {\n component: DayTimeColsView,\n usesMinMaxTime: true,\n allDaySlot: true,\n slotDuration: '00:30:00',\n slotEventOverlap: true, // a bad name. confused with overlap/constraint system\n },\n timeGridDay: {\n type: 'timeGrid',\n duration: { days: 1 },\n },\n timeGridWeek: {\n type: 'timeGrid',\n duration: { weeks: 1 },\n },\n },\n});\n\nexport default main;\nexport { DayTimeCols, DayTimeColsSlicer, DayTimeColsView, TimeCols, TimeColsSlatsCoords, TimeColsView, buildDayRanges, buildSlatMetas, buildTimeColsModel };\n//# sourceMappingURL=main.js.map\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"app-calendar overflow-hidden border\"},[_c('div',{staticClass:\"row no-gutters\"},[_c('div',{staticClass:\"col position-relative\"},[_c('div',{staticClass:\"card shadow-none border-0 mb-0 rounded-0\"},[_c('div',{staticClass:\"card-body pb-0\"},[_c('div',{staticClass:\"row filter-row\"},[_c('div',{staticClass:\"d-flex align-items-center col-md-1 col-sm-12 mb-1\",staticStyle:{\"min-width\":\"120px\"}},[_c('b-media-aside',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.scheduler-filter\",modifiers:{\"scheduler-filter\":true}}],staticClass:\"toggle-button down-icon\"},[_c('b-avatar',{attrs:{\"size\":\"36\",\"variant\":\"light-primary\"}},[_c('feather-icon',{attrs:{\"size\":\"18\",\"icon\":\"ArrowDownIcon\"}})],1)],1),_c('span',{staticClass:\"filter-text\"},[_vm._v(_vm._s(_vm.$t('Filter')))])],1),_c('div',{staticClass:\"col align-items-left col-md-10 col-sm-12\"},[_c('b-collapse',{attrs:{\"id\":\"scheduler-filter\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-4 col-sm-12 mb-1\",staticStyle:{\"min-width\":\"250px\"}},[_c('v-select',{staticClass:\"select-config\",attrs:{\"label\":\"full_name\",\"options\":_vm.optionsTrainer,\"placeholder\":_vm.$t('ALL TRAINERS'),\"clearable\":false},on:{\"onchange\":function($event){return _vm.onChangeTrainer($event)}},model:{value:(_vm.trainer),callback:function ($$v) {_vm.trainer=$$v},expression:\"trainer\"}})],1),_c('div',{staticClass:\"col-md-4 col-sm-12 mb-1\",staticStyle:{\"min-width\":\"250px\"}},[_c('v-select',{staticClass:\"select-config\",attrs:{\"options\":_vm.optionsActivity,\"label\":\"activity_name\",\"placeholder\":_vm.$t('ALL ACTIVITES'),\"clearable\":false},model:{value:(_vm.activity),callback:function ($$v) {_vm.activity=$$v},expression:\"activity\"}})],1)])])],1)]),(_vm.eventCount === 0)?_c('b-alert',{directives:[{name:\"height-fade\",rawName:\"v-height-fade\"}],staticClass:\"text-center\",attrs:{\"show\":\"\",\"dismissible\":\"\",\"fade\":\"\",\"variant\":\"danger\"}},[_c('div',{staticClass:\"alert-body\"},[_c('span',[_vm._v(\" \"+_vm._s(_vm.$t('No appointment records found'))+\" \")])])]):_vm._e(),_c('full-calendar',{ref:\"refCalendar\",staticClass:\"full-calendar\",attrs:{\"id\":\"calendar\",\"options\":_vm.calendarOptions}})],1)])])]),_c('NewModalAppointment',{ref:\"refModal\",on:{\"newAppointmentData\":function($event){return _vm.reLoadCalendar($event)},\"push-notification\":_vm.pushNotification}}),_c('EditModalAppointment',{ref:\"refEditModal\",on:{\"editAppointmentData\":function($event){return _vm.reLoadCalendar($event)},\"push-notification\":_vm.pushNotification}}),_c('AppointmentSheduleMultiNew',{ref:\"refMultiNewModal\",on:{\"newMultiAppointmentData\":function($event){return _vm.reLoadCalendar($event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{ref:\"my-modal\",attrs:{\"id\":\"modal-1\",\"title\":_vm.modalTitle,\"no-close-on-esc\":\"\",\"no-close-on-backdrop\":\"\",\"hide-header-close\":\"\",\"hide-footer\":\"\",\"header-bg-variant\":\"primary\",\"size\":\"lg\"}},[_c('b-tabs',[_c('b-tab',{attrs:{\"active\":\"\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"CalendarIcon\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"Planning\")))])]},proxy:true}])},[_c('b-row',[_c('b-col',{attrs:{\"md\":\"6\",\"sm\":\"12\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"title\"}},[_vm._v(_vm._s(_vm.$t(\"Trainer\")))]),_c('v-select',{staticClass:\"select-config\",attrs:{\"options\":_vm.optionsTrainer,\"label\":\"full_name\"},on:{\"blur\":function($event){return _vm.$v.trainer.trainer_id.$touch()}},model:{value:(_vm.trainer),callback:function ($$v) {_vm.trainer=$$v},expression:\"trainer\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(_vm._s(_vm.$t(\"No Suitable Trainers Found\")))])]),(_vm.isSubmit && !_vm.$v.trainer.checked)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"Trainer Selection Required\")))]):_vm._e()],1)],1),_c('b-col',{attrs:{\"md\":\"6\",\"sm\":\"12\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"title\"}},[_vm._v(_vm._s(_vm.$t(\"Activity\")))]),_c('v-select',{staticClass:\"select-config\",attrs:{\"clearable\":false,\"options\":_vm.optionsActivity,\"label\":\"activity_name\",\"disabled\":_vm.block_time === 'checked' ? true : false},model:{value:(_vm.activity),callback:function ($$v) {_vm.activity=$$v},expression:\"activity\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(_vm._s(_vm.$t(\"No Suitable Activity Found\")))])]),(_vm.isSubmit && !_vm.$v.activity.checked)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"Activity Selection Required\")))]):_vm._e()],1)],1)],1),_c('b-row',[_c('b-col',{attrs:{\"sm\":\"6\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"startTime\"}}),_vm._v(_vm._s(_vm.$t(\"Start Time\"))+\" \"),_c('v-select',{staticClass:\"select-config\",attrs:{\"options\":_vm.startTimeScala,\"value\":\"key\",\"label\":\"label\",\"reduce\":function (item) { return item.key; }},model:{value:(_vm.appointment.start_time),callback:function ($$v) {_vm.$set(_vm.appointment, \"start_time\", $$v)},expression:\"appointment.start_time\"}}),(_vm.isSubmit && !_vm.$v.appointment.start_time.required)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"Start time required\")))]):_vm._e()],1)],1),_c('b-col',{attrs:{\"sm\":\"6\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"endTime\"}}),_vm._v(_vm._s(_vm.$t(\"End Time\"))+\" \"),_c('v-select',{staticClass:\"select-config\",attrs:{\"options\":_vm.endTimeScala,\"reduce\":function (item) { return item.key; },\"label\":\"label\"},model:{value:(_vm.appointment.end_time),callback:function ($$v) {_vm.$set(_vm.appointment, \"end_time\", $$v)},expression:\"appointment.end_time\"}}),(_vm.isSubmit && !_vm.$v.appointment.end_time.required)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"End time required\")))]):_vm._e()],1)],1)],1),_c('b-row',[_c('b-col',[_c('b-form-group',[_c('label',{attrs:{\"for\":\"title\"}},[_vm._v(_vm._s(_vm.$t(\"Title\")))]),_c('b-form-input',{attrs:{\"id\":\"title\",\"label\":\"title\"},model:{value:(_vm.appointment.title),callback:function ($$v) {_vm.$set(_vm.appointment, \"title\", $$v)},expression:\"appointment.title\"}}),(_vm.isSubmit && !_vm.$v.appointment.title.required)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"Activity title required\")))]):_vm._e()],1),_c('b-form-group',[_c('label',{attrs:{\"for\":\"definition\"}},[_vm._v(_vm._s(_vm.$t(\"Description\")))]),_c('b-form-textarea',{attrs:{\"id\":\"defination\",\"placeholder\":\"\",\"rows\":\"3\",\"max-rows\":\"6\"},model:{value:(_vm.appointment.definition),callback:function ($$v) {_vm.$set(_vm.appointment, \"definition\", $$v)},expression:\"appointment.definition\"}})],1),_c('b-form-group',[_c('b-row',[_c('b-col',{attrs:{\"sm\":\"12\",\"md\":\"6\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"start_date\"}}),_vm._v(_vm._s(_vm.$t(\"Start Date\"))+\" \"),_c('b-form-input',{attrs:{\"id\":\"startDate\",\"type\":\"date\",\"disabled\":\"\",\"label\":\"start_date\"},model:{value:(_vm.appointment.start_date),callback:function ($$v) {_vm.$set(_vm.appointment, \"start_date\", $$v)},expression:\"appointment.start_date\"}}),(_vm.isSubmit && !_vm.$v.appointment.start_date.required)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"Start date required\")))]):_vm._e()],1)],1),_c('b-col',{attrs:{\"sm\":\"12\",\"md\":\"6\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"end_date\"}}),_vm._v(_vm._s(_vm.$t(\"End Date\"))+\" \"),_c('b-form-input',{attrs:{\"id\":\"endDate\",\"type\":\"date\",\"disabled\":\"\",\"label\":\"end_date\"},model:{value:(_vm.appointment.end_date),callback:function ($$v) {_vm.$set(_vm.appointment, \"end_date\", $$v)},expression:\"appointment.end_date\"}}),(_vm.isSubmit && !_vm.$v.appointment.end_date.required)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"End date required\")))]):_vm._e()],1)],1)],1)],1)],1)],1)],1),_c('b-tab',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"UsersIcon\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"Participants\")))])]},proxy:true}])},[_c('b-row',[_c('b-col',[_c('div',[_c('span',{staticClass:\"text-success\"},[_vm._v(\" AKTİVİTEYE KATILANLAR\")])]),_c('div',[_c('b-form-input',{staticClass:\"d-inline-block mr-1\",attrs:{\"size\":\"sm\",\"placeholder\":_vm.$t('Search...')},model:{value:(_vm.filter),callback:function ($$v) {_vm.filter=$$v},expression:\"filter\"}})],1),_c('div',[_c('b-table',{ref:\"refUserListTable\",staticClass:\"text-left position-relative\",attrs:{\"hover\":\"\",\"current-page\":_vm.currentPage,\"total-rows\":_vm.totalRows,\"per-page\":_vm.perPage,\"aling\":\"right\",\"first-number\":\"\",\"last-number\":\"\",\"small\":\"small\",\"items\":_vm.ActivityParticipants,\"responsive\":\"sm\",\"sticky-header\":\"300px\",\"fields\":_vm.ActivityParticipantColumns,\"primary-key\":\"id\",\"filter\":_vm.filter,\"show-empty\":\"\",\"empty-text\":_vm.$t('No Matching Creates Found'),\"empty-filtered-text\":_vm.$t('There are no records matching your request!')},on:{\"filtered\":_vm.onFiltered},scopedSlots:_vm._u([{key:\"cell(actions)\",fn:function(data){return [_c('b-button',{staticClass:\"m-0\",staticStyle:{\"padding\":\"2px\"},attrs:{\"size\":\"\",\"variant\":\"outline-danger\"},on:{\"click\":function($event){return _vm.removeCustomer(data.item, data.index)}}},[_c('feather-icon',{attrs:{\"icon\":\"XIcon\",\"size\":\"24\"}})],1)]}}])}),_c('div',{staticClass:\"mx-2\"},[_c('b-row',[_c('div',[(_vm.$i18n.locale === 'tr')?_c('small',{staticClass:\"mt-1\"},[_vm._v(\" \"+_vm._s(_vm.totalRows)+\" kayıttan \"+_vm._s(_vm.currentPage * _vm.perPage - _vm.perPage)+\"-\"+_vm._s(_vm.currentPage * _vm.perPage)+\" arası gösteriliyor \")]):_vm._e()])]),_c('b-row',[_c('b-col',{staticClass:\"d-flex align-items-right justify-content-right justify-content-sm-end radius0\",attrs:{\"cols\":\"6\",\"sm\":\"\"}},[_c('b-pagination',{staticClass:\"mb-0 mt-1 mt-sm-0 r-0\",attrs:{\"total-rows\":_vm.totalRows,\"per-page\":_vm.perPage,\"aling\":\"right\",\"first-number\":\"\",\"last-number\":\"\",\"prev-class\":\"prev-item\",\"next-class\":\"next-item\"},scopedSlots:_vm._u([{key:\"prev-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronLeftIcon\",\"size\":\"18\"}})]},proxy:true},{key:\"next-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronRightIcon\",\"size\":\"18\"}})]},proxy:true}]),model:{value:(_vm.currentPage),callback:function ($$v) {_vm.currentPage=$$v},expression:\"currentPage\"}})],1)],1)],1)],1)]),_c('b-col',[_c('div',[_c('span',{staticClass:\"text-danger\"},[_vm._v(\" AKTİVİTEYE KATILMAYANLAR\")])]),_c('div',[_c('b-form-input',{staticClass:\"d-inline-block mr-1\",attrs:{\"size\":\"sm\",\"placeholder\":_vm.$t('Search...')},model:{value:(_vm.filter2),callback:function ($$v) {_vm.filter2=$$v},expression:\"filter2\"}})],1),_c('div',[_c('b-table',{ref:\"refUserListTable\",staticClass:\"text-left position-relative\",attrs:{\"hover\":\"\",\"current-page\":_vm.currentPage2,\"total-rows\":_vm.totalRows2,\"per-page\":_vm.perPage2,\"aling\":\"right\",\"first-number\":\"\",\"last-number\":\"\",\"small\":\"small\",\"items\":_vm.InActivityParticipants,\"responsive\":\"sm\",\"sticky-header\":\"300px\",\"fields\":_vm.ActivityParticipantColumns,\"primary-key\":\"id\",\"filter-included-fields\":_vm.filterOn2,\"filter\":_vm.filter2,\"show-empty\":\"\",\"empty-text\":_vm.$t('No Matching Creates Found'),\"empty-filtered-text\":_vm.$t('There are no records matching your request!')},on:{\"filtered\":_vm.onFiltered2},scopedSlots:_vm._u([{key:\"cell(actions)\",fn:function(data){return [_c('b-button',{staticClass:\"m-0\",staticStyle:{\"padding\":\"2px\"},attrs:{\"size\":\"\",\"variant\":\"outline-success\"},on:{\"click\":function($event){return _vm.addCustomer(data.item, data.index)}}},[_c('feather-icon',{attrs:{\"icon\":\"CheckIcon\",\"size\":\"24\"}})],1)]}}])}),_c('div',{staticClass:\"mx-2\"},[_c('b-row',[_c('div',[(_vm.$i18n.locale === 'tr')?_c('small',{staticClass:\"mt-1\"},[_vm._v(\" \"+_vm._s(_vm.totalRows2)+\" kayıttan \"+_vm._s(_vm.currentPage2 * _vm.perPage2 - _vm.perPage2)+\"-\"+_vm._s(_vm.currentPage2 * _vm.perPage2)+\" arası kayıt gösteriliyor \")]):_vm._e()])]),_c('b-row',[_c('b-col',{staticClass:\"d-flex align-items-right justify-content-right justify-content-sm-end radius0\",attrs:{\"cols\":\"6\",\"sm\":\"\"}},[_c('b-pagination',{staticClass:\"mb-0 mt-1 mt-sm-0 r-0\",attrs:{\"total-rows\":_vm.totalRows2,\"per-page\":_vm.perPage2,\"aling\":\"right\",\"first-number\":\"\",\"last-number\":\"\",\"prev-class\":\"prev-item\",\"next-class\":\"next-item\"},scopedSlots:_vm._u([{key:\"prev-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronLeftIcon\",\"size\":\"18\"}})]},proxy:true},{key:\"next-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronRightIcon\",\"size\":\"18\"}})]},proxy:true}]),model:{value:(_vm.currentPage2),callback:function ($$v) {_vm.currentPage2=$$v},expression:\"currentPage2\"}})],1)],1)],1)],1)])],1)],1),_c('b-tab',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"GridIcon\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"Rooms\")))])]},proxy:true}])},[_c('b-form-group',{staticClass:\"mt-1\"},[_c('label',{attrs:{\"for\":\"title\"}},[_vm._v(_vm._s(_vm.$t(\"Room\")))]),_c('v-select',{staticClass:\"select-config\",attrs:{\"options\":_vm.optionsRoom,\"label\":\"room_name\"},model:{value:(_vm.room),callback:function ($$v) {_vm.room=$$v},expression:\"room\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(_vm._s(_vm.$t(\"No Suitable Room Found\")))])])],1),_c('b-form-group',{staticClass:\"mb-0\"},[_c('label',{attrs:{\"for\":\"title\"}},[_vm._v(_vm._s(_vm.$t(\"Capacity\")))]),_c('b-form-input',{attrs:{\"id\":\"basicInput\",\"placeholder\":_vm.$t('Capacity')},model:{value:(_vm.appointment.capacity),callback:function ($$v) {_vm.$set(_vm.appointment, \"capacity\", $$v)},expression:\"appointment.capacity\"}})],1)],1),_c('hr'),[_c('div',{staticClass:\"row float-right\"},[_c('div',{staticClass:\"col\"},[_c('b-button',{staticClass:\"mr-1\",attrs:{\"variant\":\"warning\",\"disabled\":!_vm.is_data_load},on:{\"click\":_vm.cancel}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Cancel\"))+\" \")]),_c('b-button',{attrs:{\"variant\":\"primary\",\"disabled\":!_vm.is_data_load},on:{\"click\":function($event){return _vm.appointmentCreate()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Save\"))+\" \")])],1)])],_c('b-button',{staticClass:\"mr-1\",staticStyle:{\"position\":\"absolute\",\"display\":\"block\",\"top\":\"40%\",\"left\":\"30%\"},attrs:{\"variant\":\"outline-default\",\"disabled\":true,\"hidden\":_vm.is_data_load}},[_c('b-spinner',{staticClass:\"mr-1\",staticStyle:{\"width\":\"2rem\",\"height\":\"2rem\"}}),_c('h3',{staticStyle:{\"color\":\"#FF9F43\"}},[(_vm.spinMessage==1)?_c('span',{staticStyle:{\"textColor\":\"7B70F1\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Loading please wait\"))+\" \")]):_vm._e(),(_vm.spinMessage==2)?_c('span',{staticStyle:{\"textColor\":\"7B70F1\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Saving please wait\"))+\" \")]):_vm._e(),(_vm.spinMessage==3)?_c('span',{staticStyle:{\"textColor\":\"7B70F1\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Updating please wait\"))+\" \")]):_vm._e(),(_vm.spinMessage==4)?_c('span',{staticStyle:{\"textColor\":\"7B70F1\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Deleting please wait\"))+\" \")]):_vm._e(),(_vm.spinMessage==5)?_c('span',{staticStyle:{\"textColor\":\"7B70F1\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Loading participants please wait\"))+\" \")]):_vm._e()])],1)],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppointmentSheduleNew.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppointmentSheduleNew.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppointmentSheduleNew.vue?vue&type=template&id=59f45730&\"\nimport script from \"./AppointmentSheduleNew.vue?vue&type=script&lang=js&\"\nexport * from \"./AppointmentSheduleNew.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppointmentSheduleNew.vue?vue&type=style&index=0&lang=css&\"\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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{ref:\"my-modal\",class:!_vm.is_data_load ? 'opacity-custom' : 'opacity-1',attrs:{\"static\":\"\",\"id\":\"modal-1\",\"title\":_vm.modalTitle,\"no-close-on-esc\":\"\",\"no-close-on-backdrop\":\"\",\"hide-footer\":\"\",\"hide-header-close\":\"\",\"header-bg-variant\":\"warning\",\"size\":\"lg\"}},[_c('b-tabs',[_c('b-tab',{attrs:{\"active\":\"\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"CalendarIcon\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"Planning\")))])]},proxy:true}])},[_c('b-card-text',[_c('b-form-group',{attrs:{\"label\":_vm.$t('Trainer Name'),\"label-for\":\"trainer_name\"}},[_c('b-input-group',{staticClass:\"input-group-merge\"},[_c('b-form-input',{attrs:{\"id\":\"trainer_name\",\"name\":\"trainer_name\",\"type\":\"text\",\"readonly\":\"\",\"background\":\"white\",\"placeholder\":_vm.$t('Facility Name')},model:{value:(_vm.appointment.trainer_name),callback:function ($$v) {_vm.$set(_vm.appointment, \"trainer_name\", $$v)},expression:\"appointment.trainer_name\"}})],1),(_vm.isSubmit && !_vm.$v.appointment.is_trainer_id)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"Trainer Selection Required\")))]):_vm._e()],1),_c('b-form-group',{attrs:{\"label\":_vm.$t('Activity'),\"label-for\":\"activity_name\"}},[_c('b-input-group',{staticClass:\"input-group-merge\"},[_c('b-form-input',{attrs:{\"id\":\"activity_name\",\"name\":\"activity_name\",\"type\":\"text\",\"readonly\":\"\",\"background\":\"white\",\"placeholder\":_vm.$t('Facility Name')},on:{\"blur\":function($event){return _vm.$v.appointment.activity_name.$touch()}},model:{value:(_vm.appointment.activity_name),callback:function ($$v) {_vm.$set(_vm.appointment, \"activity_name\", $$v)},expression:\"appointment.activity_name\"}})],1),(_vm.isSubmit && !_vm.$v.appointment.is_activity_id)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"Activity Selection Required\")))]):_vm._e()],1),_c('b-row',[_c('b-col',{attrs:{\"sm\":\"6\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"start_time\"}}),_vm._v(_vm._s(_vm.$t(\"Start Time\"))+\" \"),_c('v-select',{staticClass:\"select-config\",attrs:{\"options\":_vm.startTimeScala,\"reduce\":function (item) { return item.key; },\"label\":\"label\"},model:{value:(_vm.appointment.start_time),callback:function ($$v) {_vm.$set(_vm.appointment, \"start_time\", $$v)},expression:\"appointment.start_time\"}}),(_vm.isSubmit && !_vm.$v.appointment.start_time.required)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"Start time required\")))]):_vm._e()],1)],1),_c('b-col',{attrs:{\"sm\":\"6\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"end_time\"}}),_vm._v(_vm._s(_vm.$t(\"End Time\"))+\" \"),_c('v-select',{staticClass:\"select-config\",attrs:{\"options\":_vm.endTimeScala,\"reduce\":function (item) { return item.key; },\"label\":\"label\"},model:{value:(_vm.appointment.end_time),callback:function ($$v) {_vm.$set(_vm.appointment, \"end_time\", $$v)},expression:\"appointment.end_time\"}}),(_vm.isSubmit && !_vm.$v.appointment.end_time.required)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"End time required\")))]):_vm._e()],1)],1)],1),_c('b-row',[_c('b-col',[_c('b-form-group',[_c('label',{attrs:{\"for\":\"title\"}},[_vm._v(_vm._s(_vm.$t(\"Title\")))]),_c('b-form-input',{attrs:{\"id\":\"title\",\"label\":\"title\"},on:{\"blur\":function($event){return _vm.$v.appointment.title.$touch()}},model:{value:(_vm.appointment.title),callback:function ($$v) {_vm.$set(_vm.appointment, \"title\", $$v)},expression:\"appointment.title\"}}),(_vm.isSubmit && !_vm.$v.appointment.title.required)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"This field is required\")))]):_vm._e()],1),_c('b-form-group',[_c('label',{attrs:{\"for\":\"definition\"}},[_vm._v(_vm._s(_vm.$t(\"Description\")))]),_c('b-form-textarea',{attrs:{\"id\":\"defination\",\"placeholder\":\"\",\"rows\":\"3\",\"max-rows\":\"6\"},model:{value:(_vm.appointment.definition),callback:function ($$v) {_vm.$set(_vm.appointment, \"definition\", $$v)},expression:\"appointment.definition\"}})],1),(false)?_c('b-form-group',[_c('b-row',[_c('b-col',{attrs:{\"sm\":\"12\"}},[_c('label',{attrs:{\"for\":\"delay-minute\"}},[_vm._v(_vm._s(_vm.$t(\"Cannot Join After How Many Minutes\")))]),_c('v-select',{staticClass:\"select-config\",attrs:{\"options\":_vm.delayMinute},model:{value:(_vm.minute),callback:function ($$v) {_vm.minute=$$v},expression:\"minute\"}})],1)],1)],1):_vm._e(),_c('b-form-group',[_c('b-row',[_c('b-col',{attrs:{\"sm\":\"6\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"start_date\"}}),_vm._v(_vm._s(_vm.$t(\"Start Date\"))+\" \"),_c('b-form-input',{attrs:{\"id\":\"start_date\",\"type\":\"date\",\"disabled\":\"\",\"label\":\"start_date\"},model:{value:(_vm.appointment.start_date),callback:function ($$v) {_vm.$set(_vm.appointment, \"start_date\", $$v)},expression:\"appointment.start_date\"}}),(_vm.isSubmit && !_vm.$v.appointment.start_date.required)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"Start date required\")))]):_vm._e()],1)],1),_c('b-col',{attrs:{\"sm\":\"6\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"end_date\"}}),_vm._v(_vm._s(_vm.$t(\"End Date\"))+\" \"),_c('b-form-input',{attrs:{\"id\":\"end_date\",\"type\":\"date\",\"disabled\":\"\",\"label\":\"end_date\"},model:{value:(_vm.appointment.end_date),callback:function ($$v) {_vm.$set(_vm.appointment, \"end_date\", $$v)},expression:\"appointment.end_date\"}}),(_vm.isSubmit && !_vm.$v.appointment.end_date.required)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"End date required\")))]):_vm._e()],1)],1)],1)],1),(_vm.group_count > 1)?[_c('b-form-checkbox',{staticClass:\"input-zoom\",attrs:{\"id\":\"checkbox-1\",\"name\":\"checkbox-1\"},model:{value:(_vm.is_group),callback:function ($$v) {_vm.is_group=$$v},expression:\"is_group\"}},[_c('p',[_vm._v(_vm._s(_vm.$t(\"Influence co-created appointments\")))])])]:_vm._e()],2)],1)],1)],1),_c('b-tab',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"UsersIcon\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"Participants\")))])]},proxy:true}])},[_c('b-row',[_c('b-col',[_c('div',[_c('span',{staticClass:\"text-success\"},[_vm._v(\" AKTİVİTEYE KATILANLAR \")])]),_c('div',[_c('b-form-input',{staticClass:\"d-inline-block mr-1 radius-0\",attrs:{\"size\":\"sm\",\"placeholder\":_vm.$t('Search...')},model:{value:(_vm.filter),callback:function ($$v) {_vm.filter=$$v},expression:\"filter\"}})],1),_c('div',[_c('b-table',{ref:\"refUserListTable\",staticClass:\"text-left position-relative\",attrs:{\"hover\":\"\",\"current-page\":_vm.currentPage,\"total-rows\":_vm.totalRows,\"per-page\":_vm.perPage,\"aling\":\"right\",\"first-number\":\"\",\"last-number\":\"\",\"small\":\"small\",\"items\":_vm.ActivityParticipants,\"responsive\":\"sm\",\"sticky-header\":\"300px\",\"fields\":_vm.ActivityParticipantColumns,\"filter-included-fields\":_vm.filterOn,\"filter\":_vm.filter,\"primary-key\":\"id\",\"show-empty\":\"\",\"empty-text\":_vm.$t('No Matching Creates Found'),\"empty-filtered-text\":_vm.$t('There are no records matching your request!')},on:{\"filtered\":_vm.onFiltered},scopedSlots:_vm._u([{key:\"cell(actions)\",fn:function(data){return [_c('b-button',{staticClass:\"m-0\",staticStyle:{\"padding\":\"2px\"},attrs:{\"size\":\"\",\"variant\":\"outline-danger\"},on:{\"click\":function($event){return _vm.removeCustomer(data.item,data.index)}}},[_c('feather-icon',{attrs:{\"icon\":\"XIcon\",\"size\":\"24\"}})],1)]}}])}),_c('div',{staticClass:\"mx-2\"},[_c('b-row',[_c('div',[(_vm.$i18n.locale === 'tr')?_c('small',{staticClass:\"mt-1\"},[_vm._v(\" \"+_vm._s(_vm.totalRows)+\" kayıttan \"+_vm._s(_vm.currentPage * _vm.perPage - _vm.perPage)+\"-\"+_vm._s(_vm.currentPage * _vm.perPage)+\" arası gösteriliyor \")]):_vm._e()])]),_c('b-row',[_c('b-col',{staticClass:\"d-flex align-items-right justify-content-right justify-content-sm-end radius0\",attrs:{\"cols\":\"6\",\"sm\":\"\"}},[_c('b-pagination',{staticClass:\"mb-0 mt-1 mt-sm-0 r-0\",attrs:{\"total-rows\":_vm.totalRows,\"per-page\":_vm.perPage,\"aling\":\"right\",\"first-number\":\"\",\"last-number\":\"\",\"prev-class\":\"prev-item\",\"next-class\":\"next-item\"},scopedSlots:_vm._u([{key:\"prev-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronLeftIcon\",\"size\":\"18\"}})]},proxy:true},{key:\"next-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronRightIcon\",\"size\":\"18\"}})]},proxy:true}]),model:{value:(_vm.currentPage),callback:function ($$v) {_vm.currentPage=$$v},expression:\"currentPage\"}})],1)],1)],1)],1)]),_c('b-col',[_c('div',[_c('span',{staticClass:\"text-danger\"},[_vm._v(\"AKTİVİTEYE KATILMAYANLAR\")])]),_c('div',[_c('b-form-input',{staticClass:\"d-inline-block mr-1\",attrs:{\"size\":\"sm\",\"placeholder\":_vm.$t('Search...')},model:{value:(_vm.filter2),callback:function ($$v) {_vm.filter2=$$v},expression:\"filter2\"}})],1),_c('div',[_c('b-table',{ref:\"refUserListTable\",staticClass:\"text-left position-relative\",attrs:{\"hover\":\"\",\"current-page\":_vm.currentPage2,\"total-rows\":_vm.totalRows2,\"per-page\":_vm.perPage2,\"aling\":\"right\",\"first-number\":\"\",\"last-number\":\"\",\"small\":\"small\",\"items\":_vm.InActivityParticipants,\"responsive\":\"sm\",\"sticky-header\":\"300px\",\"fields\":_vm.ActivityParticipantColumns,\"filter-included-fields\":_vm.filterOn2,\"filter\":_vm.filter2,\"primary-key\":\"id\",\"show-empty\":\"\",\"empty-text\":_vm.$t('No Matching Creates Found'),\"empty-filtered-text\":_vm.$t('There are no records matching your request!')},on:{\"filtered\":_vm.onFiltered2},scopedSlots:_vm._u([{key:\"cell(actions)\",fn:function(data){return [_c('b-button',{staticClass:\"m-0\",staticStyle:{\"padding\":\"2px\"},attrs:{\"size\":\"\",\"variant\":\"outline-success\"},on:{\"click\":function($event){return _vm.addCustomer(data.item,data.index)}}},[_c('feather-icon',{attrs:{\"icon\":\"CheckIcon\",\"size\":\"24\"}})],1)]}}])}),_c('div',{staticClass:\"mx-2\"},[_c('b-row',[_c('div',[(_vm.$i18n.locale === 'tr')?_c('small',{staticClass:\"mt-1\"},[_vm._v(\" \"+_vm._s(_vm.totalRows2)+\" kayıttan \"+_vm._s(_vm.currentPage2 * _vm.perPage2 - _vm.perPage2)+\"-\"+_vm._s(_vm.currentPage2 * _vm.perPage2)+\" arası kayıt gösteriliyor \")]):_vm._e()])]),_c('b-row',[_c('b-col',{staticClass:\"d-flex align-items-right justify-content-right justify-content-sm-end radius0\",attrs:{\"cols\":\"6\",\"sm\":\"\"}},[_c('b-pagination',{staticClass:\"mb-0 mt-1 mt-sm-0 r-0\",attrs:{\"total-rows\":_vm.totalRows2,\"per-page\":_vm.perPage2,\"aling\":\"right\",\"first-number\":\"\",\"last-number\":\"\",\"prev-class\":\"prev-item\",\"next-class\":\"next-item\"},scopedSlots:_vm._u([{key:\"prev-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronLeftIcon\",\"size\":\"18\"}})]},proxy:true},{key:\"next-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronRightIcon\",\"size\":\"18\"}})]},proxy:true}]),model:{value:(_vm.currentPage2),callback:function ($$v) {_vm.currentPage2=$$v},expression:\"currentPage2\"}})],1)],1)],1)],1)])],1)],1),_c('b-tab',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"GridIcon\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"Rooms\")))])]},proxy:true}])},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"title\"}},[_vm._v(_vm._s(_vm.$t(\"Room\")))]),_c('v-select',{staticClass:\"select-config\",attrs:{\"reduce\":function (x) { return x.room_id; },\"value\":\"room_id\",\"options\":_vm.optionsRoom,\"label\":\"room_name\"},model:{value:(_vm.room.room_id),callback:function ($$v) {_vm.$set(_vm.room, \"room_id\", $$v)},expression:\"room.room_id\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(_vm._s(_vm.$t(\"No Suitable Room Found\")))])])],1),_c('b-form-group',[_c('label',{attrs:{\"for\":\"title\"}},[_vm._v(_vm._s(_vm.$t(\"Capacity\")))]),_c('b-form-input',{attrs:{\"id\":\"basicInput\",\"placeholder\":_vm.$t('Capacity')},model:{value:(_vm.appointment.capacity),callback:function ($$v) {_vm.$set(_vm.appointment, \"capacity\", $$v)},expression:\"appointment.capacity\"}})],1)],1),_c('hr'),[_c('div',{staticClass:\"row mt-1\"},[_c('div',{staticClass:\"col\"},[_c('b-button',{attrs:{\"variant\":\"danger\",\"disabled\":!_vm.is_data_load},on:{\"click\":_vm.deleteAppointment}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Delete\"))+\" \")])],1),_c('div',{staticClass:\"float-right mr-1\"},[_c('b-button',{staticClass:\"mr-1\",attrs:{\"variant\":\"warning\",\"disabled\":!_vm.is_data_load},on:{\"click\":_vm.cancel}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Cancel\"))+\" \")]),_c('b-button',{attrs:{\"variant\":\"primary\",\"disabled\":!_vm.is_data_load},on:{\"click\":function($event){return _vm.appointmentUpdate()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Update\"))+\" \")])],1)])],_c('b-button',{staticClass:\"mr-1\",staticStyle:{\"position\":\"absolute\",\"display\":\"block\",\"top\":\"40%\",\"left\":\"30%\"},attrs:{\"variant\":\"outline-default\",\"disabled\":true,\"hidden\":_vm.is_data_load}},[_c('b-spinner',{staticClass:\"mr-1\",staticStyle:{\"width\":\"2rem\",\"height\":\"2rem\"}}),_c('h3',{staticStyle:{\"color\":\"#FF9F43\"}},[(_vm.spinMessage==1)?_c('span',{staticStyle:{\"textColor\":\"7B70F1\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Loading please wait\"))+\" \")]):_vm._e(),(_vm.spinMessage==2)?_c('span',{staticStyle:{\"textColor\":\"7B70F1\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Saving please wait\"))+\" \")]):_vm._e(),(_vm.spinMessage==3)?_c('span',{staticStyle:{\"textColor\":\"7B70F1\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Updating please wait\"))+\" \")]):_vm._e(),(_vm.spinMessage==4)?_c('span',{staticStyle:{\"textColor\":\"7B70F1\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Deleting please wait\"))+\" \")]):_vm._e(),(_vm.spinMessage==5)?_c('span',{staticStyle:{\"textColor\":\"7B70F1\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Loading participants please wait\"))+\" \")]):_vm._e()])],1)],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppointmentSheduleEdit.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppointmentSheduleEdit.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppointmentSheduleEdit.vue?vue&type=template&id=5ff29478&scoped=true&\"\nimport script from \"./AppointmentSheduleEdit.vue?vue&type=script&lang=js&\"\nexport * from \"./AppointmentSheduleEdit.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppointmentSheduleEdit.vue?vue&type=style&index=0&id=5ff29478&scoped=true&lang=css&\"\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 \"5ff29478\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{ref:\"my-modal\",attrs:{\"id\":\"modal-1\",\"title\":_vm.modalTitle,\"no-close-on-esc\":\"\",\"no-close-on-backdrop\":\"\",\"hide-header-close\":\"\",\"hide-footer\":\"\",\"header-bg-variant\":\"primary\",\"size\":\"lg\"}},[_c('b-tabs',[_c('b-tab',{attrs:{\"active\":\"\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"CalendarIcon\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"Planning\")))])]},proxy:true}])},[_c('b-card-text',[_c('b-row',[_c('b-col',{attrs:{\"md\":\"6\",\"sm\":\"12\"}},[_c('label',{attrs:{\"for\":\"title\"}},[_vm._v(_vm._s(_vm.$t(\"Trainer\")))]),_c('v-select',{staticClass:\"select-config\",attrs:{\"options\":_vm.optionsTrainer,\"label\":\"full_name\"},on:{\"blur\":function($event){return _vm.$v.trainer.trainer_id.$touch()}},model:{value:(_vm.trainer),callback:function ($$v) {_vm.trainer=$$v},expression:\"trainer\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(_vm._s(_vm.$t(\"No Suitable Trainers Found\")))])]),(_vm.isSubmit && !_vm.$v.trainer.checked)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"Trainer Selection Required\")))]):_vm._e()],1),_c('b-col',{attrs:{\"md\":\"6\",\"sm\":\"12\"}},[_c('label',{attrs:{\"for\":\"title\"}},[_vm._v(_vm._s(_vm.$t(\"Activity\")))]),_c('v-select',{staticClass:\"select-config\",attrs:{\"clearable\":false,\"options\":_vm.optionsActivity,\"label\":\"activity_name\"},on:{\"blur\":function($event){return _vm.$v.activity.activity_id.$touch()}},model:{value:(_vm.activity),callback:function ($$v) {_vm.activity=$$v},expression:\"activity\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(_vm._s(_vm.$t(\"No Suitable Activity Found\")))])]),(_vm.isSubmit && !_vm.$v.activity.checked)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"Activity Selection Required\")))]):_vm._e()],1)],1),_c('hr',{staticClass:\"mb-1 mt-1\"}),_c('b-row',[_c('b-col',{attrs:{\"md\":\"6\",\"sm\":\"12\"}},[_c('label',{attrs:{\"for\":\"start_date\"}}),_vm._v(_vm._s(_vm.$t(\"Start Date\"))+\" \"),_c('flat-pickr',{staticClass:\"form-control\",attrs:{\"config\":_vm.configStart},model:{value:(_vm.appointment.start_date),callback:function ($$v) {_vm.$set(_vm.appointment, \"start_date\", $$v)},expression:\"appointment.start_date\"}}),(_vm.isSubmit && !_vm.$v.appointment.start_date.required)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"Start date required\")))]):_vm._e()],1),_c('b-col',{attrs:{\"md\":\"6\",\"sm\":\"12\"}},[_c('label',{attrs:{\"for\":\"end_date\"}}),_vm._v(_vm._s(_vm.$t(\"End Date\"))+\" \"),_c('flat-pickr',{staticClass:\"form-control\",attrs:{\"config\":_vm.configEnd},model:{value:(_vm.appointment.end_date),callback:function ($$v) {_vm.$set(_vm.appointment, \"end_date\", $$v)},expression:\"appointment.end_date\"}}),(_vm.isSubmit && !_vm.$v.appointment.end_date.required)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"End date required\")))]):_vm._e()],1)],1),_c('hr',{staticClass:\"mb-0 mt-1\"}),_c('b-row',{staticClass:\"mb-0 pb-0 mt-0 pt-0\"},[_c('b-col',{staticClass:\"mb-0 mt-1\"},[_c('label',{staticClass:\"mb-0 pb-0 bold\",attrs:{\"for\":\"title\"}},[_vm._v(\"Tekrarlanacak olan günler\")])])],1),_c('b-row',{staticClass:\"mt-0 pt-0\"},[_c('b-col',[_c('div',[_c('b-form-checkbox',{staticClass:\"custom-control-primary mt-0 mr-1 d-inline input-zoom\",attrs:{\"name\":\"monday\",\"id\":\"monday\"},model:{value:(_vm.selectedDays.monday),callback:function ($$v) {_vm.$set(_vm.selectedDays, \"monday\", $$v)},expression:\"selectedDays.monday\"}},[_vm._v(\" \"+_vm._s(_vm.$t('Monday'))+\" \")]),_c('b-form-checkbox',{staticClass:\"custom-control-primary mt-0 mr-1 d-inline input-zoom\",attrs:{\"name\":\"tuesday\"},model:{value:(_vm.selectedDays.tuesday),callback:function ($$v) {_vm.$set(_vm.selectedDays, \"tuesday\", $$v)},expression:\"selectedDays.tuesday\"}},[_vm._v(\" \"+_vm._s(_vm.$t('Tuesday'))+\" \")]),_c('b-form-checkbox',{staticClass:\"custom-control-primary mt-0 mr-1 d-inline input-zoom\",attrs:{\"name\":\"wednesday\"},model:{value:(_vm.selectedDays.wednesday),callback:function ($$v) {_vm.$set(_vm.selectedDays, \"wednesday\", $$v)},expression:\"selectedDays.wednesday\"}},[_vm._v(\" \"+_vm._s(_vm.$t('Wednesday'))+\" \")]),_c('b-form-checkbox',{staticClass:\"custom-control-primary mt-0 mr-1 d-inline input-zoom\",attrs:{\"name\":\"thursday\"},model:{value:(_vm.selectedDays.thursday),callback:function ($$v) {_vm.$set(_vm.selectedDays, \"thursday\", $$v)},expression:\"selectedDays.thursday\"}},[_vm._v(\" \"+_vm._s(_vm.$t('Thursday'))+\" \")]),_c('b-form-checkbox',{staticClass:\"custom-control-primary mt-0 mr-1 d-inline input-zoom\",attrs:{\"name\":\"friday\"},model:{value:(_vm.selectedDays.friday),callback:function ($$v) {_vm.$set(_vm.selectedDays, \"friday\", $$v)},expression:\"selectedDays.friday\"}},[_vm._v(\" \"+_vm._s(_vm.$t('Friday'))+\" \")]),_c('b-form-checkbox',{staticClass:\"custom-control-primary mt-0 mr-1 d-inline input-zoom\",attrs:{\"name\":\"saturday\"},model:{value:(_vm.selectedDays.saturday),callback:function ($$v) {_vm.$set(_vm.selectedDays, \"saturday\", $$v)},expression:\"selectedDays.saturday\"}},[_vm._v(\" \"+_vm._s(_vm.$t('Saturday'))+\" \")]),_c('b-form-checkbox',{staticClass:\"custom-control-primary mt-0 d-inline input-zoom\",attrs:{\"name\":\"sunday\"},model:{value:(_vm.selectedDays.sunday),callback:function ($$v) {_vm.$set(_vm.selectedDays, \"sunday\", $$v)},expression:\"selectedDays.sunday\"}},[_vm._v(\" \"+_vm._s(_vm.$t('Sunday'))+\" \")]),(_vm.isSubmit && !_vm.$v.selectedDays.checked)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"You must select at least one day\")))]):_vm._e()],1)])],1),_c('hr',{staticClass:\"mb-1 mt-1\"}),_c('b-row',[_c('b-col',[_c('b-form-group',[_c('label',{attrs:{\"for\":\"startTime\"}}),_vm._v(_vm._s(_vm.$t(\"Start Time\"))+\" \"),_c('v-select',{staticClass:\"select-config\",attrs:{\"options\":_vm.startTimeScala,\"value\":\"key\",\"label\":\"label\",\"reduce\":function (item) { return item.key; }},model:{value:(_vm.appointment.start_time),callback:function ($$v) {_vm.$set(_vm.appointment, \"start_time\", $$v)},expression:\"appointment.start_time\"}}),(_vm.isSubmit && !_vm.$v.appointment.start_time.required)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"Start time required\")))]):_vm._e()],1)],1),_c('b-col',{attrs:{\"sm\":\"6\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"endTime\"}}),_vm._v(_vm._s(_vm.$t(\"End Time\"))+\" \"),_c('v-select',{staticClass:\"select-config\",attrs:{\"options\":_vm.endTimeScala,\"reduce\":function (item) { return item.key; },\"label\":\"label\"},model:{value:(_vm.appointment.end_time),callback:function ($$v) {_vm.$set(_vm.appointment, \"end_time\", $$v)},expression:\"appointment.end_time\"}}),(_vm.isSubmit && !_vm.$v.appointment.end_time.required)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"End time required\")))]):_vm._e()],1)],1)],1),[_c('b-form-group',[_c('label',{attrs:{\"for\":\"title\"}},[_vm._v(_vm._s(_vm.$t(\"Title\")))]),_c('b-form-input',{attrs:{\"id\":\"title\",\"label\":\"title\"},model:{value:(_vm.appointment.title),callback:function ($$v) {_vm.$set(_vm.appointment, \"title\", $$v)},expression:\"appointment.title\"}}),(_vm.isSubmit && !_vm.$v.appointment.title.required)?_c('small',{staticClass:\"form-text text-danger\"},[_vm._v(_vm._s(_vm.$t(\"Activity title required\")))]):_vm._e()],1),_c('b-form-group',[_c('label',{attrs:{\"for\":\"definition\"}},[_vm._v(_vm._s(_vm.$t(\"Description\")))]),_c('b-form-textarea',{attrs:{\"id\":\"defination\",\"placeholder\":\"\",\"rows\":\"3\",\"max-rows\":\"6\"},model:{value:(_vm.appointment.definition),callback:function ($$v) {_vm.$set(_vm.appointment, \"definition\", $$v)},expression:\"appointment.definition\"}})],1),(false)?_c('b-form-group',[_c('b-row',[_c('b-col',{attrs:{\"sm\":\"12\"}},[_c('label',{attrs:{\"for\":\"delay-minute\"}},[_vm._v(_vm._s(_vm.$t(\"Cannot Join After How Many Minutes\")))]),_c('v-select',{staticClass:\"select-config\",attrs:{\"options\":_vm.delayMinute},model:{value:(_vm.minute),callback:function ($$v) {_vm.minute=$$v},expression:\"minute\"}})],1)],1)],1):_vm._e()]],2)],1),_c('b-tab',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"UsersIcon\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"Participants\")))])]},proxy:true}])},[_c('b-row',[_c('b-col',[_c('div',[_c('span',{staticClass:\"text-success\"},[_vm._v(\" AKTİVİTEYE KATILANLAR\")])]),_c('div',[_c('b-form-input',{staticClass:\"d-inline-block mr-1\",attrs:{\"size\":\"sm\",\"placeholder\":_vm.$t('Search...')},model:{value:(_vm.filter),callback:function ($$v) {_vm.filter=$$v},expression:\"filter\"}})],1),_c('div',[_c('b-table',{ref:\"refUserListTable\",staticClass:\"text-left position-relative\",attrs:{\"hover\":\"\",\"current-page\":_vm.currentPage,\"total-rows\":_vm.totalRows,\"per-page\":_vm.perPage,\"aling\":\"right\",\"first-number\":\"\",\"last-number\":\"\",\"small\":\"small\",\"items\":_vm.ActivityParticipants,\"responsive\":\"sm\",\"sticky-header\":\"300px\",\"fields\":_vm.ActivityParticipantColumns,\"primary-key\":\"id\",\"filter\":_vm.filter,\"show-empty\":\"\",\"empty-text\":_vm.$t('No Matching Creates Found'),\"empty-filtered-text\":_vm.$t('There are no records matching your request!')},on:{\"filtered\":_vm.onFiltered},scopedSlots:_vm._u([{key:\"cell(actions)\",fn:function(data){return [_c('b-button',{staticClass:\"m-0\",staticStyle:{\"padding\":\"2px\"},attrs:{\"size\":\"\",\"variant\":\"outline-danger\"},on:{\"click\":function($event){return _vm.removeCustomer(data.item, data.index)}}},[_c('feather-icon',{attrs:{\"icon\":\"XIcon\",\"size\":\"24\"}})],1)]}}])}),_c('div',{staticClass:\"mx-2\"},[_c('b-row',[_c('div',[(_vm.$i18n.locale === 'tr')?_c('small',{staticClass:\"mt-1\"},[_vm._v(\" \"+_vm._s(_vm.totalRows)+\" kayıttan \"+_vm._s(_vm.currentPage * _vm.perPage - _vm.perPage)+\"-\"+_vm._s(_vm.currentPage * _vm.perPage)+\" arası gösteriliyor \")]):_vm._e()])]),_c('b-row',[_c('b-col',{staticClass:\"d-flex align-items-right justify-content-right justify-content-sm-end radius0\",attrs:{\"cols\":\"6\",\"sm\":\"\"}},[_c('b-pagination',{staticClass:\"mb-0 mt-1 mt-sm-0 r-0\",attrs:{\"total-rows\":_vm.totalRows,\"per-page\":_vm.perPage,\"aling\":\"right\",\"first-number\":\"\",\"last-number\":\"\",\"prev-class\":\"prev-item\",\"next-class\":\"next-item\"},scopedSlots:_vm._u([{key:\"prev-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronLeftIcon\",\"size\":\"18\"}})]},proxy:true},{key:\"next-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronRightIcon\",\"size\":\"18\"}})]},proxy:true}]),model:{value:(_vm.currentPage),callback:function ($$v) {_vm.currentPage=$$v},expression:\"currentPage\"}})],1)],1)],1)],1)]),_c('b-col',[_c('div',[_c('span',{staticClass:\"text-danger\"},[_vm._v(\" AKTİVİTEYE KATILMAYANLAR\")])]),_c('div',[_c('b-form-input',{staticClass:\"d-inline-block mr-1\",attrs:{\"size\":\"sm\",\"placeholder\":_vm.$t('Search...')},model:{value:(_vm.filter2),callback:function ($$v) {_vm.filter2=$$v},expression:\"filter2\"}})],1),_c('div',[_c('b-table',{ref:\"refUserListTable\",staticClass:\"text-left position-relative\",attrs:{\"hover\":\"\",\"current-page\":_vm.currentPage2,\"total-rows\":_vm.totalRows2,\"per-page\":_vm.perPage2,\"aling\":\"right\",\"first-number\":\"\",\"last-number\":\"\",\"small\":\"small\",\"items\":_vm.InActivityParticipants,\"responsive\":\"sm\",\"sticky-header\":\"300px\",\"fields\":_vm.ActivityParticipantColumns,\"primary-key\":\"id\",\"filter-included-fields\":_vm.filterOn2,\"filter\":_vm.filter2,\"show-empty\":\"\",\"empty-text\":_vm.$t('No Matching Creates Found'),\"empty-filtered-text\":_vm.$t('There are no records matching your request!')},on:{\"filtered\":_vm.onFiltered2},scopedSlots:_vm._u([{key:\"cell(actions)\",fn:function(data){return [_c('b-button',{staticClass:\"m-0\",staticStyle:{\"padding\":\"2px\"},attrs:{\"size\":\"\",\"variant\":\"outline-success\"},on:{\"click\":function($event){return _vm.addCustomer(data.item, data.index)}}},[_c('feather-icon',{attrs:{\"icon\":\"CheckIcon\",\"size\":\"24\"}})],1)]}}])}),_c('div',{staticClass:\"mx-2\"},[_c('b-row',[_c('div',[(_vm.$i18n.locale === 'tr')?_c('small',{staticClass:\"mt-1\"},[_vm._v(\" \"+_vm._s(_vm.totalRows2)+\" kayıttan \"+_vm._s(_vm.currentPage2 * _vm.perPage2 - _vm.perPage2)+\"-\"+_vm._s(_vm.currentPage2 * _vm.perPage2)+\" arası kayıt gösteriliyor \")]):_vm._e()])]),_c('b-row',[_c('b-col',{staticClass:\"d-flex align-items-right justify-content-right justify-content-sm-end radius0\",attrs:{\"cols\":\"6\",\"sm\":\"\"}},[_c('b-pagination',{staticClass:\"mb-0 mt-1 mt-sm-0 r-0\",attrs:{\"total-rows\":_vm.totalRows2,\"per-page\":_vm.perPage2,\"aling\":\"right\",\"first-number\":\"\",\"last-number\":\"\",\"prev-class\":\"prev-item\",\"next-class\":\"next-item\"},scopedSlots:_vm._u([{key:\"prev-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronLeftIcon\",\"size\":\"18\"}})]},proxy:true},{key:\"next-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronRightIcon\",\"size\":\"18\"}})]},proxy:true}]),model:{value:(_vm.currentPage2),callback:function ($$v) {_vm.currentPage2=$$v},expression:\"currentPage2\"}})],1)],1)],1)],1)])],1)],1),_c('b-tab',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"GridIcon\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"Rooms\")))])]},proxy:true}])},[_c('b-form-group',{staticClass:\"mt-1\"},[_c('label',{attrs:{\"for\":\"title\"}},[_vm._v(_vm._s(_vm.$t(\"Room\")))]),_c('v-select',{staticClass:\"select-config\",attrs:{\"options\":_vm.optionsRoom,\"label\":\"room_name\"},model:{value:(_vm.room),callback:function ($$v) {_vm.room=$$v},expression:\"room\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(_vm._s(_vm.$t(\"No Suitable Room Found\")))])])],1),_c('b-form-group',[_c('label',{attrs:{\"for\":\"title\"}},[_vm._v(_vm._s(_vm.$t(\"Capacity\")))]),_c('b-form-input',{attrs:{\"id\":\"basicInput\",\"placeholder\":_vm.$t('Capacity')},model:{value:(_vm.appointment.capacity),callback:function ($$v) {_vm.$set(_vm.appointment, \"capacity\", $$v)},expression:\"appointment.capacity\"}})],1)],1),_c('hr'),[_c('div',{staticClass:\"row float-right\"},[_c('div',{staticClass:\"col\"},[_c('b-button',{staticClass:\"mr-1\",attrs:{\"variant\":\"warning\",\"disabled\":_vm.is_data_load},on:{\"click\":_vm.cancel}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Cancel\"))+\" \")]),_c('b-button',{attrs:{\"variant\":\"primary\",\"disabled\":_vm.is_data_load},on:{\"click\":function($event){return _vm.createMultipleAppointments()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Save\"))+\" \")])],1)])],_c('b-button',{staticClass:\"mr-1\",staticStyle:{\"position\":\"absolute\",\"display\":\"block\",\"top\":\"40%\",\"left\":\"25%\",\"z-index\":\"99999\"},attrs:{\"variant\":\"outline-danger\",\"hidden\":_vm.is_data_load== true ? false : true}},[_c('b-spinner',{staticClass:\"mr-1\",staticStyle:{\"width\":\"2rem\",\"height\":\"2rem\"}}),_c('h3',{staticStyle:{\"color\":\"#E54034\"}},[(_vm.spinMessage==2)?_c('span',{staticStyle:{\"textColor\":\"7B70F1\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Saving please wait\"))+\" \")]):_vm._e(),(_vm.spinMessage==5)?_c('span',{staticStyle:{\"textColor\":\"7B70F1\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Loading participants please wait\"))+\" \")]):_vm._e()])],1)],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppointmentSheduleMultiNew.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppointmentSheduleMultiNew.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppointmentSheduleMultiNew.vue?vue&type=template&id=5e4ac42a&scoped=true&\"\nimport script from \"./AppointmentSheduleMultiNew.vue?vue&type=script&lang=js&\"\nexport * from \"./AppointmentSheduleMultiNew.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppointmentSheduleMultiNew.vue?vue&type=style&index=0&id=5e4ac42a&scoped=true&lang=css&\"\nimport style1 from \"./AppointmentSheduleMultiNew.vue?vue&type=style&index=1&id=5e4ac42a&scoped=true&lang=css&\"\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 \"5e4ac42a\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppointmentCalendar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppointmentCalendar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppointmentCalendar.vue?vue&type=template&id=c5f9f9ba&\"\nimport script from \"./AppointmentCalendar.vue?vue&type=script&lang=js&\"\nexport * from \"./AppointmentCalendar.vue?vue&type=script&lang=js&\"\nimport style0 from \"@/styles/scss/trainerCalendar.scss?vue&type=style&index=0&lang=scss&\"\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","export const HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport const defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: (err) => typeof console !== \"undefined\" && console.warn(err),\n getWeek: (givenDate) => {\n const date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\n","export const english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: (nth) => {\n const s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n","export const pad = (number, length = 2) => `000${number}`.slice(length * -1);\nexport const int = (bool) => (bool === true ? 1 : 0);\nexport function debounce(fn, wait) {\n let t;\n return function () {\n clearTimeout(t);\n t = setTimeout(() => fn.apply(this, arguments), wait);\n };\n}\nexport const arrayify = (obj) => obj instanceof Array ? obj : [obj];\n","export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n const e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n const wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (const key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n const path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n","import { int, pad } from \"../utils\";\nconst doNothing = () => undefined;\nexport const monthToStr = (monthNumber, shorthand, locale) => locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber];\nexport const revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n H: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n J: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n K: (dateObj, amPM, locale) => {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: (dateObj, seconds) => {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: (_, unixSeconds) => new Date(parseFloat(unixSeconds) * 1000),\n W: function (dateObj, weekNum, locale) {\n const weekNumber = parseInt(weekNum);\n const date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: (dateObj, year) => {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: (_, ISODate) => new Date(ISODate),\n d: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n h: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n i: (dateObj, minutes) => {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: (dateObj, month) => {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: (dateObj, month) => {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: (dateObj, seconds) => {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: (_, unixMillSeconds) => new Date(parseFloat(unixMillSeconds)),\n w: doNothing,\n y: (dateObj, year) => {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport const tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n};\nexport const formats = {\n Z: (date) => date.toISOString(),\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: (date) => pad(date.getHours()),\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: (date, locale) => locale.amPM[int(date.getHours() > 11)],\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: (date) => pad(date.getSeconds()),\n U: (date) => date.getTime() / 1000,\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: (date) => pad(date.getFullYear(), 4),\n d: (date) => pad(date.getDate()),\n h: (date) => (date.getHours() % 12 ? date.getHours() % 12 : 12),\n i: (date) => pad(date.getMinutes()),\n j: (date) => date.getDate(),\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: (date) => pad(date.getMonth() + 1),\n n: (date) => date.getMonth() + 1,\n s: (date) => date.getSeconds(),\n u: (date) => date.getTime(),\n w: (date) => date.getDay(),\n y: (date) => String(date.getFullYear()).substring(2),\n};\n","import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport const createDateFormatter = ({ config = defaults, l10n = english, isMobile = false, }) => (dateObj, frmt, overrideLocale) => {\n const locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map((c, i, arr) => formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\")\n .join(\"\");\n};\nexport const createDateParser = ({ config = defaults, l10n = english }) => (date, givenFormat, timeless, customLocale) => {\n if (date !== 0 && !date)\n return undefined;\n const locale = customLocale || l10n;\n let parsedDate;\n const dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined)\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n const format = givenFormat || (config || defaults).dateFormat;\n const datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr))\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n let matched, ops = [];\n for (let i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n const token = format[i];\n const isBackSlash = token === \"\\\\\";\n const escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n const match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n ops.forEach(({ fn, val }) => (parsedDate = fn(parsedDate, val, locale) || parsedDate));\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(`Invalid date provided: ${dateOrig}`));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n};\nexport function compareDates(date1, date2, timeless = true) {\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport const isBetween = (ts, ts1, ts2) => {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport const duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n let hours = config.defaultHour;\n let minutes = config.defaultMinute;\n let seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n const minHour = config.minDate.getHours();\n const minMinutes = config.minDate.getMinutes();\n const minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n const maxHr = config.maxDate.getHours();\n const maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours, minutes, seconds };\n}\n","import { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nconst DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n const self = {\n config: Object.assign(Object.assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth(month = self.currentMonth, yr = self.currentYear) {\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n const config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n const daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n const defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n const defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n const prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n let hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n const limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n const limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n const maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n const minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n const date = dateObj || self.latestSelectedDateObj;\n if (date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n const eventTarget = getEventTarget(event);\n const year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach((ev) => bind(element, ev, handler, options));\n if (element instanceof Array)\n return element.forEach((el) => bind(el, event, handler, options));\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: () => element.removeEventListener(event, handler),\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach((evt) => {\n Array.prototype.forEach.call(self.element.querySelectorAll(`[data-${evt}]`), (el) => bind(el, \"click\", self[evt]));\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n const debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", (e) => {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n const selText = (e) => getEventTarget(e).select();\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", () => self.secondElement && self.secondElement.select());\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", (e) => {\n updateTime(e);\n triggerChange();\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n const jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n const oldYear = self.currentYear;\n const oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n const eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n const target = e && getEventTarget(e);\n const input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n const event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n const fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n const { weekWrapper, weekNumbers } = buildWeeks();\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n const customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n const wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n const dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n const startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n const endMonth = delta > 0 ? self.config.showMonths : -1;\n for (let m = startMonth; m != endMonth; m += delta) {\n const month = self.daysContainer.children[m];\n const startIndex = delta > 0 ? 0 : month.children.length - 1;\n const endIndex = delta > 0 ? month.children.length : -1;\n for (let i = startIndex; i != endIndex; i += delta) {\n const c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n const givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n const endMonth = delta > 0 ? self.config.showMonths : -1;\n const loopDelta = delta > 0 ? 1 : -1;\n for (let m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n const month = self.daysContainer.children[m];\n const startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n const numMonthDays = month.children.length;\n for (let i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n const c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n const dayFocused = isInView(document.activeElement || document.body);\n const startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n const firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n const prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n const daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n let dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (let dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n const dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n const frag = document.createDocumentFragment();\n for (let i = 0; i < self.config.showMonths; i++) {\n const d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n const shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (let i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n const month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n const container = createElement(\"div\", \"flatpickr-month\");\n const monthNavFragment = window.document.createDocumentFragment();\n let monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", (e) => {\n const target = getEventTarget(e);\n const selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n const yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n const yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n const currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container,\n yearElement,\n monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (let m = self.config.showMonths; m--;) {\n const month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: () => self.__hidePrevMonthArrow,\n set(bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: () => self.__hideNextMonthArrow,\n set(bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n const defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n const separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n const hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n const minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n const secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (let i = self.config.showMonths; i--;) {\n const container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n const firstDayOfWeek = self.l10n.firstDayOfWeek;\n let weekdays = [...self.l10n.weekdays.shorthand];\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = [\n ...weekdays.splice(firstDayOfWeek, weekdays.length),\n ...weekdays.splice(0, firstDayOfWeek),\n ];\n }\n for (let i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = `\n \n ${weekdays.join(\"\")}\n \n `;\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n const weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n const weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper,\n weekNumbers,\n };\n }\n function changeMonth(value, isOffset = true) {\n const delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent = true, toInitial = true) {\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n const { hours, minutes, seconds } = getDefaultHours(self.config);\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (let i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n const wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach((k) => {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n const eventTarget = getEventTarget(e);\n const isCalendarElement = isCalendarElem(eventTarget);\n const isInput = eventTarget === self.input ||\n eventTarget === self.altInput ||\n self.element.contains(eventTarget) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n const lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n const isIgnored = !self.config.ignoredFocusElements.some((elem) => elem.contains(eventTarget));\n if (lostFocus && isIgnored) {\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n const newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless = true) {\n var _a;\n const dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n const bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (let i = 0, d; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n const parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n const isInput = e.target === self._input;\n if (isInput &&\n (self.selectedDates.length > 0 || self._input.value.length > 0) &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n const eventTarget = getEventTarget(e);\n const isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n const allowInput = self.config.allowInput;\n const allowKeydown = self.isOpen && (!allowInput || !isInput);\n const allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n const isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n const delta = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta);\n else {\n e.stopPropagation();\n changeMonth(delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n const delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n const elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter((x) => x);\n const i = elems.indexOf(eventTarget);\n if (i !== -1) {\n const target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n const hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n let containsDisabled = false;\n let minRange = 0, maxRange = 0;\n for (let t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (let m = 0; m < self.config.showMonths; m++) {\n const month = self.daysContainer.children[m];\n for (let i = 0, l = month.children.length; i < l; i++) {\n const dayElem = month.children[i], date = dayElem.dateObj;\n const timestamp = date.getTime();\n const outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach((c) => {\n dayElem.classList.remove(c);\n });\n continue;\n }\n else if (containsDisabled && !outOfRange)\n continue;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach((c) => {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement = self._positionElement) {\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n const eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n const wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(() => self.hourElement.select(), 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return (date) => {\n const dateObj = (self.config[`_${type}Date`] = self.parseDate(date, self.config.dateFormat));\n const inverseDateObj = self.config[`_${type === \"min\" ? \"max\" : \"min\"}Date`];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter((d) => isEnabled(d));\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n const boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n const userConfig = Object.assign(Object.assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n const formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: () => self.config._enable,\n set: (dates) => {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: () => self.config._disable,\n set: (dates) => {\n self.config._disable = parseDateRules(dates);\n },\n });\n const timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n const defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n const defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + ` h:i${userConfig.enableSeconds ? \":S\" : \"\"} K`;\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: () => self.config._minDate,\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: () => self.config._maxDate,\n set: minMaxDateSetter(\"max\"),\n });\n const minMaxTimeSetter = (type) => (val) => {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n };\n Object.defineProperty(self.config, \"minTime\", {\n get: () => self.config._minTime,\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: () => self.config._maxTime,\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (let i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter((hook) => self.config[hook] !== undefined).forEach((hook) => {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (let i = 0; i < self.config.plugins.length; i++) {\n const pluginConf = self.config.plugins[i](self) || {};\n for (const key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(`flatpickr: invalid locale ${self.config.locale}`));\n self.l10n = Object.assign(Object.assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = `(${self.l10n.amPM[0]}|${self.l10n.amPM[1]}|${self.l10n.amPM[0].toLowerCase()}|${self.l10n.amPM[1].toLowerCase()})`;\n const userConfig = Object.assign(Object.assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n const positionElement = customPositionElement || self._positionElement;\n const calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, ((acc, child) => acc + child.offsetHeight), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n const top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n let left = window.pageXOffset + inputBounds.left;\n let isCenter = false;\n let isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n const right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n const rightMost = left + calendarWidth > window.document.body.offsetWidth;\n const centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = `${top}px`;\n if (!rightMost) {\n self.calendarContainer.style.left = `${left}px`;\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = `${right}px`;\n }\n else {\n const doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n const bodyWidth = window.document.body.offsetWidth;\n const centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n const centerBefore = \".flatpickr-calendar.centerMost:before\";\n const centerAfter = \".flatpickr-calendar.centerMost:after\";\n const centerIndex = doc.cssRules.length;\n const centerStyle = `{left:${inputBounds.left}px;right:auto;}`;\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(`${centerBefore},${centerAfter}${centerStyle}`, centerIndex);\n self.calendarContainer.style.left = `${centerLeft}px`;\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n let editableSheet = null;\n for (let i = 0; i < document.styleSheets.length; i++) {\n const sheet = document.styleSheets[i];\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n const style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n const isSelectable = (day) => day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n const t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n const target = t;\n const selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n const shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n const selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n const isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n const single = self.config.mode === \"single\" && !self.config.enableTime;\n const range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n const CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n clickOpens: [\n () => {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (const key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach((x) => x());\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach((x) => x());\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n let dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map((d) => self.parseDate(d, format));\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map((date) => self.parseDate(date, format));\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map((date) => self.parseDate(date, format));\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(`Invalid date supplied: ${JSON.stringify(inputDate)}`));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter((d) => d instanceof Date && isEnabled(d, false)));\n if (self.config.mode === \"range\")\n self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n }\n function setDate(date, triggerChange = false, format = self.config.dateFormat) {\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map((rule) => {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter((x) => x);\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n const preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n const inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", (e) => {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n const hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (let i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n const e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (let i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach((yearElement, i) => {\n const d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map((dObj) => self.formatDate(dObj, format))\n .filter((d, i, arr) => self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i)\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange = true) {\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n const eventTarget = getEventTarget(e);\n const isPrevMonth = self.prevMonthNav.contains(eventTarget);\n const isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n const isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n const min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n let newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n const isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n const nodes = Array.prototype.slice\n .call(nodeList)\n .filter((x) => x instanceof HTMLElement);\n const instances = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: Object.assign({}, English),\n default: Object.assign({}, English),\n};\nflatpickr.localize = (l10n) => {\n flatpickr.l10ns.default = Object.assign(Object.assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = (config) => {\n flatpickr.defaultConfig = Object.assign(Object.assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n","\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target, ...args) {\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n for (const source of args) {\n if (source) {\n Object.keys(source).forEach((key) => (target[key] = source[key]));\n }\n }\n return target;\n };\n}\n","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppointmentSheduleEdit.vue?vue&type=style&index=0&id=5ff29478&scoped=true&lang=css&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppointmentSheduleMultiNew.vue?vue&type=style&index=1&id=5e4ac42a&scoped=true&lang=css&\"","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/*!\nFullCalendar v5.9.0\nDocs & License: https://fullcalendar.io/\n(c) 2021 Adam Shaw\n*/\nimport { config, elementClosest, Emitter, applyStyle, whenTransitionDone, removeElement, ScrollController, ElementScrollController, computeInnerRect, WindowScrollController, getElRoot, preventSelection, preventContextMenu, allowSelection, allowContextMenu, ElementDragging, computeRect, getClippingParents, pointInsideRect, isDateSpansEqual, constrainPoint, intersectRects, getRectCenter, diffPoints, mapHash, rangeContainsRange, interactionSettingsToStore, Interaction, isDateSelectionValid, enableCursor, disableCursor, triggerDateSelect, compareNumbers, getElSeg, getRelevantEvents, EventApi, createEmptyEventStore, applyMutationToEventStore, isInteractionValid, buildEventApis, interactionSettingsStore, startOfDay, diffDates, createDuration, getEventTargetViaRoot, identity, eventTupleToStore, parseDragMeta, elementMatches, refineEventDef, parseEventDef, getDefaultEventEnd, createEventInstance, BASE_OPTION_DEFAULTS, createPlugin } from '@fullcalendar/common';\nimport { __extends, __assign } from 'tslib';\n\nconfig.touchMouseIgnoreWait = 500;\nvar ignoreMouseDepth = 0;\nvar listenerCnt = 0;\nvar isWindowTouchMoveCancelled = false;\n/*\nUses a \"pointer\" abstraction, which monitors UI events for both mouse and touch.\nTracks when the pointer \"drags\" on a certain element, meaning down+move+up.\n\nAlso, tracks if there was touch-scrolling.\nAlso, can prevent touch-scrolling from happening.\nAlso, can fire pointermove events when scrolling happens underneath, even when no real pointer movement.\n\nemits:\n- pointerdown\n- pointermove\n- pointerup\n*/\nvar PointerDragging = /** @class */ (function () {\n function PointerDragging(containerEl) {\n var _this = this;\n this.subjectEl = null;\n // options that can be directly assigned by caller\n this.selector = ''; // will cause subjectEl in all emitted events to be this element\n this.handleSelector = '';\n this.shouldIgnoreMove = false;\n this.shouldWatchScroll = true; // for simulating pointermove on scroll\n // internal states\n this.isDragging = false;\n this.isTouchDragging = false;\n this.wasTouchScroll = false;\n // Mouse\n // ----------------------------------------------------------------------------------------------------\n this.handleMouseDown = function (ev) {\n if (!_this.shouldIgnoreMouse() &&\n isPrimaryMouseButton(ev) &&\n _this.tryStart(ev)) {\n var pev = _this.createEventFromMouse(ev, true);\n _this.emitter.trigger('pointerdown', pev);\n _this.initScrollWatch(pev);\n if (!_this.shouldIgnoreMove) {\n document.addEventListener('mousemove', _this.handleMouseMove);\n }\n document.addEventListener('mouseup', _this.handleMouseUp);\n }\n };\n this.handleMouseMove = function (ev) {\n var pev = _this.createEventFromMouse(ev);\n _this.recordCoords(pev);\n _this.emitter.trigger('pointermove', pev);\n };\n this.handleMouseUp = function (ev) {\n document.removeEventListener('mousemove', _this.handleMouseMove);\n document.removeEventListener('mouseup', _this.handleMouseUp);\n _this.emitter.trigger('pointerup', _this.createEventFromMouse(ev));\n _this.cleanup(); // call last so that pointerup has access to props\n };\n // Touch\n // ----------------------------------------------------------------------------------------------------\n this.handleTouchStart = function (ev) {\n if (_this.tryStart(ev)) {\n _this.isTouchDragging = true;\n var pev = _this.createEventFromTouch(ev, true);\n _this.emitter.trigger('pointerdown', pev);\n _this.initScrollWatch(pev);\n // unlike mouse, need to attach to target, not document\n // https://stackoverflow.com/a/45760014\n var targetEl = ev.target;\n if (!_this.shouldIgnoreMove) {\n targetEl.addEventListener('touchmove', _this.handleTouchMove);\n }\n targetEl.addEventListener('touchend', _this.handleTouchEnd);\n targetEl.addEventListener('touchcancel', _this.handleTouchEnd); // treat it as a touch end\n // attach a handler to get called when ANY scroll action happens on the page.\n // this was impossible to do with normal on/off because 'scroll' doesn't bubble.\n // http://stackoverflow.com/a/32954565/96342\n window.addEventListener('scroll', _this.handleTouchScroll, true);\n }\n };\n this.handleTouchMove = function (ev) {\n var pev = _this.createEventFromTouch(ev);\n _this.recordCoords(pev);\n _this.emitter.trigger('pointermove', pev);\n };\n this.handleTouchEnd = function (ev) {\n if (_this.isDragging) { // done to guard against touchend followed by touchcancel\n var targetEl = ev.target;\n targetEl.removeEventListener('touchmove', _this.handleTouchMove);\n targetEl.removeEventListener('touchend', _this.handleTouchEnd);\n targetEl.removeEventListener('touchcancel', _this.handleTouchEnd);\n window.removeEventListener('scroll', _this.handleTouchScroll, true); // useCaptured=true\n _this.emitter.trigger('pointerup', _this.createEventFromTouch(ev));\n _this.cleanup(); // call last so that pointerup has access to props\n _this.isTouchDragging = false;\n startIgnoringMouse();\n }\n };\n this.handleTouchScroll = function () {\n _this.wasTouchScroll = true;\n };\n this.handleScroll = function (ev) {\n if (!_this.shouldIgnoreMove) {\n var pageX = (window.pageXOffset - _this.prevScrollX) + _this.prevPageX;\n var pageY = (window.pageYOffset - _this.prevScrollY) + _this.prevPageY;\n _this.emitter.trigger('pointermove', {\n origEvent: ev,\n isTouch: _this.isTouchDragging,\n subjectEl: _this.subjectEl,\n pageX: pageX,\n pageY: pageY,\n deltaX: pageX - _this.origPageX,\n deltaY: pageY - _this.origPageY,\n });\n }\n };\n this.containerEl = containerEl;\n this.emitter = new Emitter();\n containerEl.addEventListener('mousedown', this.handleMouseDown);\n containerEl.addEventListener('touchstart', this.handleTouchStart, { passive: true });\n listenerCreated();\n }\n PointerDragging.prototype.destroy = function () {\n this.containerEl.removeEventListener('mousedown', this.handleMouseDown);\n this.containerEl.removeEventListener('touchstart', this.handleTouchStart, { passive: true });\n listenerDestroyed();\n };\n PointerDragging.prototype.tryStart = function (ev) {\n var subjectEl = this.querySubjectEl(ev);\n var downEl = ev.target;\n if (subjectEl &&\n (!this.handleSelector || elementClosest(downEl, this.handleSelector))) {\n this.subjectEl = subjectEl;\n this.isDragging = true; // do this first so cancelTouchScroll will work\n this.wasTouchScroll = false;\n return true;\n }\n return false;\n };\n PointerDragging.prototype.cleanup = function () {\n isWindowTouchMoveCancelled = false;\n this.isDragging = false;\n this.subjectEl = null;\n // keep wasTouchScroll around for later access\n this.destroyScrollWatch();\n };\n PointerDragging.prototype.querySubjectEl = function (ev) {\n if (this.selector) {\n return elementClosest(ev.target, this.selector);\n }\n return this.containerEl;\n };\n PointerDragging.prototype.shouldIgnoreMouse = function () {\n return ignoreMouseDepth || this.isTouchDragging;\n };\n // can be called by user of this class, to cancel touch-based scrolling for the current drag\n PointerDragging.prototype.cancelTouchScroll = function () {\n if (this.isDragging) {\n isWindowTouchMoveCancelled = true;\n }\n };\n // Scrolling that simulates pointermoves\n // ----------------------------------------------------------------------------------------------------\n PointerDragging.prototype.initScrollWatch = function (ev) {\n if (this.shouldWatchScroll) {\n this.recordCoords(ev);\n window.addEventListener('scroll', this.handleScroll, true); // useCapture=true\n }\n };\n PointerDragging.prototype.recordCoords = function (ev) {\n if (this.shouldWatchScroll) {\n this.prevPageX = ev.pageX;\n this.prevPageY = ev.pageY;\n this.prevScrollX = window.pageXOffset;\n this.prevScrollY = window.pageYOffset;\n }\n };\n PointerDragging.prototype.destroyScrollWatch = function () {\n if (this.shouldWatchScroll) {\n window.removeEventListener('scroll', this.handleScroll, true); // useCaptured=true\n }\n };\n // Event Normalization\n // ----------------------------------------------------------------------------------------------------\n PointerDragging.prototype.createEventFromMouse = function (ev, isFirst) {\n var deltaX = 0;\n var deltaY = 0;\n // TODO: repeat code\n if (isFirst) {\n this.origPageX = ev.pageX;\n this.origPageY = ev.pageY;\n }\n else {\n deltaX = ev.pageX - this.origPageX;\n deltaY = ev.pageY - this.origPageY;\n }\n return {\n origEvent: ev,\n isTouch: false,\n subjectEl: this.subjectEl,\n pageX: ev.pageX,\n pageY: ev.pageY,\n deltaX: deltaX,\n deltaY: deltaY,\n };\n };\n PointerDragging.prototype.createEventFromTouch = function (ev, isFirst) {\n var touches = ev.touches;\n var pageX;\n var pageY;\n var deltaX = 0;\n var deltaY = 0;\n // if touch coords available, prefer,\n // because FF would give bad ev.pageX ev.pageY\n if (touches && touches.length) {\n pageX = touches[0].pageX;\n pageY = touches[0].pageY;\n }\n else {\n pageX = ev.pageX;\n pageY = ev.pageY;\n }\n // TODO: repeat code\n if (isFirst) {\n this.origPageX = pageX;\n this.origPageY = pageY;\n }\n else {\n deltaX = pageX - this.origPageX;\n deltaY = pageY - this.origPageY;\n }\n return {\n origEvent: ev,\n isTouch: true,\n subjectEl: this.subjectEl,\n pageX: pageX,\n pageY: pageY,\n deltaX: deltaX,\n deltaY: deltaY,\n };\n };\n return PointerDragging;\n}());\n// Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac)\nfunction isPrimaryMouseButton(ev) {\n return ev.button === 0 && !ev.ctrlKey;\n}\n// Ignoring fake mouse events generated by touch\n// ----------------------------------------------------------------------------------------------------\nfunction startIgnoringMouse() {\n ignoreMouseDepth += 1;\n setTimeout(function () {\n ignoreMouseDepth -= 1;\n }, config.touchMouseIgnoreWait);\n}\n// We want to attach touchmove as early as possible for Safari\n// ----------------------------------------------------------------------------------------------------\nfunction listenerCreated() {\n listenerCnt += 1;\n if (listenerCnt === 1) {\n window.addEventListener('touchmove', onWindowTouchMove, { passive: false });\n }\n}\nfunction listenerDestroyed() {\n listenerCnt -= 1;\n if (!listenerCnt) {\n window.removeEventListener('touchmove', onWindowTouchMove, { passive: false });\n }\n}\nfunction onWindowTouchMove(ev) {\n if (isWindowTouchMoveCancelled) {\n ev.preventDefault();\n }\n}\n\n/*\nAn effect in which an element follows the movement of a pointer across the screen.\nThe moving element is a clone of some other element.\nMust call start + handleMove + stop.\n*/\nvar ElementMirror = /** @class */ (function () {\n function ElementMirror() {\n this.isVisible = false; // must be explicitly enabled\n this.sourceEl = null;\n this.mirrorEl = null;\n this.sourceElRect = null; // screen coords relative to viewport\n // options that can be set directly by caller\n this.parentNode = document.body; // HIGHLY SUGGESTED to set this to sidestep ShadowDOM issues\n this.zIndex = 9999;\n this.revertDuration = 0;\n }\n ElementMirror.prototype.start = function (sourceEl, pageX, pageY) {\n this.sourceEl = sourceEl;\n this.sourceElRect = this.sourceEl.getBoundingClientRect();\n this.origScreenX = pageX - window.pageXOffset;\n this.origScreenY = pageY - window.pageYOffset;\n this.deltaX = 0;\n this.deltaY = 0;\n this.updateElPosition();\n };\n ElementMirror.prototype.handleMove = function (pageX, pageY) {\n this.deltaX = (pageX - window.pageXOffset) - this.origScreenX;\n this.deltaY = (pageY - window.pageYOffset) - this.origScreenY;\n this.updateElPosition();\n };\n // can be called before start\n ElementMirror.prototype.setIsVisible = function (bool) {\n if (bool) {\n if (!this.isVisible) {\n if (this.mirrorEl) {\n this.mirrorEl.style.display = '';\n }\n this.isVisible = bool; // needs to happen before updateElPosition\n this.updateElPosition(); // because was not updating the position while invisible\n }\n }\n else if (this.isVisible) {\n if (this.mirrorEl) {\n this.mirrorEl.style.display = 'none';\n }\n this.isVisible = bool;\n }\n };\n // always async\n ElementMirror.prototype.stop = function (needsRevertAnimation, callback) {\n var _this = this;\n var done = function () {\n _this.cleanup();\n callback();\n };\n if (needsRevertAnimation &&\n this.mirrorEl &&\n this.isVisible &&\n this.revertDuration && // if 0, transition won't work\n (this.deltaX || this.deltaY) // if same coords, transition won't work\n ) {\n this.doRevertAnimation(done, this.revertDuration);\n }\n else {\n setTimeout(done, 0);\n }\n };\n ElementMirror.prototype.doRevertAnimation = function (callback, revertDuration) {\n var mirrorEl = this.mirrorEl;\n var finalSourceElRect = this.sourceEl.getBoundingClientRect(); // because autoscrolling might have happened\n mirrorEl.style.transition =\n 'top ' + revertDuration + 'ms,' +\n 'left ' + revertDuration + 'ms';\n applyStyle(mirrorEl, {\n left: finalSourceElRect.left,\n top: finalSourceElRect.top,\n });\n whenTransitionDone(mirrorEl, function () {\n mirrorEl.style.transition = '';\n callback();\n });\n };\n ElementMirror.prototype.cleanup = function () {\n if (this.mirrorEl) {\n removeElement(this.mirrorEl);\n this.mirrorEl = null;\n }\n this.sourceEl = null;\n };\n ElementMirror.prototype.updateElPosition = function () {\n if (this.sourceEl && this.isVisible) {\n applyStyle(this.getMirrorEl(), {\n left: this.sourceElRect.left + this.deltaX,\n top: this.sourceElRect.top + this.deltaY,\n });\n }\n };\n ElementMirror.prototype.getMirrorEl = function () {\n var sourceElRect = this.sourceElRect;\n var mirrorEl = this.mirrorEl;\n if (!mirrorEl) {\n mirrorEl = this.mirrorEl = this.sourceEl.cloneNode(true); // cloneChildren=true\n // we don't want long taps or any mouse interaction causing selection/menus.\n // would use preventSelection(), but that prevents selectstart, causing problems.\n mirrorEl.classList.add('fc-unselectable');\n mirrorEl.classList.add('fc-event-dragging');\n applyStyle(mirrorEl, {\n position: 'fixed',\n zIndex: this.zIndex,\n visibility: '',\n boxSizing: 'border-box',\n width: sourceElRect.right - sourceElRect.left,\n height: sourceElRect.bottom - sourceElRect.top,\n right: 'auto',\n bottom: 'auto',\n margin: 0,\n });\n this.parentNode.appendChild(mirrorEl);\n }\n return mirrorEl;\n };\n return ElementMirror;\n}());\n\n/*\nIs a cache for a given element's scroll information (all the info that ScrollController stores)\nin addition the \"client rectangle\" of the element.. the area within the scrollbars.\n\nThe cache can be in one of two modes:\n- doesListening:false - ignores when the container is scrolled by someone else\n- doesListening:true - watch for scrolling and update the cache\n*/\nvar ScrollGeomCache = /** @class */ (function (_super) {\n __extends(ScrollGeomCache, _super);\n function ScrollGeomCache(scrollController, doesListening) {\n var _this = _super.call(this) || this;\n _this.handleScroll = function () {\n _this.scrollTop = _this.scrollController.getScrollTop();\n _this.scrollLeft = _this.scrollController.getScrollLeft();\n _this.handleScrollChange();\n };\n _this.scrollController = scrollController;\n _this.doesListening = doesListening;\n _this.scrollTop = _this.origScrollTop = scrollController.getScrollTop();\n _this.scrollLeft = _this.origScrollLeft = scrollController.getScrollLeft();\n _this.scrollWidth = scrollController.getScrollWidth();\n _this.scrollHeight = scrollController.getScrollHeight();\n _this.clientWidth = scrollController.getClientWidth();\n _this.clientHeight = scrollController.getClientHeight();\n _this.clientRect = _this.computeClientRect(); // do last in case it needs cached values\n if (_this.doesListening) {\n _this.getEventTarget().addEventListener('scroll', _this.handleScroll);\n }\n return _this;\n }\n ScrollGeomCache.prototype.destroy = function () {\n if (this.doesListening) {\n this.getEventTarget().removeEventListener('scroll', this.handleScroll);\n }\n };\n ScrollGeomCache.prototype.getScrollTop = function () {\n return this.scrollTop;\n };\n ScrollGeomCache.prototype.getScrollLeft = function () {\n return this.scrollLeft;\n };\n ScrollGeomCache.prototype.setScrollTop = function (top) {\n this.scrollController.setScrollTop(top);\n if (!this.doesListening) {\n // we are not relying on the element to normalize out-of-bounds scroll values\n // so we need to sanitize ourselves\n this.scrollTop = Math.max(Math.min(top, this.getMaxScrollTop()), 0);\n this.handleScrollChange();\n }\n };\n ScrollGeomCache.prototype.setScrollLeft = function (top) {\n this.scrollController.setScrollLeft(top);\n if (!this.doesListening) {\n // we are not relying on the element to normalize out-of-bounds scroll values\n // so we need to sanitize ourselves\n this.scrollLeft = Math.max(Math.min(top, this.getMaxScrollLeft()), 0);\n this.handleScrollChange();\n }\n };\n ScrollGeomCache.prototype.getClientWidth = function () {\n return this.clientWidth;\n };\n ScrollGeomCache.prototype.getClientHeight = function () {\n return this.clientHeight;\n };\n ScrollGeomCache.prototype.getScrollWidth = function () {\n return this.scrollWidth;\n };\n ScrollGeomCache.prototype.getScrollHeight = function () {\n return this.scrollHeight;\n };\n ScrollGeomCache.prototype.handleScrollChange = function () {\n };\n return ScrollGeomCache;\n}(ScrollController));\n\nvar ElementScrollGeomCache = /** @class */ (function (_super) {\n __extends(ElementScrollGeomCache, _super);\n function ElementScrollGeomCache(el, doesListening) {\n return _super.call(this, new ElementScrollController(el), doesListening) || this;\n }\n ElementScrollGeomCache.prototype.getEventTarget = function () {\n return this.scrollController.el;\n };\n ElementScrollGeomCache.prototype.computeClientRect = function () {\n return computeInnerRect(this.scrollController.el);\n };\n return ElementScrollGeomCache;\n}(ScrollGeomCache));\n\nvar WindowScrollGeomCache = /** @class */ (function (_super) {\n __extends(WindowScrollGeomCache, _super);\n function WindowScrollGeomCache(doesListening) {\n return _super.call(this, new WindowScrollController(), doesListening) || this;\n }\n WindowScrollGeomCache.prototype.getEventTarget = function () {\n return window;\n };\n WindowScrollGeomCache.prototype.computeClientRect = function () {\n return {\n left: this.scrollLeft,\n right: this.scrollLeft + this.clientWidth,\n top: this.scrollTop,\n bottom: this.scrollTop + this.clientHeight,\n };\n };\n // the window is the only scroll object that changes it's rectangle relative\n // to the document's topleft as it scrolls\n WindowScrollGeomCache.prototype.handleScrollChange = function () {\n this.clientRect = this.computeClientRect();\n };\n return WindowScrollGeomCache;\n}(ScrollGeomCache));\n\n// If available we are using native \"performance\" API instead of \"Date\"\n// Read more about it on MDN:\n// https://developer.mozilla.org/en-US/docs/Web/API/Performance\nvar getTime = typeof performance === 'function' ? performance.now : Date.now;\n/*\nFor a pointer interaction, automatically scrolls certain scroll containers when the pointer\napproaches the edge.\n\nThe caller must call start + handleMove + stop.\n*/\nvar AutoScroller = /** @class */ (function () {\n function AutoScroller() {\n var _this = this;\n // options that can be set by caller\n this.isEnabled = true;\n this.scrollQuery = [window, '.fc-scroller'];\n this.edgeThreshold = 50; // pixels\n this.maxVelocity = 300; // pixels per second\n // internal state\n this.pointerScreenX = null;\n this.pointerScreenY = null;\n this.isAnimating = false;\n this.scrollCaches = null;\n // protect against the initial pointerdown being too close to an edge and starting the scroll\n this.everMovedUp = false;\n this.everMovedDown = false;\n this.everMovedLeft = false;\n this.everMovedRight = false;\n this.animate = function () {\n if (_this.isAnimating) { // wasn't cancelled between animation calls\n var edge = _this.computeBestEdge(_this.pointerScreenX + window.pageXOffset, _this.pointerScreenY + window.pageYOffset);\n if (edge) {\n var now = getTime();\n _this.handleSide(edge, (now - _this.msSinceRequest) / 1000);\n _this.requestAnimation(now);\n }\n else {\n _this.isAnimating = false; // will stop animation\n }\n }\n };\n }\n AutoScroller.prototype.start = function (pageX, pageY, scrollStartEl) {\n if (this.isEnabled) {\n this.scrollCaches = this.buildCaches(scrollStartEl);\n this.pointerScreenX = null;\n this.pointerScreenY = null;\n this.everMovedUp = false;\n this.everMovedDown = false;\n this.everMovedLeft = false;\n this.everMovedRight = false;\n this.handleMove(pageX, pageY);\n }\n };\n AutoScroller.prototype.handleMove = function (pageX, pageY) {\n if (this.isEnabled) {\n var pointerScreenX = pageX - window.pageXOffset;\n var pointerScreenY = pageY - window.pageYOffset;\n var yDelta = this.pointerScreenY === null ? 0 : pointerScreenY - this.pointerScreenY;\n var xDelta = this.pointerScreenX === null ? 0 : pointerScreenX - this.pointerScreenX;\n if (yDelta < 0) {\n this.everMovedUp = true;\n }\n else if (yDelta > 0) {\n this.everMovedDown = true;\n }\n if (xDelta < 0) {\n this.everMovedLeft = true;\n }\n else if (xDelta > 0) {\n this.everMovedRight = true;\n }\n this.pointerScreenX = pointerScreenX;\n this.pointerScreenY = pointerScreenY;\n if (!this.isAnimating) {\n this.isAnimating = true;\n this.requestAnimation(getTime());\n }\n }\n };\n AutoScroller.prototype.stop = function () {\n if (this.isEnabled) {\n this.isAnimating = false; // will stop animation\n for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) {\n var scrollCache = _a[_i];\n scrollCache.destroy();\n }\n this.scrollCaches = null;\n }\n };\n AutoScroller.prototype.requestAnimation = function (now) {\n this.msSinceRequest = now;\n requestAnimationFrame(this.animate);\n };\n AutoScroller.prototype.handleSide = function (edge, seconds) {\n var scrollCache = edge.scrollCache;\n var edgeThreshold = this.edgeThreshold;\n var invDistance = edgeThreshold - edge.distance;\n var velocity = // the closer to the edge, the faster we scroll\n ((invDistance * invDistance) / (edgeThreshold * edgeThreshold)) * // quadratic\n this.maxVelocity * seconds;\n var sign = 1;\n switch (edge.name) {\n case 'left':\n sign = -1;\n // falls through\n case 'right':\n scrollCache.setScrollLeft(scrollCache.getScrollLeft() + velocity * sign);\n break;\n case 'top':\n sign = -1;\n // falls through\n case 'bottom':\n scrollCache.setScrollTop(scrollCache.getScrollTop() + velocity * sign);\n break;\n }\n };\n // left/top are relative to document topleft\n AutoScroller.prototype.computeBestEdge = function (left, top) {\n var edgeThreshold = this.edgeThreshold;\n var bestSide = null;\n for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) {\n var scrollCache = _a[_i];\n var rect = scrollCache.clientRect;\n var leftDist = left - rect.left;\n var rightDist = rect.right - left;\n var topDist = top - rect.top;\n var bottomDist = rect.bottom - top;\n // completely within the rect?\n if (leftDist >= 0 && rightDist >= 0 && topDist >= 0 && bottomDist >= 0) {\n if (topDist <= edgeThreshold && this.everMovedUp && scrollCache.canScrollUp() &&\n (!bestSide || bestSide.distance > topDist)) {\n bestSide = { scrollCache: scrollCache, name: 'top', distance: topDist };\n }\n if (bottomDist <= edgeThreshold && this.everMovedDown && scrollCache.canScrollDown() &&\n (!bestSide || bestSide.distance > bottomDist)) {\n bestSide = { scrollCache: scrollCache, name: 'bottom', distance: bottomDist };\n }\n if (leftDist <= edgeThreshold && this.everMovedLeft && scrollCache.canScrollLeft() &&\n (!bestSide || bestSide.distance > leftDist)) {\n bestSide = { scrollCache: scrollCache, name: 'left', distance: leftDist };\n }\n if (rightDist <= edgeThreshold && this.everMovedRight && scrollCache.canScrollRight() &&\n (!bestSide || bestSide.distance > rightDist)) {\n bestSide = { scrollCache: scrollCache, name: 'right', distance: rightDist };\n }\n }\n }\n return bestSide;\n };\n AutoScroller.prototype.buildCaches = function (scrollStartEl) {\n return this.queryScrollEls(scrollStartEl).map(function (el) {\n if (el === window) {\n return new WindowScrollGeomCache(false); // false = don't listen to user-generated scrolls\n }\n return new ElementScrollGeomCache(el, false); // false = don't listen to user-generated scrolls\n });\n };\n AutoScroller.prototype.queryScrollEls = function (scrollStartEl) {\n var els = [];\n for (var _i = 0, _a = this.scrollQuery; _i < _a.length; _i++) {\n var query = _a[_i];\n if (typeof query === 'object') {\n els.push(query);\n }\n else {\n els.push.apply(els, Array.prototype.slice.call(getElRoot(scrollStartEl).querySelectorAll(query)));\n }\n }\n return els;\n };\n return AutoScroller;\n}());\n\n/*\nMonitors dragging on an element. Has a number of high-level features:\n- minimum distance required before dragging\n- minimum wait time (\"delay\") before dragging\n- a mirror element that follows the pointer\n*/\nvar FeaturefulElementDragging = /** @class */ (function (_super) {\n __extends(FeaturefulElementDragging, _super);\n function FeaturefulElementDragging(containerEl, selector) {\n var _this = _super.call(this, containerEl) || this;\n _this.containerEl = containerEl;\n // options that can be directly set by caller\n // the caller can also set the PointerDragging's options as well\n _this.delay = null;\n _this.minDistance = 0;\n _this.touchScrollAllowed = true; // prevents drag from starting and blocks scrolling during drag\n _this.mirrorNeedsRevert = false;\n _this.isInteracting = false; // is the user validly moving the pointer? lasts until pointerup\n _this.isDragging = false; // is it INTENTFULLY dragging? lasts until after revert animation\n _this.isDelayEnded = false;\n _this.isDistanceSurpassed = false;\n _this.delayTimeoutId = null;\n _this.onPointerDown = function (ev) {\n if (!_this.isDragging) { // so new drag doesn't happen while revert animation is going\n _this.isInteracting = true;\n _this.isDelayEnded = false;\n _this.isDistanceSurpassed = false;\n preventSelection(document.body);\n preventContextMenu(document.body);\n // prevent links from being visited if there's an eventual drag.\n // also prevents selection in older browsers (maybe?).\n // not necessary for touch, besides, browser would complain about passiveness.\n if (!ev.isTouch) {\n ev.origEvent.preventDefault();\n }\n _this.emitter.trigger('pointerdown', ev);\n if (_this.isInteracting && // not destroyed via pointerdown handler\n !_this.pointer.shouldIgnoreMove) {\n // actions related to initiating dragstart+dragmove+dragend...\n _this.mirror.setIsVisible(false); // reset. caller must set-visible\n _this.mirror.start(ev.subjectEl, ev.pageX, ev.pageY); // must happen on first pointer down\n _this.startDelay(ev);\n if (!_this.minDistance) {\n _this.handleDistanceSurpassed(ev);\n }\n }\n }\n };\n _this.onPointerMove = function (ev) {\n if (_this.isInteracting) {\n _this.emitter.trigger('pointermove', ev);\n if (!_this.isDistanceSurpassed) {\n var minDistance = _this.minDistance;\n var distanceSq = void 0; // current distance from the origin, squared\n var deltaX = ev.deltaX, deltaY = ev.deltaY;\n distanceSq = deltaX * deltaX + deltaY * deltaY;\n if (distanceSq >= minDistance * minDistance) { // use pythagorean theorem\n _this.handleDistanceSurpassed(ev);\n }\n }\n if (_this.isDragging) {\n // a real pointer move? (not one simulated by scrolling)\n if (ev.origEvent.type !== 'scroll') {\n _this.mirror.handleMove(ev.pageX, ev.pageY);\n _this.autoScroller.handleMove(ev.pageX, ev.pageY);\n }\n _this.emitter.trigger('dragmove', ev);\n }\n }\n };\n _this.onPointerUp = function (ev) {\n if (_this.isInteracting) {\n _this.isInteracting = false;\n allowSelection(document.body);\n allowContextMenu(document.body);\n _this.emitter.trigger('pointerup', ev); // can potentially set mirrorNeedsRevert\n if (_this.isDragging) {\n _this.autoScroller.stop();\n _this.tryStopDrag(ev); // which will stop the mirror\n }\n if (_this.delayTimeoutId) {\n clearTimeout(_this.delayTimeoutId);\n _this.delayTimeoutId = null;\n }\n }\n };\n var pointer = _this.pointer = new PointerDragging(containerEl);\n pointer.emitter.on('pointerdown', _this.onPointerDown);\n pointer.emitter.on('pointermove', _this.onPointerMove);\n pointer.emitter.on('pointerup', _this.onPointerUp);\n if (selector) {\n pointer.selector = selector;\n }\n _this.mirror = new ElementMirror();\n _this.autoScroller = new AutoScroller();\n return _this;\n }\n FeaturefulElementDragging.prototype.destroy = function () {\n this.pointer.destroy();\n // HACK: simulate a pointer-up to end the current drag\n // TODO: fire 'dragend' directly and stop interaction. discourage use of pointerup event (b/c might not fire)\n this.onPointerUp({});\n };\n FeaturefulElementDragging.prototype.startDelay = function (ev) {\n var _this = this;\n if (typeof this.delay === 'number') {\n this.delayTimeoutId = setTimeout(function () {\n _this.delayTimeoutId = null;\n _this.handleDelayEnd(ev);\n }, this.delay); // not assignable to number!\n }\n else {\n this.handleDelayEnd(ev);\n }\n };\n FeaturefulElementDragging.prototype.handleDelayEnd = function (ev) {\n this.isDelayEnded = true;\n this.tryStartDrag(ev);\n };\n FeaturefulElementDragging.prototype.handleDistanceSurpassed = function (ev) {\n this.isDistanceSurpassed = true;\n this.tryStartDrag(ev);\n };\n FeaturefulElementDragging.prototype.tryStartDrag = function (ev) {\n if (this.isDelayEnded && this.isDistanceSurpassed) {\n if (!this.pointer.wasTouchScroll || this.touchScrollAllowed) {\n this.isDragging = true;\n this.mirrorNeedsRevert = false;\n this.autoScroller.start(ev.pageX, ev.pageY, this.containerEl);\n this.emitter.trigger('dragstart', ev);\n if (this.touchScrollAllowed === false) {\n this.pointer.cancelTouchScroll();\n }\n }\n }\n };\n FeaturefulElementDragging.prototype.tryStopDrag = function (ev) {\n // .stop() is ALWAYS asynchronous, which we NEED because we want all pointerup events\n // that come from the document to fire beforehand. much more convenient this way.\n this.mirror.stop(this.mirrorNeedsRevert, this.stopDrag.bind(this, ev));\n };\n FeaturefulElementDragging.prototype.stopDrag = function (ev) {\n this.isDragging = false;\n this.emitter.trigger('dragend', ev);\n };\n // fill in the implementations...\n FeaturefulElementDragging.prototype.setIgnoreMove = function (bool) {\n this.pointer.shouldIgnoreMove = bool;\n };\n FeaturefulElementDragging.prototype.setMirrorIsVisible = function (bool) {\n this.mirror.setIsVisible(bool);\n };\n FeaturefulElementDragging.prototype.setMirrorNeedsRevert = function (bool) {\n this.mirrorNeedsRevert = bool;\n };\n FeaturefulElementDragging.prototype.setAutoScrollEnabled = function (bool) {\n this.autoScroller.isEnabled = bool;\n };\n return FeaturefulElementDragging;\n}(ElementDragging));\n\n/*\nWhen this class is instantiated, it records the offset of an element (relative to the document topleft),\nand continues to monitor scrolling, updating the cached coordinates if it needs to.\nDoes not access the DOM after instantiation, so highly performant.\n\nAlso keeps track of all scrolling/overflow:hidden containers that are parents of the given element\nand an determine if a given point is inside the combined clipping rectangle.\n*/\nvar OffsetTracker = /** @class */ (function () {\n function OffsetTracker(el) {\n this.origRect = computeRect(el);\n // will work fine for divs that have overflow:hidden\n this.scrollCaches = getClippingParents(el).map(function (scrollEl) { return new ElementScrollGeomCache(scrollEl, true); });\n }\n OffsetTracker.prototype.destroy = function () {\n for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) {\n var scrollCache = _a[_i];\n scrollCache.destroy();\n }\n };\n OffsetTracker.prototype.computeLeft = function () {\n var left = this.origRect.left;\n for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) {\n var scrollCache = _a[_i];\n left += scrollCache.origScrollLeft - scrollCache.getScrollLeft();\n }\n return left;\n };\n OffsetTracker.prototype.computeTop = function () {\n var top = this.origRect.top;\n for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) {\n var scrollCache = _a[_i];\n top += scrollCache.origScrollTop - scrollCache.getScrollTop();\n }\n return top;\n };\n OffsetTracker.prototype.isWithinClipping = function (pageX, pageY) {\n var point = { left: pageX, top: pageY };\n for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) {\n var scrollCache = _a[_i];\n if (!isIgnoredClipping(scrollCache.getEventTarget()) &&\n !pointInsideRect(point, scrollCache.clientRect)) {\n return false;\n }\n }\n return true;\n };\n return OffsetTracker;\n}());\n// certain clipping containers should never constrain interactions, like and \n// https://github.com/fullcalendar/fullcalendar/issues/3615\nfunction isIgnoredClipping(node) {\n var tagName = node.tagName;\n return tagName === 'HTML' || tagName === 'BODY';\n}\n\n/*\nTracks movement over multiple droppable areas (aka \"hits\")\nthat exist in one or more DateComponents.\nRelies on an existing draggable.\n\nemits:\n- pointerdown\n- dragstart\n- hitchange - fires initially, even if not over a hit\n- pointerup\n- (hitchange - again, to null, if ended over a hit)\n- dragend\n*/\nvar HitDragging = /** @class */ (function () {\n function HitDragging(dragging, droppableStore) {\n var _this = this;\n // options that can be set by caller\n this.useSubjectCenter = false;\n this.requireInitial = true; // if doesn't start out on a hit, won't emit any events\n this.initialHit = null;\n this.movingHit = null;\n this.finalHit = null; // won't ever be populated if shouldIgnoreMove\n this.handlePointerDown = function (ev) {\n var dragging = _this.dragging;\n _this.initialHit = null;\n _this.movingHit = null;\n _this.finalHit = null;\n _this.prepareHits();\n _this.processFirstCoord(ev);\n if (_this.initialHit || !_this.requireInitial) {\n dragging.setIgnoreMove(false);\n // TODO: fire this before computing processFirstCoord, so listeners can cancel. this gets fired by almost every handler :(\n _this.emitter.trigger('pointerdown', ev);\n }\n else {\n dragging.setIgnoreMove(true);\n }\n };\n this.handleDragStart = function (ev) {\n _this.emitter.trigger('dragstart', ev);\n _this.handleMove(ev, true); // force = fire even if initially null\n };\n this.handleDragMove = function (ev) {\n _this.emitter.trigger('dragmove', ev);\n _this.handleMove(ev);\n };\n this.handlePointerUp = function (ev) {\n _this.releaseHits();\n _this.emitter.trigger('pointerup', ev);\n };\n this.handleDragEnd = function (ev) {\n if (_this.movingHit) {\n _this.emitter.trigger('hitupdate', null, true, ev);\n }\n _this.finalHit = _this.movingHit;\n _this.movingHit = null;\n _this.emitter.trigger('dragend', ev);\n };\n this.droppableStore = droppableStore;\n dragging.emitter.on('pointerdown', this.handlePointerDown);\n dragging.emitter.on('dragstart', this.handleDragStart);\n dragging.emitter.on('dragmove', this.handleDragMove);\n dragging.emitter.on('pointerup', this.handlePointerUp);\n dragging.emitter.on('dragend', this.handleDragEnd);\n this.dragging = dragging;\n this.emitter = new Emitter();\n }\n // sets initialHit\n // sets coordAdjust\n HitDragging.prototype.processFirstCoord = function (ev) {\n var origPoint = { left: ev.pageX, top: ev.pageY };\n var adjustedPoint = origPoint;\n var subjectEl = ev.subjectEl;\n var subjectRect;\n if (subjectEl instanceof HTMLElement) { // i.e. not a Document/ShadowRoot\n subjectRect = computeRect(subjectEl);\n adjustedPoint = constrainPoint(adjustedPoint, subjectRect);\n }\n var initialHit = this.initialHit = this.queryHitForOffset(adjustedPoint.left, adjustedPoint.top);\n if (initialHit) {\n if (this.useSubjectCenter && subjectRect) {\n var slicedSubjectRect = intersectRects(subjectRect, initialHit.rect);\n if (slicedSubjectRect) {\n adjustedPoint = getRectCenter(slicedSubjectRect);\n }\n }\n this.coordAdjust = diffPoints(adjustedPoint, origPoint);\n }\n else {\n this.coordAdjust = { left: 0, top: 0 };\n }\n };\n HitDragging.prototype.handleMove = function (ev, forceHandle) {\n var hit = this.queryHitForOffset(ev.pageX + this.coordAdjust.left, ev.pageY + this.coordAdjust.top);\n if (forceHandle || !isHitsEqual(this.movingHit, hit)) {\n this.movingHit = hit;\n this.emitter.trigger('hitupdate', hit, false, ev);\n }\n };\n HitDragging.prototype.prepareHits = function () {\n this.offsetTrackers = mapHash(this.droppableStore, function (interactionSettings) {\n interactionSettings.component.prepareHits();\n return new OffsetTracker(interactionSettings.el);\n });\n };\n HitDragging.prototype.releaseHits = function () {\n var offsetTrackers = this.offsetTrackers;\n for (var id in offsetTrackers) {\n offsetTrackers[id].destroy();\n }\n this.offsetTrackers = {};\n };\n HitDragging.prototype.queryHitForOffset = function (offsetLeft, offsetTop) {\n var _a = this, droppableStore = _a.droppableStore, offsetTrackers = _a.offsetTrackers;\n var bestHit = null;\n for (var id in droppableStore) {\n var component = droppableStore[id].component;\n var offsetTracker = offsetTrackers[id];\n if (offsetTracker && // wasn't destroyed mid-drag\n offsetTracker.isWithinClipping(offsetLeft, offsetTop)) {\n var originLeft = offsetTracker.computeLeft();\n var originTop = offsetTracker.computeTop();\n var positionLeft = offsetLeft - originLeft;\n var positionTop = offsetTop - originTop;\n var origRect = offsetTracker.origRect;\n var width = origRect.right - origRect.left;\n var height = origRect.bottom - origRect.top;\n if (\n // must be within the element's bounds\n positionLeft >= 0 && positionLeft < width &&\n positionTop >= 0 && positionTop < height) {\n var hit = component.queryHit(positionLeft, positionTop, width, height);\n if (hit && (\n // make sure the hit is within activeRange, meaning it's not a dead cell\n rangeContainsRange(hit.dateProfile.activeRange, hit.dateSpan.range)) &&\n (!bestHit || hit.layer > bestHit.layer)) {\n hit.componentId = id;\n hit.context = component.context;\n // TODO: better way to re-orient rectangle\n hit.rect.left += originLeft;\n hit.rect.right += originLeft;\n hit.rect.top += originTop;\n hit.rect.bottom += originTop;\n bestHit = hit;\n }\n }\n }\n }\n return bestHit;\n };\n return HitDragging;\n}());\nfunction isHitsEqual(hit0, hit1) {\n if (!hit0 && !hit1) {\n return true;\n }\n if (Boolean(hit0) !== Boolean(hit1)) {\n return false;\n }\n return isDateSpansEqual(hit0.dateSpan, hit1.dateSpan);\n}\n\nfunction buildDatePointApiWithContext(dateSpan, context) {\n var props = {};\n for (var _i = 0, _a = context.pluginHooks.datePointTransforms; _i < _a.length; _i++) {\n var transform = _a[_i];\n __assign(props, transform(dateSpan, context));\n }\n __assign(props, buildDatePointApi(dateSpan, context.dateEnv));\n return props;\n}\nfunction buildDatePointApi(span, dateEnv) {\n return {\n date: dateEnv.toDate(span.range.start),\n dateStr: dateEnv.formatIso(span.range.start, { omitTime: span.allDay }),\n allDay: span.allDay,\n };\n}\n\n/*\nMonitors when the user clicks on a specific date/time of a component.\nA pointerdown+pointerup on the same \"hit\" constitutes a click.\n*/\nvar DateClicking = /** @class */ (function (_super) {\n __extends(DateClicking, _super);\n function DateClicking(settings) {\n var _this = _super.call(this, settings) || this;\n _this.handlePointerDown = function (pev) {\n var dragging = _this.dragging;\n var downEl = pev.origEvent.target;\n // do this in pointerdown (not dragend) because DOM might be mutated by the time dragend is fired\n dragging.setIgnoreMove(!_this.component.isValidDateDownEl(downEl));\n };\n // won't even fire if moving was ignored\n _this.handleDragEnd = function (ev) {\n var component = _this.component;\n var pointer = _this.dragging.pointer;\n if (!pointer.wasTouchScroll) {\n var _a = _this.hitDragging, initialHit = _a.initialHit, finalHit = _a.finalHit;\n if (initialHit && finalHit && isHitsEqual(initialHit, finalHit)) {\n var context = component.context;\n var arg = __assign(__assign({}, buildDatePointApiWithContext(initialHit.dateSpan, context)), { dayEl: initialHit.dayEl, jsEvent: ev.origEvent, view: context.viewApi || context.calendarApi.view });\n context.emitter.trigger('dateClick', arg);\n }\n }\n };\n // we DO want to watch pointer moves because otherwise finalHit won't get populated\n _this.dragging = new FeaturefulElementDragging(settings.el);\n _this.dragging.autoScroller.isEnabled = false;\n var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, interactionSettingsToStore(settings));\n hitDragging.emitter.on('pointerdown', _this.handlePointerDown);\n hitDragging.emitter.on('dragend', _this.handleDragEnd);\n return _this;\n }\n DateClicking.prototype.destroy = function () {\n this.dragging.destroy();\n };\n return DateClicking;\n}(Interaction));\n\n/*\nTracks when the user selects a portion of time of a component,\nconstituted by a drag over date cells, with a possible delay at the beginning of the drag.\n*/\nvar DateSelecting = /** @class */ (function (_super) {\n __extends(DateSelecting, _super);\n function DateSelecting(settings) {\n var _this = _super.call(this, settings) || this;\n _this.dragSelection = null;\n _this.handlePointerDown = function (ev) {\n var _a = _this, component = _a.component, dragging = _a.dragging;\n var options = component.context.options;\n var canSelect = options.selectable &&\n component.isValidDateDownEl(ev.origEvent.target);\n // don't bother to watch expensive moves if component won't do selection\n dragging.setIgnoreMove(!canSelect);\n // if touch, require user to hold down\n dragging.delay = ev.isTouch ? getComponentTouchDelay$1(component) : null;\n };\n _this.handleDragStart = function (ev) {\n _this.component.context.calendarApi.unselect(ev); // unselect previous selections\n };\n _this.handleHitUpdate = function (hit, isFinal) {\n var context = _this.component.context;\n var dragSelection = null;\n var isInvalid = false;\n if (hit) {\n var initialHit = _this.hitDragging.initialHit;\n var disallowed = hit.componentId === initialHit.componentId\n && _this.isHitComboAllowed\n && !_this.isHitComboAllowed(initialHit, hit);\n if (!disallowed) {\n dragSelection = joinHitsIntoSelection(initialHit, hit, context.pluginHooks.dateSelectionTransformers);\n }\n if (!dragSelection || !isDateSelectionValid(dragSelection, hit.dateProfile, context)) {\n isInvalid = true;\n dragSelection = null;\n }\n }\n if (dragSelection) {\n context.dispatch({ type: 'SELECT_DATES', selection: dragSelection });\n }\n else if (!isFinal) { // only unselect if moved away while dragging\n context.dispatch({ type: 'UNSELECT_DATES' });\n }\n if (!isInvalid) {\n enableCursor();\n }\n else {\n disableCursor();\n }\n if (!isFinal) {\n _this.dragSelection = dragSelection; // only clear if moved away from all hits while dragging\n }\n };\n _this.handlePointerUp = function (pev) {\n if (_this.dragSelection) {\n // selection is already rendered, so just need to report selection\n triggerDateSelect(_this.dragSelection, pev, _this.component.context);\n _this.dragSelection = null;\n }\n };\n var component = settings.component;\n var options = component.context.options;\n var dragging = _this.dragging = new FeaturefulElementDragging(settings.el);\n dragging.touchScrollAllowed = false;\n dragging.minDistance = options.selectMinDistance || 0;\n dragging.autoScroller.isEnabled = options.dragScroll;\n var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, interactionSettingsToStore(settings));\n hitDragging.emitter.on('pointerdown', _this.handlePointerDown);\n hitDragging.emitter.on('dragstart', _this.handleDragStart);\n hitDragging.emitter.on('hitupdate', _this.handleHitUpdate);\n hitDragging.emitter.on('pointerup', _this.handlePointerUp);\n return _this;\n }\n DateSelecting.prototype.destroy = function () {\n this.dragging.destroy();\n };\n return DateSelecting;\n}(Interaction));\nfunction getComponentTouchDelay$1(component) {\n var options = component.context.options;\n var delay = options.selectLongPressDelay;\n if (delay == null) {\n delay = options.longPressDelay;\n }\n return delay;\n}\nfunction joinHitsIntoSelection(hit0, hit1, dateSelectionTransformers) {\n var dateSpan0 = hit0.dateSpan;\n var dateSpan1 = hit1.dateSpan;\n var ms = [\n dateSpan0.range.start,\n dateSpan0.range.end,\n dateSpan1.range.start,\n dateSpan1.range.end,\n ];\n ms.sort(compareNumbers);\n var props = {};\n for (var _i = 0, dateSelectionTransformers_1 = dateSelectionTransformers; _i < dateSelectionTransformers_1.length; _i++) {\n var transformer = dateSelectionTransformers_1[_i];\n var res = transformer(hit0, hit1);\n if (res === false) {\n return null;\n }\n if (res) {\n __assign(props, res);\n }\n }\n props.range = { start: ms[0], end: ms[3] };\n props.allDay = dateSpan0.allDay;\n return props;\n}\n\nvar EventDragging = /** @class */ (function (_super) {\n __extends(EventDragging, _super);\n function EventDragging(settings) {\n var _this = _super.call(this, settings) || this;\n // internal state\n _this.subjectEl = null;\n _this.subjectSeg = null; // the seg being selected/dragged\n _this.isDragging = false;\n _this.eventRange = null;\n _this.relevantEvents = null; // the events being dragged\n _this.receivingContext = null;\n _this.validMutation = null;\n _this.mutatedRelevantEvents = null;\n _this.handlePointerDown = function (ev) {\n var origTarget = ev.origEvent.target;\n var _a = _this, component = _a.component, dragging = _a.dragging;\n var mirror = dragging.mirror;\n var options = component.context.options;\n var initialContext = component.context;\n _this.subjectEl = ev.subjectEl;\n var subjectSeg = _this.subjectSeg = getElSeg(ev.subjectEl);\n var eventRange = _this.eventRange = subjectSeg.eventRange;\n var eventInstanceId = eventRange.instance.instanceId;\n _this.relevantEvents = getRelevantEvents(initialContext.getCurrentData().eventStore, eventInstanceId);\n dragging.minDistance = ev.isTouch ? 0 : options.eventDragMinDistance;\n dragging.delay =\n // only do a touch delay if touch and this event hasn't been selected yet\n (ev.isTouch && eventInstanceId !== component.props.eventSelection) ?\n getComponentTouchDelay(component) :\n null;\n if (options.fixedMirrorParent) {\n mirror.parentNode = options.fixedMirrorParent;\n }\n else {\n mirror.parentNode = elementClosest(origTarget, '.fc');\n }\n mirror.revertDuration = options.dragRevertDuration;\n var isValid = component.isValidSegDownEl(origTarget) &&\n !elementClosest(origTarget, '.fc-event-resizer'); // NOT on a resizer\n dragging.setIgnoreMove(!isValid);\n // disable dragging for elements that are resizable (ie, selectable)\n // but are not draggable\n _this.isDragging = isValid &&\n ev.subjectEl.classList.contains('fc-event-draggable');\n };\n _this.handleDragStart = function (ev) {\n var initialContext = _this.component.context;\n var eventRange = _this.eventRange;\n var eventInstanceId = eventRange.instance.instanceId;\n if (ev.isTouch) {\n // need to select a different event?\n if (eventInstanceId !== _this.component.props.eventSelection) {\n initialContext.dispatch({ type: 'SELECT_EVENT', eventInstanceId: eventInstanceId });\n }\n }\n else {\n // if now using mouse, but was previous touch interaction, clear selected event\n initialContext.dispatch({ type: 'UNSELECT_EVENT' });\n }\n if (_this.isDragging) {\n initialContext.calendarApi.unselect(ev); // unselect *date* selection\n initialContext.emitter.trigger('eventDragStart', {\n el: _this.subjectEl,\n event: new EventApi(initialContext, eventRange.def, eventRange.instance),\n jsEvent: ev.origEvent,\n view: initialContext.viewApi,\n });\n }\n };\n _this.handleHitUpdate = function (hit, isFinal) {\n if (!_this.isDragging) {\n return;\n }\n var relevantEvents = _this.relevantEvents;\n var initialHit = _this.hitDragging.initialHit;\n var initialContext = _this.component.context;\n // states based on new hit\n var receivingContext = null;\n var mutation = null;\n var mutatedRelevantEvents = null;\n var isInvalid = false;\n var interaction = {\n affectedEvents: relevantEvents,\n mutatedEvents: createEmptyEventStore(),\n isEvent: true,\n };\n if (hit) {\n receivingContext = hit.context;\n var receivingOptions = receivingContext.options;\n if (initialContext === receivingContext ||\n (receivingOptions.editable && receivingOptions.droppable)) {\n mutation = computeEventMutation(initialHit, hit, receivingContext.getCurrentData().pluginHooks.eventDragMutationMassagers);\n if (mutation) {\n mutatedRelevantEvents = applyMutationToEventStore(relevantEvents, receivingContext.getCurrentData().eventUiBases, mutation, receivingContext);\n interaction.mutatedEvents = mutatedRelevantEvents;\n if (!isInteractionValid(interaction, hit.dateProfile, receivingContext)) {\n isInvalid = true;\n mutation = null;\n mutatedRelevantEvents = null;\n interaction.mutatedEvents = createEmptyEventStore();\n }\n }\n }\n else {\n receivingContext = null;\n }\n }\n _this.displayDrag(receivingContext, interaction);\n if (!isInvalid) {\n enableCursor();\n }\n else {\n disableCursor();\n }\n if (!isFinal) {\n if (initialContext === receivingContext && // TODO: write test for this\n isHitsEqual(initialHit, hit)) {\n mutation = null;\n }\n _this.dragging.setMirrorNeedsRevert(!mutation);\n // render the mirror if no already-rendered mirror\n // TODO: wish we could somehow wait for dispatch to guarantee render\n _this.dragging.setMirrorIsVisible(!hit || !getElRoot(_this.subjectEl).querySelector('.fc-event-mirror'));\n // assign states based on new hit\n _this.receivingContext = receivingContext;\n _this.validMutation = mutation;\n _this.mutatedRelevantEvents = mutatedRelevantEvents;\n }\n };\n _this.handlePointerUp = function () {\n if (!_this.isDragging) {\n _this.cleanup(); // because handleDragEnd won't fire\n }\n };\n _this.handleDragEnd = function (ev) {\n if (_this.isDragging) {\n var initialContext_1 = _this.component.context;\n var initialView = initialContext_1.viewApi;\n var _a = _this, receivingContext_1 = _a.receivingContext, validMutation = _a.validMutation;\n var eventDef = _this.eventRange.def;\n var eventInstance = _this.eventRange.instance;\n var eventApi = new EventApi(initialContext_1, eventDef, eventInstance);\n var relevantEvents_1 = _this.relevantEvents;\n var mutatedRelevantEvents_1 = _this.mutatedRelevantEvents;\n var finalHit = _this.hitDragging.finalHit;\n _this.clearDrag(); // must happen after revert animation\n initialContext_1.emitter.trigger('eventDragStop', {\n el: _this.subjectEl,\n event: eventApi,\n jsEvent: ev.origEvent,\n view: initialView,\n });\n if (validMutation) {\n // dropped within same calendar\n if (receivingContext_1 === initialContext_1) {\n var updatedEventApi = new EventApi(initialContext_1, mutatedRelevantEvents_1.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents_1.instances[eventInstance.instanceId] : null);\n initialContext_1.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: mutatedRelevantEvents_1,\n });\n var eventChangeArg = {\n oldEvent: eventApi,\n event: updatedEventApi,\n relatedEvents: buildEventApis(mutatedRelevantEvents_1, initialContext_1, eventInstance),\n revert: function () {\n initialContext_1.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: relevantEvents_1, // the pre-change data\n });\n },\n };\n var transformed = {};\n for (var _i = 0, _b = initialContext_1.getCurrentData().pluginHooks.eventDropTransformers; _i < _b.length; _i++) {\n var transformer = _b[_i];\n __assign(transformed, transformer(validMutation, initialContext_1));\n }\n initialContext_1.emitter.trigger('eventDrop', __assign(__assign(__assign({}, eventChangeArg), transformed), { el: ev.subjectEl, delta: validMutation.datesDelta, jsEvent: ev.origEvent, view: initialView }));\n initialContext_1.emitter.trigger('eventChange', eventChangeArg);\n // dropped in different calendar\n }\n else if (receivingContext_1) {\n var eventRemoveArg = {\n event: eventApi,\n relatedEvents: buildEventApis(relevantEvents_1, initialContext_1, eventInstance),\n revert: function () {\n initialContext_1.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: relevantEvents_1,\n });\n },\n };\n initialContext_1.emitter.trigger('eventLeave', __assign(__assign({}, eventRemoveArg), { draggedEl: ev.subjectEl, view: initialView }));\n initialContext_1.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: relevantEvents_1,\n });\n initialContext_1.emitter.trigger('eventRemove', eventRemoveArg);\n var addedEventDef = mutatedRelevantEvents_1.defs[eventDef.defId];\n var addedEventInstance = mutatedRelevantEvents_1.instances[eventInstance.instanceId];\n var addedEventApi = new EventApi(receivingContext_1, addedEventDef, addedEventInstance);\n receivingContext_1.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: mutatedRelevantEvents_1,\n });\n var eventAddArg = {\n event: addedEventApi,\n relatedEvents: buildEventApis(mutatedRelevantEvents_1, receivingContext_1, addedEventInstance),\n revert: function () {\n receivingContext_1.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: mutatedRelevantEvents_1,\n });\n },\n };\n receivingContext_1.emitter.trigger('eventAdd', eventAddArg);\n if (ev.isTouch) {\n receivingContext_1.dispatch({\n type: 'SELECT_EVENT',\n eventInstanceId: eventInstance.instanceId,\n });\n }\n receivingContext_1.emitter.trigger('drop', __assign(__assign({}, buildDatePointApiWithContext(finalHit.dateSpan, receivingContext_1)), { draggedEl: ev.subjectEl, jsEvent: ev.origEvent, view: finalHit.context.viewApi }));\n receivingContext_1.emitter.trigger('eventReceive', __assign(__assign({}, eventAddArg), { draggedEl: ev.subjectEl, view: finalHit.context.viewApi }));\n }\n }\n else {\n initialContext_1.emitter.trigger('_noEventDrop');\n }\n }\n _this.cleanup();\n };\n var component = _this.component;\n var options = component.context.options;\n var dragging = _this.dragging = new FeaturefulElementDragging(settings.el);\n dragging.pointer.selector = EventDragging.SELECTOR;\n dragging.touchScrollAllowed = false;\n dragging.autoScroller.isEnabled = options.dragScroll;\n var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, interactionSettingsStore);\n hitDragging.useSubjectCenter = settings.useEventCenter;\n hitDragging.emitter.on('pointerdown', _this.handlePointerDown);\n hitDragging.emitter.on('dragstart', _this.handleDragStart);\n hitDragging.emitter.on('hitupdate', _this.handleHitUpdate);\n hitDragging.emitter.on('pointerup', _this.handlePointerUp);\n hitDragging.emitter.on('dragend', _this.handleDragEnd);\n return _this;\n }\n EventDragging.prototype.destroy = function () {\n this.dragging.destroy();\n };\n // render a drag state on the next receivingCalendar\n EventDragging.prototype.displayDrag = function (nextContext, state) {\n var initialContext = this.component.context;\n var prevContext = this.receivingContext;\n // does the previous calendar need to be cleared?\n if (prevContext && prevContext !== nextContext) {\n // does the initial calendar need to be cleared?\n // if so, don't clear all the way. we still need to to hide the affectedEvents\n if (prevContext === initialContext) {\n prevContext.dispatch({\n type: 'SET_EVENT_DRAG',\n state: {\n affectedEvents: state.affectedEvents,\n mutatedEvents: createEmptyEventStore(),\n isEvent: true,\n },\n });\n // completely clear the old calendar if it wasn't the initial\n }\n else {\n prevContext.dispatch({ type: 'UNSET_EVENT_DRAG' });\n }\n }\n if (nextContext) {\n nextContext.dispatch({ type: 'SET_EVENT_DRAG', state: state });\n }\n };\n EventDragging.prototype.clearDrag = function () {\n var initialCalendar = this.component.context;\n var receivingContext = this.receivingContext;\n if (receivingContext) {\n receivingContext.dispatch({ type: 'UNSET_EVENT_DRAG' });\n }\n // the initial calendar might have an dummy drag state from displayDrag\n if (initialCalendar !== receivingContext) {\n initialCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' });\n }\n };\n EventDragging.prototype.cleanup = function () {\n this.subjectSeg = null;\n this.isDragging = false;\n this.eventRange = null;\n this.relevantEvents = null;\n this.receivingContext = null;\n this.validMutation = null;\n this.mutatedRelevantEvents = null;\n };\n // TODO: test this in IE11\n // QUESTION: why do we need it on the resizable???\n EventDragging.SELECTOR = '.fc-event-draggable, .fc-event-resizable';\n return EventDragging;\n}(Interaction));\nfunction computeEventMutation(hit0, hit1, massagers) {\n var dateSpan0 = hit0.dateSpan;\n var dateSpan1 = hit1.dateSpan;\n var date0 = dateSpan0.range.start;\n var date1 = dateSpan1.range.start;\n var standardProps = {};\n if (dateSpan0.allDay !== dateSpan1.allDay) {\n standardProps.allDay = dateSpan1.allDay;\n standardProps.hasEnd = hit1.context.options.allDayMaintainDuration;\n if (dateSpan1.allDay) {\n // means date1 is already start-of-day,\n // but date0 needs to be converted\n date0 = startOfDay(date0);\n }\n }\n var delta = diffDates(date0, date1, hit0.context.dateEnv, hit0.componentId === hit1.componentId ?\n hit0.largeUnit :\n null);\n if (delta.milliseconds) { // has hours/minutes/seconds\n standardProps.allDay = false;\n }\n var mutation = {\n datesDelta: delta,\n standardProps: standardProps,\n };\n for (var _i = 0, massagers_1 = massagers; _i < massagers_1.length; _i++) {\n var massager = massagers_1[_i];\n massager(mutation, hit0, hit1);\n }\n return mutation;\n}\nfunction getComponentTouchDelay(component) {\n var options = component.context.options;\n var delay = options.eventLongPressDelay;\n if (delay == null) {\n delay = options.longPressDelay;\n }\n return delay;\n}\n\nvar EventResizing = /** @class */ (function (_super) {\n __extends(EventResizing, _super);\n function EventResizing(settings) {\n var _this = _super.call(this, settings) || this;\n // internal state\n _this.draggingSegEl = null;\n _this.draggingSeg = null; // TODO: rename to resizingSeg? subjectSeg?\n _this.eventRange = null;\n _this.relevantEvents = null;\n _this.validMutation = null;\n _this.mutatedRelevantEvents = null;\n _this.handlePointerDown = function (ev) {\n var component = _this.component;\n var segEl = _this.querySegEl(ev);\n var seg = getElSeg(segEl);\n var eventRange = _this.eventRange = seg.eventRange;\n _this.dragging.minDistance = component.context.options.eventDragMinDistance;\n // if touch, need to be working with a selected event\n _this.dragging.setIgnoreMove(!_this.component.isValidSegDownEl(ev.origEvent.target) ||\n (ev.isTouch && _this.component.props.eventSelection !== eventRange.instance.instanceId));\n };\n _this.handleDragStart = function (ev) {\n var context = _this.component.context;\n var eventRange = _this.eventRange;\n _this.relevantEvents = getRelevantEvents(context.getCurrentData().eventStore, _this.eventRange.instance.instanceId);\n var segEl = _this.querySegEl(ev);\n _this.draggingSegEl = segEl;\n _this.draggingSeg = getElSeg(segEl);\n context.calendarApi.unselect();\n context.emitter.trigger('eventResizeStart', {\n el: segEl,\n event: new EventApi(context, eventRange.def, eventRange.instance),\n jsEvent: ev.origEvent,\n view: context.viewApi,\n });\n };\n _this.handleHitUpdate = function (hit, isFinal, ev) {\n var context = _this.component.context;\n var relevantEvents = _this.relevantEvents;\n var initialHit = _this.hitDragging.initialHit;\n var eventInstance = _this.eventRange.instance;\n var mutation = null;\n var mutatedRelevantEvents = null;\n var isInvalid = false;\n var interaction = {\n affectedEvents: relevantEvents,\n mutatedEvents: createEmptyEventStore(),\n isEvent: true,\n };\n if (hit) {\n var disallowed = hit.componentId === initialHit.componentId\n && _this.isHitComboAllowed\n && !_this.isHitComboAllowed(initialHit, hit);\n if (!disallowed) {\n mutation = computeMutation(initialHit, hit, ev.subjectEl.classList.contains('fc-event-resizer-start'), eventInstance.range);\n }\n }\n if (mutation) {\n mutatedRelevantEvents = applyMutationToEventStore(relevantEvents, context.getCurrentData().eventUiBases, mutation, context);\n interaction.mutatedEvents = mutatedRelevantEvents;\n if (!isInteractionValid(interaction, hit.dateProfile, context)) {\n isInvalid = true;\n mutation = null;\n mutatedRelevantEvents = null;\n interaction.mutatedEvents = null;\n }\n }\n if (mutatedRelevantEvents) {\n context.dispatch({\n type: 'SET_EVENT_RESIZE',\n state: interaction,\n });\n }\n else {\n context.dispatch({ type: 'UNSET_EVENT_RESIZE' });\n }\n if (!isInvalid) {\n enableCursor();\n }\n else {\n disableCursor();\n }\n if (!isFinal) {\n if (mutation && isHitsEqual(initialHit, hit)) {\n mutation = null;\n }\n _this.validMutation = mutation;\n _this.mutatedRelevantEvents = mutatedRelevantEvents;\n }\n };\n _this.handleDragEnd = function (ev) {\n var context = _this.component.context;\n var eventDef = _this.eventRange.def;\n var eventInstance = _this.eventRange.instance;\n var eventApi = new EventApi(context, eventDef, eventInstance);\n var relevantEvents = _this.relevantEvents;\n var mutatedRelevantEvents = _this.mutatedRelevantEvents;\n context.emitter.trigger('eventResizeStop', {\n el: _this.draggingSegEl,\n event: eventApi,\n jsEvent: ev.origEvent,\n view: context.viewApi,\n });\n if (_this.validMutation) {\n var updatedEventApi = new EventApi(context, mutatedRelevantEvents.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null);\n context.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: mutatedRelevantEvents,\n });\n var eventChangeArg = {\n oldEvent: eventApi,\n event: updatedEventApi,\n relatedEvents: buildEventApis(mutatedRelevantEvents, context, eventInstance),\n revert: function () {\n context.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: relevantEvents, // the pre-change events\n });\n },\n };\n context.emitter.trigger('eventResize', __assign(__assign({}, eventChangeArg), { el: _this.draggingSegEl, startDelta: _this.validMutation.startDelta || createDuration(0), endDelta: _this.validMutation.endDelta || createDuration(0), jsEvent: ev.origEvent, view: context.viewApi }));\n context.emitter.trigger('eventChange', eventChangeArg);\n }\n else {\n context.emitter.trigger('_noEventResize');\n }\n // reset all internal state\n _this.draggingSeg = null;\n _this.relevantEvents = null;\n _this.validMutation = null;\n // okay to keep eventInstance around. useful to set it in handlePointerDown\n };\n var component = settings.component;\n var dragging = _this.dragging = new FeaturefulElementDragging(settings.el);\n dragging.pointer.selector = '.fc-event-resizer';\n dragging.touchScrollAllowed = false;\n dragging.autoScroller.isEnabled = component.context.options.dragScroll;\n var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, interactionSettingsToStore(settings));\n hitDragging.emitter.on('pointerdown', _this.handlePointerDown);\n hitDragging.emitter.on('dragstart', _this.handleDragStart);\n hitDragging.emitter.on('hitupdate', _this.handleHitUpdate);\n hitDragging.emitter.on('dragend', _this.handleDragEnd);\n return _this;\n }\n EventResizing.prototype.destroy = function () {\n this.dragging.destroy();\n };\n EventResizing.prototype.querySegEl = function (ev) {\n return elementClosest(ev.subjectEl, '.fc-event');\n };\n return EventResizing;\n}(Interaction));\nfunction computeMutation(hit0, hit1, isFromStart, instanceRange) {\n var dateEnv = hit0.context.dateEnv;\n var date0 = hit0.dateSpan.range.start;\n var date1 = hit1.dateSpan.range.start;\n var delta = diffDates(date0, date1, dateEnv, hit0.largeUnit);\n if (isFromStart) {\n if (dateEnv.add(instanceRange.start, delta) < instanceRange.end) {\n return { startDelta: delta };\n }\n }\n else if (dateEnv.add(instanceRange.end, delta) > instanceRange.start) {\n return { endDelta: delta };\n }\n return null;\n}\n\nvar UnselectAuto = /** @class */ (function () {\n function UnselectAuto(context) {\n var _this = this;\n this.context = context;\n this.isRecentPointerDateSelect = false; // wish we could use a selector to detect date selection, but uses hit system\n this.matchesCancel = false;\n this.matchesEvent = false;\n this.onSelect = function (selectInfo) {\n if (selectInfo.jsEvent) {\n _this.isRecentPointerDateSelect = true;\n }\n };\n this.onDocumentPointerDown = function (pev) {\n var unselectCancel = _this.context.options.unselectCancel;\n var downEl = getEventTargetViaRoot(pev.origEvent);\n _this.matchesCancel = !!elementClosest(downEl, unselectCancel);\n _this.matchesEvent = !!elementClosest(downEl, EventDragging.SELECTOR); // interaction started on an event?\n };\n this.onDocumentPointerUp = function (pev) {\n var context = _this.context;\n var documentPointer = _this.documentPointer;\n var calendarState = context.getCurrentData();\n // touch-scrolling should never unfocus any type of selection\n if (!documentPointer.wasTouchScroll) {\n if (calendarState.dateSelection && // an existing date selection?\n !_this.isRecentPointerDateSelect // a new pointer-initiated date selection since last onDocumentPointerUp?\n ) {\n var unselectAuto = context.options.unselectAuto;\n if (unselectAuto && (!unselectAuto || !_this.matchesCancel)) {\n context.calendarApi.unselect(pev);\n }\n }\n if (calendarState.eventSelection && // an existing event selected?\n !_this.matchesEvent // interaction DIDN'T start on an event\n ) {\n context.dispatch({ type: 'UNSELECT_EVENT' });\n }\n }\n _this.isRecentPointerDateSelect = false;\n };\n var documentPointer = this.documentPointer = new PointerDragging(document);\n documentPointer.shouldIgnoreMove = true;\n documentPointer.shouldWatchScroll = false;\n documentPointer.emitter.on('pointerdown', this.onDocumentPointerDown);\n documentPointer.emitter.on('pointerup', this.onDocumentPointerUp);\n /*\n TODO: better way to know about whether there was a selection with the pointer\n */\n context.emitter.on('select', this.onSelect);\n }\n UnselectAuto.prototype.destroy = function () {\n this.context.emitter.off('select', this.onSelect);\n this.documentPointer.destroy();\n };\n return UnselectAuto;\n}());\n\nvar OPTION_REFINERS = {\n fixedMirrorParent: identity,\n};\nvar LISTENER_REFINERS = {\n dateClick: identity,\n eventDragStart: identity,\n eventDragStop: identity,\n eventDrop: identity,\n eventResizeStart: identity,\n eventResizeStop: identity,\n eventResize: identity,\n drop: identity,\n eventReceive: identity,\n eventLeave: identity,\n};\n\n/*\nGiven an already instantiated draggable object for one-or-more elements,\nInterprets any dragging as an attempt to drag an events that lives outside\nof a calendar onto a calendar.\n*/\nvar ExternalElementDragging = /** @class */ (function () {\n function ExternalElementDragging(dragging, suppliedDragMeta) {\n var _this = this;\n this.receivingContext = null;\n this.droppableEvent = null; // will exist for all drags, even if create:false\n this.suppliedDragMeta = null;\n this.dragMeta = null;\n this.handleDragStart = function (ev) {\n _this.dragMeta = _this.buildDragMeta(ev.subjectEl);\n };\n this.handleHitUpdate = function (hit, isFinal, ev) {\n var dragging = _this.hitDragging.dragging;\n var receivingContext = null;\n var droppableEvent = null;\n var isInvalid = false;\n var interaction = {\n affectedEvents: createEmptyEventStore(),\n mutatedEvents: createEmptyEventStore(),\n isEvent: _this.dragMeta.create,\n };\n if (hit) {\n receivingContext = hit.context;\n if (_this.canDropElOnCalendar(ev.subjectEl, receivingContext)) {\n droppableEvent = computeEventForDateSpan(hit.dateSpan, _this.dragMeta, receivingContext);\n interaction.mutatedEvents = eventTupleToStore(droppableEvent);\n isInvalid = !isInteractionValid(interaction, hit.dateProfile, receivingContext);\n if (isInvalid) {\n interaction.mutatedEvents = createEmptyEventStore();\n droppableEvent = null;\n }\n }\n }\n _this.displayDrag(receivingContext, interaction);\n // show mirror if no already-rendered mirror element OR if we are shutting down the mirror (?)\n // TODO: wish we could somehow wait for dispatch to guarantee render\n dragging.setMirrorIsVisible(isFinal || !droppableEvent || !document.querySelector('.fc-event-mirror'));\n if (!isInvalid) {\n enableCursor();\n }\n else {\n disableCursor();\n }\n if (!isFinal) {\n dragging.setMirrorNeedsRevert(!droppableEvent);\n _this.receivingContext = receivingContext;\n _this.droppableEvent = droppableEvent;\n }\n };\n this.handleDragEnd = function (pev) {\n var _a = _this, receivingContext = _a.receivingContext, droppableEvent = _a.droppableEvent;\n _this.clearDrag();\n if (receivingContext && droppableEvent) {\n var finalHit = _this.hitDragging.finalHit;\n var finalView = finalHit.context.viewApi;\n var dragMeta = _this.dragMeta;\n receivingContext.emitter.trigger('drop', __assign(__assign({}, buildDatePointApiWithContext(finalHit.dateSpan, receivingContext)), { draggedEl: pev.subjectEl, jsEvent: pev.origEvent, view: finalView }));\n if (dragMeta.create) {\n var addingEvents_1 = eventTupleToStore(droppableEvent);\n receivingContext.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: addingEvents_1,\n });\n if (pev.isTouch) {\n receivingContext.dispatch({\n type: 'SELECT_EVENT',\n eventInstanceId: droppableEvent.instance.instanceId,\n });\n }\n // signal that an external event landed\n receivingContext.emitter.trigger('eventReceive', {\n event: new EventApi(receivingContext, droppableEvent.def, droppableEvent.instance),\n relatedEvents: [],\n revert: function () {\n receivingContext.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: addingEvents_1,\n });\n },\n draggedEl: pev.subjectEl,\n view: finalView,\n });\n }\n }\n _this.receivingContext = null;\n _this.droppableEvent = null;\n };\n var hitDragging = this.hitDragging = new HitDragging(dragging, interactionSettingsStore);\n hitDragging.requireInitial = false; // will start outside of a component\n hitDragging.emitter.on('dragstart', this.handleDragStart);\n hitDragging.emitter.on('hitupdate', this.handleHitUpdate);\n hitDragging.emitter.on('dragend', this.handleDragEnd);\n this.suppliedDragMeta = suppliedDragMeta;\n }\n ExternalElementDragging.prototype.buildDragMeta = function (subjectEl) {\n if (typeof this.suppliedDragMeta === 'object') {\n return parseDragMeta(this.suppliedDragMeta);\n }\n if (typeof this.suppliedDragMeta === 'function') {\n return parseDragMeta(this.suppliedDragMeta(subjectEl));\n }\n return getDragMetaFromEl(subjectEl);\n };\n ExternalElementDragging.prototype.displayDrag = function (nextContext, state) {\n var prevContext = this.receivingContext;\n if (prevContext && prevContext !== nextContext) {\n prevContext.dispatch({ type: 'UNSET_EVENT_DRAG' });\n }\n if (nextContext) {\n nextContext.dispatch({ type: 'SET_EVENT_DRAG', state: state });\n }\n };\n ExternalElementDragging.prototype.clearDrag = function () {\n if (this.receivingContext) {\n this.receivingContext.dispatch({ type: 'UNSET_EVENT_DRAG' });\n }\n };\n ExternalElementDragging.prototype.canDropElOnCalendar = function (el, receivingContext) {\n var dropAccept = receivingContext.options.dropAccept;\n if (typeof dropAccept === 'function') {\n return dropAccept.call(receivingContext.calendarApi, el);\n }\n if (typeof dropAccept === 'string' && dropAccept) {\n return Boolean(elementMatches(el, dropAccept));\n }\n return true;\n };\n return ExternalElementDragging;\n}());\n// Utils for computing event store from the DragMeta\n// ----------------------------------------------------------------------------------------------------\nfunction computeEventForDateSpan(dateSpan, dragMeta, context) {\n var defProps = __assign({}, dragMeta.leftoverProps);\n for (var _i = 0, _a = context.pluginHooks.externalDefTransforms; _i < _a.length; _i++) {\n var transform = _a[_i];\n __assign(defProps, transform(dateSpan, dragMeta));\n }\n var _b = refineEventDef(defProps, context), refined = _b.refined, extra = _b.extra;\n var def = parseEventDef(refined, extra, dragMeta.sourceId, dateSpan.allDay, context.options.forceEventDuration || Boolean(dragMeta.duration), // hasEnd\n context);\n var start = dateSpan.range.start;\n // only rely on time info if drop zone is all-day,\n // otherwise, we already know the time\n if (dateSpan.allDay && dragMeta.startTime) {\n start = context.dateEnv.add(start, dragMeta.startTime);\n }\n var end = dragMeta.duration ?\n context.dateEnv.add(start, dragMeta.duration) :\n getDefaultEventEnd(dateSpan.allDay, start, context);\n var instance = createEventInstance(def.defId, { start: start, end: end });\n return { def: def, instance: instance };\n}\n// Utils for extracting data from element\n// ----------------------------------------------------------------------------------------------------\nfunction getDragMetaFromEl(el) {\n var str = getEmbeddedElData(el, 'event');\n var obj = str ?\n JSON.parse(str) :\n { create: false }; // if no embedded data, assume no event creation\n return parseDragMeta(obj);\n}\nconfig.dataAttrPrefix = '';\nfunction getEmbeddedElData(el, name) {\n var prefix = config.dataAttrPrefix;\n var prefixedName = (prefix ? prefix + '-' : '') + name;\n return el.getAttribute('data-' + prefixedName) || '';\n}\n\n/*\nMakes an element (that is *external* to any calendar) draggable.\nCan pass in data that determines how an event will be created when dropped onto a calendar.\nLeverages FullCalendar's internal drag-n-drop functionality WITHOUT a third-party drag system.\n*/\nvar ExternalDraggable = /** @class */ (function () {\n function ExternalDraggable(el, settings) {\n var _this = this;\n if (settings === void 0) { settings = {}; }\n this.handlePointerDown = function (ev) {\n var dragging = _this.dragging;\n var _a = _this.settings, minDistance = _a.minDistance, longPressDelay = _a.longPressDelay;\n dragging.minDistance =\n minDistance != null ?\n minDistance :\n (ev.isTouch ? 0 : BASE_OPTION_DEFAULTS.eventDragMinDistance);\n dragging.delay =\n ev.isTouch ? // TODO: eventually read eventLongPressDelay instead vvv\n (longPressDelay != null ? longPressDelay : BASE_OPTION_DEFAULTS.longPressDelay) :\n 0;\n };\n this.handleDragStart = function (ev) {\n if (ev.isTouch &&\n _this.dragging.delay &&\n ev.subjectEl.classList.contains('fc-event')) {\n _this.dragging.mirror.getMirrorEl().classList.add('fc-event-selected');\n }\n };\n this.settings = settings;\n var dragging = this.dragging = new FeaturefulElementDragging(el);\n dragging.touchScrollAllowed = false;\n if (settings.itemSelector != null) {\n dragging.pointer.selector = settings.itemSelector;\n }\n if (settings.appendTo != null) {\n dragging.mirror.parentNode = settings.appendTo; // TODO: write tests\n }\n dragging.emitter.on('pointerdown', this.handlePointerDown);\n dragging.emitter.on('dragstart', this.handleDragStart);\n new ExternalElementDragging(dragging, settings.eventData); // eslint-disable-line no-new\n }\n ExternalDraggable.prototype.destroy = function () {\n this.dragging.destroy();\n };\n return ExternalDraggable;\n}());\n\n/*\nDetects when a *THIRD-PARTY* drag-n-drop system interacts with elements.\nThe third-party system is responsible for drawing the visuals effects of the drag.\nThis class simply monitors for pointer movements and fires events.\nIt also has the ability to hide the moving element (the \"mirror\") during the drag.\n*/\nvar InferredElementDragging = /** @class */ (function (_super) {\n __extends(InferredElementDragging, _super);\n function InferredElementDragging(containerEl) {\n var _this = _super.call(this, containerEl) || this;\n _this.shouldIgnoreMove = false;\n _this.mirrorSelector = '';\n _this.currentMirrorEl = null;\n _this.handlePointerDown = function (ev) {\n _this.emitter.trigger('pointerdown', ev);\n if (!_this.shouldIgnoreMove) {\n // fire dragstart right away. does not support delay or min-distance\n _this.emitter.trigger('dragstart', ev);\n }\n };\n _this.handlePointerMove = function (ev) {\n if (!_this.shouldIgnoreMove) {\n _this.emitter.trigger('dragmove', ev);\n }\n };\n _this.handlePointerUp = function (ev) {\n _this.emitter.trigger('pointerup', ev);\n if (!_this.shouldIgnoreMove) {\n // fire dragend right away. does not support a revert animation\n _this.emitter.trigger('dragend', ev);\n }\n };\n var pointer = _this.pointer = new PointerDragging(containerEl);\n pointer.emitter.on('pointerdown', _this.handlePointerDown);\n pointer.emitter.on('pointermove', _this.handlePointerMove);\n pointer.emitter.on('pointerup', _this.handlePointerUp);\n return _this;\n }\n InferredElementDragging.prototype.destroy = function () {\n this.pointer.destroy();\n };\n InferredElementDragging.prototype.setIgnoreMove = function (bool) {\n this.shouldIgnoreMove = bool;\n };\n InferredElementDragging.prototype.setMirrorIsVisible = function (bool) {\n if (bool) {\n // restore a previously hidden element.\n // use the reference in case the selector class has already been removed.\n if (this.currentMirrorEl) {\n this.currentMirrorEl.style.visibility = '';\n this.currentMirrorEl = null;\n }\n }\n else {\n var mirrorEl = this.mirrorSelector\n // TODO: somehow query FullCalendars WITHIN shadow-roots\n ? document.querySelector(this.mirrorSelector)\n : null;\n if (mirrorEl) {\n this.currentMirrorEl = mirrorEl;\n mirrorEl.style.visibility = 'hidden';\n }\n }\n };\n return InferredElementDragging;\n}(ElementDragging));\n\n/*\nBridges third-party drag-n-drop systems with FullCalendar.\nMust be instantiated and destroyed by caller.\n*/\nvar ThirdPartyDraggable = /** @class */ (function () {\n function ThirdPartyDraggable(containerOrSettings, settings) {\n var containerEl = document;\n if (\n // wish we could just test instanceof EventTarget, but doesn't work in IE11\n containerOrSettings === document ||\n containerOrSettings instanceof Element) {\n containerEl = containerOrSettings;\n settings = settings || {};\n }\n else {\n settings = (containerOrSettings || {});\n }\n var dragging = this.dragging = new InferredElementDragging(containerEl);\n if (typeof settings.itemSelector === 'string') {\n dragging.pointer.selector = settings.itemSelector;\n }\n else if (containerEl === document) {\n dragging.pointer.selector = '[data-event]';\n }\n if (typeof settings.mirrorSelector === 'string') {\n dragging.mirrorSelector = settings.mirrorSelector;\n }\n new ExternalElementDragging(dragging, settings.eventData); // eslint-disable-line no-new\n }\n ThirdPartyDraggable.prototype.destroy = function () {\n this.dragging.destroy();\n };\n return ThirdPartyDraggable;\n}());\n\nvar main = createPlugin({\n componentInteractions: [DateClicking, DateSelecting, EventDragging, EventResizing],\n calendarInteractions: [UnselectAuto],\n elementDraggingImpl: FeaturefulElementDragging,\n optionRefiners: OPTION_REFINERS,\n listenerRefiners: LISTENER_REFINERS,\n});\n\nexport default main;\nexport { ExternalDraggable as Draggable, FeaturefulElementDragging, PointerDragging, ThirdPartyDraggable };\n//# sourceMappingURL=main.js.map\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./participants.scss?vue&type=style&index=0&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-sidebar',{attrs:{\"id\":\"add-new-user-sidebar\",\"visible\":_vm.isAddNewUserSidebarActive,\"bg-variant\":\"white\",\"sidebar-class\":\"sidebar-lg sidebar-participants\",\"shadow\":\"\",\"backdrop\":\"\",\"no-header\":\"\",\"right\":\"\"},on:{\"change\":function (val) { return _vm.$emit('update:is-add-new-user-sidebar-active', val); }},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar hide = ref.hide;\nreturn [_c('form-wizard',{staticClass:\"custom-form-wizard-classes\",attrs:{\"title\":\"Katılımcı Listesi\",\"subtitle\":\"null\",\"shape\":\"square\"},scopedSlots:_vm._u([{key:\"footer\",fn:function(props){return [_c('div',{staticClass:\"wizard-footer-left\"},[_c('b-button',{staticClass:\"mr-1 custom-back-button btn btn-primary\",attrs:{\"size\":\"md\"},on:{\"click\":hide}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Back\"))+\" \")])],1)]}}],null,true)},[_c('div',{staticClass:\"participant-title mb-2\"},[_c('b',{staticClass:\"text-white custom-padding-badge bg-primary rounded\"},[_vm._v(_vm._s(_vm.personData.length)+\" / \"+_vm._s(_vm.capacity))]),_vm._v(\" \"),_c('span',{staticClass:\"custom-padding-badge\"},[_vm._v(_vm._s(_vm.$t('Participants Available')))])]),_c('b-card',{staticClass:\"mb-0 participant-list\",attrs:{\"no-body\":\"\"}},[_c('div',{staticClass:\"m-2\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"8\",\"md\":\"8\"}},[_c('div',{staticClass:\"d-flex align-items-center justify-content-end\"},[_c('b-form-input',{staticClass:\"d-inline-block mr-1\",attrs:{\"placeholder\":_vm.$t('Search For Participants...')},model:{value:(_vm.filter),callback:function ($$v) {_vm.filter=$$v},expression:\"filter\"}})],1)]),(_vm.time_table_infos.capacity != _vm.personData.length)?_c('b-col',{attrs:{\"cols\":\"4\",\"md\":\"4\"}},[_c('div',{staticClass:\"d-flex align-items-center justify-content-end\"},[_c('b-button',{directives:[{name:\"b-modal\",rawName:\"v-b-modal.modal-primary\",modifiers:{\"modal-primary\":true}}],attrs:{\"variant\":\"success\"},on:{\"click\":function($event){return _vm.getCustomerList(_vm.activity_id, _vm.trainer_id)}}},[_vm._v(\" \"+_vm._s(_vm.$t('Add Participant'))+\" \")])],1)]):_vm._e()],1)],1),_c('b-table',{ref:\"refUserListTable\",staticClass:\"position-relative\",attrs:{\"hover\":\"\",\"per-page\":_vm.perPage,\"current-page\":_vm.currentPage,\"items\":_vm.personData,\"responsive\":\"\",\"fields\":_vm.tableColumns,\"primary-key\":\"id\",\"sort-by\":_vm.sortBy,\"filter\":_vm.filter,\"filter-included-fields\":_vm.filterOn,\"show-empty\":\"\",\"empty-text\":_vm.$t('No Matching Creates Found'),\"empty-filtered-text\":_vm.$t('There are no records matching your request!'),\"sort-desc\":_vm.isSortDirDesc},on:{\"update:sortBy\":function($event){_vm.sortBy=$event},\"update:sort-by\":function($event){_vm.sortBy=$event},\"filtered\":_vm.onFiltered,\"update:sortDesc\":function($event){_vm.isSortDirDesc=$event},\"update:sort-desc\":function($event){_vm.isSortDirDesc=$event}},scopedSlots:_vm._u([{key:\"cell(actions)\",fn:function(data){return [(_vm.isMobile === true)?[_c('b-dropdown',{attrs:{\"variant\":\"link\",\"no-caret\":\"\",\"right\":_vm.$store.state.appConfig.isRTL},scopedSlots:_vm._u([{key:\"button-content\",fn:function(){return [_c('feather-icon',{staticClass:\"align-middle text-body\",attrs:{\"icon\":\"MoreVerticalIcon\",\"size\":\"16\"}})]},proxy:true}],null,true)},[_c('b-dropdown-item',{on:{\"click\":function($event){return _vm.cancelAppointment(data.item.person_id)}}},[_c('feather-icon',{attrs:{\"icon\":\"XCircleIcon\"}}),_c('span',{staticClass:\"align-middle ml-50\"},[_vm._v(_vm._s(_vm.$t(\"Listeden Kaldır\")))])],1)],1)]:_vm._e(),(_vm.isMobile === false)?[_c('b-button',{staticClass:\"mr-1\",attrs:{\"size\":\"sm\",\"variant\":\"outline-danger\"},on:{\"click\":function($event){return _vm.cancelAppointment(data.item.person_id)}}},[_vm._v(_vm._s(_vm.$t(\"Listeden Kaldır\"))+\" \")])]:_vm._e()]}}],null,true)}),_c('div',{staticClass:\"mx-2 mb-2\"},[_c('b-row',[_c('b-col',{staticClass:\"\\n d-flex\\n align-items-left\\n justify-content-right justify-content-sm-start\\n radius\\n 0\\n \",attrs:{\"cols\":\"6\",\"sm\":\"\"}}),(_vm.$i18n.locale === 'tr')?_c('small',{staticClass:\"mt-1\"},[_vm._v(\"içerisindeki \"+_vm._s(_vm.totalRows)+\" kayıttan \"+_vm._s(_vm.currentPage * 1)+\"-\"+_vm._s(_vm.currentPage * _vm.perPage)+\" arası (\"+_vm._s(_vm.currentPage)+\".sayfa) gösteriliyor \")]):_vm._e(),(_vm.$i18n.locale === 'en')?_c('small',{staticClass:\"mt-1\"},[_vm._v(\"showing \"+_vm._s(_vm.currentPage*1)+\"-\"+_vm._s(_vm.currentPage*_vm.perPage)+\" (page \"+_vm._s(_vm.currentPage)+\") of \"+_vm._s(_vm.totalRows)+\" records\")]):_vm._e(),_c('b-col',{staticClass:\"\\n d-flex\\n align-items-right\\n justify-content-right justify-content-sm-end\\n radius\\n 0\\n \",attrs:{\"cols\":\"6\",\"sm\":\"\"}},[_c('b-pagination',{staticClass:\"mb-0 mt-1 mt-sm-0 r-0\",attrs:{\"total-rows\":_vm.totalRows,\"per-page\":_vm.perPage,\"aling\":\"right\",\"first-number\":\"\",\"last-number\":\"\",\"prev-class\":\"prev-item\",\"next-class\":\"next-item\"},scopedSlots:_vm._u([{key:\"prev-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronLeftIcon\",\"size\":\"18\"}})]},proxy:true},{key:\"next-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronRightIcon\",\"size\":\"18\"}})]},proxy:true}],null,true),model:{value:(_vm.currentPage),callback:function ($$v) {_vm.currentPage=$$v},expression:\"currentPage\"}})],1)],1)],1)],1),_c('b-modal',{ref:\"add-participant\",attrs:{\"id\":\"modal-primary\",\"size\":\"xl\",\"ok-only\":\"\",\"ok-title\":\"Accept\",\"modal-class\":\"modal-primary\",\"centered\":\"\",\"title\":_vm.selectProduct ? 'Ürün Seç' : 'Katılımcı Seç',\"no-close-on-backdrop\":\"\",\"hide-footer\":\"\"}},[(!_vm.selectProduct)?_c('b-card',{staticClass:\"mb-0\",attrs:{\"no-body\":\"\"}},[_c('div',{staticClass:\"m-2\"},[_c('b-row',[_c('b-col',{staticClass:\"d-flex align-items-center justify-content-start mb-1 mb-md-0\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-select',{staticClass:\"per-page-selector d-inline-block mx-50\",attrs:{\"dir\":_vm.$store.state.appConfig.isRTL ? 'rtl' : 'ltr',\"options\":_vm.perPageOptions2,\"clearable\":false},model:{value:(_vm.perPage2),callback:function ($$v) {_vm.perPage2=$$v},expression:\"perPage2\"}}),_c('label',[_vm._v(_vm._s(_vm.$t(\"Show\")))])],1),_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('div',{staticClass:\"d-flex align-items-center justify-content-end\"},[_c('b-form-input',{staticClass:\"d-inline-block mr-1\",attrs:{\"placeholder\":_vm.$t('Search...')},model:{value:(_vm.filter2),callback:function ($$v) {_vm.filter2=$$v},expression:\"filter2\"}})],1)])],1)],1),_c('b-row',[_c('b-col',[_c('b-table',{ref:\"refUserListTable\",staticClass:\"position-relative\",attrs:{\"hover\":\"\",\"per-page\":_vm.perPage2,\"current-page\":_vm.currentPage2,\"items\":_vm.personBaseData,\"responsive\":\"\",\"fields\":_vm.tableColumns2,\"primary-key\":\"id\",\"sort-by\":_vm.sortBy2,\"filter\":_vm.filter2,\"filter-included-fields\":_vm.filterOn2,\"show-empty\":\"\",\"empty-text\":_vm.$t('No Matching Creates Found'),\"empty-filtered-text\":_vm.$t('There are no records matching your request!'),\"sort-desc\":_vm.isSortDirDesc2},on:{\"update:sortBy\":function($event){_vm.sortBy2=$event},\"update:sort-by\":function($event){_vm.sortBy2=$event},\"filtered\":_vm.onFiltered2,\"update:sortDesc\":function($event){_vm.isSortDirDesc2=$event},\"update:sort-desc\":function($event){_vm.isSortDirDesc2=$event}},scopedSlots:_vm._u([{key:\"cell(actions)\",fn:function(data){return [(_vm.isMobile === false)?[_c('b-button',{staticClass:\"mr-1\",attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.selectParticipant(data.item.person_id)}}},[_vm._v(_vm._s(_vm.$t(\"Katılımcı Seç\")))])]:_vm._e()]}}],null,true)})],1)],1),_c('b-row',{staticClass:\"my-1\"},[_c('b-col',{staticClass:\"\\n d-flex\\n align-items-left\\n justify-content-left justify-content-sm-start\\n ml-2\\n radius\\n 0\\n \",attrs:{\"cols\":\"6\",\"sm\":\"\"}},[(_vm.$i18n.locale === 'tr')?_c('small',{staticClass:\"mt-1\"},[_vm._v(\"içerisindeki \"+_vm._s(_vm.totalRows2)+\" kayıttan \"+_vm._s(_vm.currentPage2 * 1)+\"-\"+_vm._s(_vm.currentPage2 * _vm.perPage2)+\" arası (\"+_vm._s(_vm.currentPage2)+\".sayfa) gösteriliyor \")]):_vm._e(),(_vm.$i18n.locale === 'en')?_c('small',{staticClass:\"mt-1\"},[_vm._v(\"showing \"+_vm._s(_vm.currentPage2*1)+\"-\"+_vm._s(_vm.currentPage2*_vm.perPage2)+\" (page \"+_vm._s(_vm.currentPage2)+\") of \"+_vm._s(_vm.totalRows2)+\" records\")]):_vm._e()]),_c('b-col',{staticClass:\"\\n d-flex\\n align-items-right\\n justify-content-right justify-content-sm-end\\n radius\\n 0\\n mr-1\\n \",attrs:{\"cols\":\"6\",\"sm\":\"\"}},[_c('b-pagination',{staticClass:\"mb-0 mt-1 mt-sm-0 r-0\",attrs:{\"total-rows\":_vm.totalRows2,\"per-page\":_vm.perPage2,\"aling\":\"right\",\"first-number\":\"\",\"last-number\":\"\",\"prev-class\":\"prev-item\",\"next-class\":\"next-item\"},scopedSlots:_vm._u([{key:\"prev-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronLeftIcon\",\"size\":\"18\"}})]},proxy:true},{key:\"next-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronRightIcon\",\"size\":\"18\"}})]},proxy:true}],null,true),model:{value:(_vm.currentPage2),callback:function ($$v) {_vm.currentPage2=$$v},expression:\"currentPage2\"}})],1)],1)],1):_vm._e(),(_vm.selectProduct)?_c('b-card',{staticClass:\"mb-0\",attrs:{\"no-body\":\"\"}},[_c('div',{staticClass:\"m-2\"},[_c('b-row',[_c('b-col',{staticClass:\" align-items-center justify-content-start mb-1 mb-md-0\",attrs:{\"cols\":\"12\",\"md\":\"12\"}},[_c('b-form-group',[_c('label',{attrs:{\"for\":\"title\"}},[_vm._v(_vm._s(_vm.$t(\"Seçilen Müşteri\")))]),_c('b-form-input',{attrs:{\"disabled\":\"\",\"id\":\"title\",\"label\":\"title\"},model:{value:(_vm.selectedCustomer.full_name),callback:function ($$v) {_vm.$set(_vm.selectedCustomer, \"full_name\", $$v)},expression:\"selectedCustomer.full_name\"}})],1),_c('b-form-group',[_c('label',{staticClass:\"mt-1\",attrs:{\"for\":\"title\"}},[_vm._v(_vm._s(_vm.$t(\"Ürün\")))]),_c('v-select',{staticClass:\"select-config d-block\",attrs:{\"clearable\":false,\"options\":_vm.productListByCustomer,\"label\":\"extraTitle\"},on:{\"blur\":function($event){return _vm.$v.trainer.trainer_id.$touch()}},model:{value:(_vm.product),callback:function ($$v) {_vm.product=$$v},expression:\"product\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(_vm._s(_vm.$t('No Suitable Products Found')))])])],1),_c('hr'),[_c('div',{staticClass:\"row float-right\"},[_c('div',{staticClass:\"col\"},[_c('b-button',{staticClass:\"mr-1\",attrs:{\"variant\":\"warning\"},on:{\"click\":_vm.cancelAddParticipants}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Cancel\"))+\" \")]),_c('b-button',{attrs:{\"variant\":\"primary\"},on:{\"click\":_vm.saveAddParticipants}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Save\"))+\" \")])],1)])]],2)],1)],1)]):_vm._e()],1),void 0],2)]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParticipantsForNewModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParticipantsForNewModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ParticipantsForNewModal.vue?vue&type=template&id=d173f0aa&scoped=true&\"\nimport script from \"./ParticipantsForNewModal.vue?vue&type=script&lang=js&\"\nexport * from \"./ParticipantsForNewModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"@/styles/scss/participants.scss?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"@/styles/scss/participantsScoped.scss?vue&type=style&index=1&id=d173f0aa&lang=scss&scoped=true&\"\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 \"d173f0aa\",\n null\n \n)\n\nexport default component.exports","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"flatpickr\")):\"function\"==typeof define&&define.amd?define(\"VueFlatpickr\",[\"flatpickr\"],e):\"object\"==typeof exports?exports.VueFlatpickr=e(require(\"flatpickr\")):t.VueFlatpickr=e(t.flatpickr)}(\"undefined\"!=typeof self?self:this,(function(t){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=1)}([function(e,n){e.exports=t},function(t,e,n){\"use strict\";n.r(e),n.d(e,\"Component\",(function(){return c})),n.d(e,\"Plugin\",(function(){return p}));var r=n(0),o=n.n(r),i=[\"onChange\",\"onClose\",\"onDestroy\",\"onMonthChange\",\"onOpen\",\"onYearChange\"];function u(){return(u=Object.assign||function(t){for(var e=1;e\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 flushToDom = FullCalendarVDom.flushToDom;\nvar unmountComponentAtNode = FullCalendarVDom.unmountComponentAtNode;\n/* eslint-enable */\n\nexport { Component, Fragment, createContext, createElement, createPortal, createRef, flushToDom, render, unmountComponentAtNode };\n","/*!\nFullCalendar v5.9.0\nDocs & License: https://fullcalendar.io/\n(c) 2021 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\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\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}\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(// used?\nworkerFunc, resEquality, teardownFunc) {\n var _this = this;\n var currentArgHash = {};\n var currentResHash = {};\n return function (newArgHash) {\n var newResHash = {};\n for (var key in newArgHash) {\n if (!currentResHash[key]) {\n newResHash[key] = workerFunc.apply(_this, newArgHash[key]);\n }\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.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, locale, display) {\n var parts = [];\n if (display === 'narrow') {\n parts.push(weekText);\n }\n else if (display === 'short') {\n parts.push(weekText, ' ');\n }\n // otherwise, considered 'numeric'\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 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 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 // only used by list-view, but languages define the value, so we need it in base options\n noEventsText: 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 views: identity,\n plugins: identity,\n initialEvents: identity,\n events: identity,\n eventSources: identity,\n};\nvar COMPLEX_OPTION_COMPARATORS = {\n headerToolbar: isBoolComplexEqual,\n footerToolbar: isBoolComplexEqual,\n buttonText: isBoolComplexEqual,\n buttonIcons: isBoolComplexEqual,\n};\nfunction isBoolComplexEqual(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};\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 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}\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.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.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 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 allDayText: 'all-day',\n moreLinkText: 'more',\n noEventsText: 'No events to display',\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, // necessary?\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([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\nfunction buildNavLinkData(date, type) {\n if (type === void 0) { type = 'day'; }\n return JSON.stringify({\n date: formatDayString(date),\n type: type,\n });\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 (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 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 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, // fall back to given view name\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 viewsWithButtons = [];\n var headerToolbar = calendarOptions.headerToolbar ? parseToolbar(calendarOptions.headerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi, viewsWithButtons) : null;\n var footerToolbar = calendarOptions.footerToolbar ? parseToolbar(calendarOptions.footerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi, viewsWithButtons) : null;\n return { headerToolbar: headerToolbar, footerToolbar: footerToolbar, viewsWithButtons: viewsWithButtons };\n}\nfunction parseToolbar(sectionStrHash, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi, viewsWithButtons) {\n return mapHash(sectionStrHash, function (sectionStr) { return parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi, viewsWithButtons); });\n}\n/*\nBAD: querying icons and text here. should be done at render time\n*/\nfunction parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi, viewsWithButtons) {\n var isRtl = calendarOptions.direction === 'rtl';\n var calendarCustomButtons = calendarOptions.customButtons || {};\n var calendarButtonTextOverrides = calendarOptionOverrides.buttonText || {};\n var calendarButtonText = calendarOptions.buttonText || {};\n var sectionSubstrs = sectionStr ? sectionStr.split(' ') : [];\n return sectionSubstrs.map(function (buttonGroupStr) { return (buttonGroupStr.split(',').map(function (buttonName) {\n if (buttonName === 'title') {\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 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 }\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 }\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]);\n // ^ everything else is considered default\n }\n return { buttonName: buttonName, buttonClick: buttonClick, buttonIcon: buttonIcon, buttonText: buttonText };\n })); });\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: function () { return ({ render: injectHtml }); },\n domNodes: function () { return ({ render: injectDomNodes }); },\n },\n propSetHandlers: {\n dateProfile: handleDateProfile,\n eventStore: handleEventStore,\n },\n }),\n];\nfunction injectHtml(el, html) {\n el.innerHTML = html;\n}\nfunction injectDomNodes(el, domNodes) {\n var oldNodes = Array.prototype.slice.call(el.childNodes); // TODO: use array util\n var newNodes = Array.prototype.slice.call(domNodes); // TODO: use array util\n if (!isArraysEqual(oldNodes, newNodes)) {\n for (var _i = 0, newNodes_1 = newNodes; _i < newNodes_1.length; _i++) {\n var newNode = newNodes_1[_i];\n el.appendChild(newNode);\n }\n oldNodes.forEach(removeElement);\n }\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 refined[optionName] = currentRefined[optionName];\n }\n else {\n if (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;\n if (buttonName === 'title') {\n isOnlyButtons = false;\n children.push(createElement(\"h2\", { className: \"fc-toolbar-title\" }, props.title));\n }\n else {\n var ariaAttrs = buttonIcon ? { 'aria-label': buttonName } : {};\n var buttonClasses = [\"fc-\" + buttonName + \"-button\", theme.getClass('button')];\n if (buttonName === props.activeButton) {\n buttonClasses.push(theme.getClass('buttonActive'));\n }\n var isDisabled = (!props.isTodayEnabled && buttonName === 'today') ||\n (!props.isPrevEnabled && buttonName === 'prev') ||\n (!props.isNextEnabled && buttonName === 'next');\n children.push(createElement(\"button\", __assign({ disabled: isDisabled, className: buttonClasses.join(' '), onClick: buttonClick, type: \"button\" }, ariaAttrs), 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 centerContent = model.center;\n if (model.left) {\n forceLtr = true;\n startContent = model.left;\n }\n else {\n startContent = model.start;\n }\n if (model.right) {\n forceLtr = true;\n endContent = model.right;\n }\n else {\n endContent = model.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, activeButton: props.activeButton, isTodayEnabled: props.isTodayEnabled, isPrevEnabled: props.isPrevEnabled, isNextEnabled: props.isNextEnabled }));\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\", { ref: this.handleEl, onClick: props.onClick, 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.handleNavLinkClick = buildDelegationHandler('a[data-navlink]', _this._handleNavLinkClick.bind(_this));\n _this.headerRef = createRef();\n _this.footerRef = createRef();\n _this.interactionsStore = {};\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 for (var _i = 0, _a = _this.interactionsStore[component.uid]; _i < _a.length; _i++) {\n var listener = _a[_i];\n listener.destroy();\n }\n delete _this.interactionsStore[component.uid];\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 return (createElement(ViewContextType.Provider, { value: viewContext },\n toolbarConfig.headerToolbar && (createElement(Toolbar, __assign({ ref: this.headerRef, extraClassName: \"fc-header-toolbar\", model: toolbarConfig.headerToolbar }, toolbarProps))),\n createElement(ViewContainer, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, onClick: this.handleNavLinkClick },\n this.renderView(props),\n this.buildAppendContent()),\n toolbarConfig.footerToolbar && (createElement(Toolbar, __assign({ ref: this.footerRef, extraClassName: \"fc-footer-toolbar\", model: toolbarConfig.footerToolbar }, 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._handleNavLinkClick = function (ev, anchorEl) {\n var _a = this.props, dateEnv = _a.dateEnv, options = _a.options, calendarApi = _a.calendarApi;\n var navLinkOptions = anchorEl.getAttribute('data-navlink');\n navLinkOptions = navLinkOptions ? JSON.parse(navLinkOptions) : {};\n var dateMarker = dateEnv.createMarker(navLinkOptions.date);\n var viewType = navLinkOptions.type;\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 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 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 = (options.navLinks && !dayMeta.isDisabled && props.colCnt > 1)\n ? { 'data-navlink': buildNavLinkData(date), tabIndex: 0 }\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, 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 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, className: classNames.concat(customClassNames).join(' '), colSpan: props.colSpan }, props.extraDataAttrs),\n createElement(\"div\", { className: \"fc-scrollgrid-sync-inner\" },\n createElement(\"a\", { 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\", null,\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) {\n var expandRows = arg.expandRows;\n var content = typeof chunkConfig.content === 'function' ?\n chunkConfig.content(arg) :\n createElement('table', {\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('tbody', {}, typeof chunkConfig.rowContent === 'function' ? chunkConfig.rowContent(arg) : 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.setState(__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));\n configI += 1;\n }\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {\n bodySectionNodes.push(this.renderSection(currentConfig, microColGroupNode));\n configI += 1;\n }\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {\n footSectionNodes.push(this.renderSection(currentConfig, microColGroupNode));\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 return createElement('table', {\n className: classNames.join(' '),\n style: { height: props.height },\n }, Boolean(!isBuggy && headSectionNodes.length) && createElement.apply(void 0, __spreadArray(['thead', {}], headSectionNodes)), Boolean(!isBuggy && bodySectionNodes.length) && createElement.apply(void 0, __spreadArray(['tbody', {}], bodySectionNodes)), Boolean(!isBuggy && footSectionNodes.length) && createElement.apply(void 0, __spreadArray(['tfoot', {}], footSectionNodes)), isBuggy && createElement.apply(void 0, __spreadArray(__spreadArray(__spreadArray(['tbody', {}], headSectionNodes), bodySectionNodes), footSectionNodes)));\n };\n SimpleScrollGrid.prototype.renderSection = function (sectionConfig, microColGroupNode) {\n if ('outerContent' in sectionConfig) {\n return (createElement(Fragment, { key: sectionConfig.key }, sectionConfig.outerContent));\n }\n return (createElement(\"tr\", { key: sectionConfig.key, className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, this.renderChunkTd(sectionConfig, microColGroupNode, sectionConfig.chunk)));\n };\n SimpleScrollGrid.prototype.renderChunkTd = function (sectionConfig, microColGroupNode, chunkConfig) {\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 });\n return (createElement(\"td\", { ref: chunkConfig.elRef },\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)),\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}\nfunction getSegAnchorAttrs(seg) {\n var url = seg.eventRange.def.url;\n return url ? { href: url } : {};\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.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.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 theme = this.context.theme;\n var props = this.props;\n var classNames = [\n 'fc-popover',\n theme.getClass('popover'),\n ].concat(props.extraClassNames || []);\n return createPortal(createElement(\"div\", __assign({ className: classNames.join(' ') }, props.extraAttrs, { ref: this.handleRootEl }),\n createElement(\"div\", { className: 'fc-popover-header ' + theme.getClass('popoverHeader') },\n createElement(\"span\", { className: \"fc-popover-title\" }, props.title),\n createElement(\"span\", { className: 'fc-popover-close ' + theme.getIconClass('close'), 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 this.updateSize();\n };\n Popover.prototype.componentWillUnmount = function () {\n document.removeEventListener('mousedown', this.handleDocumentMousedown);\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, 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 };\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 props = this.props;\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 hookProps = {\n num: moreCnt,\n shortText: \"+\" + moreCnt,\n text: typeof moreLinkText === 'function'\n ? moreLinkText.call(calendarApi, moreCnt)\n : \"+\" + moreCnt + \" \" + moreLinkText,\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); })),\n _this.state.isPopoverOpen && (createElement(MorePopover, { 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.9.0'; // 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, buildNavLinkData, buildSegCompareObj, buildSegTimeText, collectFromHash, combineEventUis, compareByFieldSpec, compareByFieldSpecs, compareNumbers, compareObjs, computeEarliestSegStart, computeEdges, computeFallbackHeaderFormat, computeHeightAndMargins, computeInnerRect, computeRect, computeSegDraggable, computeSegEndResizable, computeSegStartResizable, computeShrinkWidth, computeSmallestCellWidth, computeVisibleDayRange, config, constrainPoint, 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, getSegMeta, getSlotClassNames, getStickyFooterScrollbar, getStickyHeaderDates, getUnequalProps, 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","var n,l,u,i,t,o,r,f,e={},c=[],s=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function a(n,l){for(var u in l)n[u]=l[u];return n}function h(n){var l=n.parentNode;l&&l.removeChild(n)}function v(l,u,i){var t,o,r,f={};for(r in u)\"key\"==r?t=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return y(l,f,t,o,null)}function y(n,i,t,o,r){var f={type:n,props:i,key:t,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==r?++u:r};return null!=l.vnode&&l.vnode(f),f}function p(){return{current:null}}function d(n){return n.children}function _(n,l){this.props=n,this.context=l}function k(n,l){if(null==l)return n.__?k(n.__,n.__.__k.indexOf(n)+1):null;for(var u;l0?y(_.type,_.props,_.key,null,_.__v):_)){if(_.__=u,_.__b=u.__b+1,null===(p=w[h])||p&&_.key==p.key&&_.type===p.type)w[h]=void 0;else for(v=0;v2&&(f.children=arguments.length>3?n.call(arguments,2):i),y(l.type,f,t||l.key,o||l.ref,null)}function D(n,l){var u={__c:l=\"__cC\"+f++,__: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(m)},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=c.slice,l={__e:function(n,l){for(var u,i,t;l=l.__;)if((u=l.__c)&&!u.__)try{if((i=u.constructor)&&null!=i.getDerivedStateFromError&&(u.setState(i.getDerivedStateFromError(n)),t=u.__d),null!=u.componentDidCatch&&(u.componentDidCatch(n),t=u.__d),t)return u.__E=u}catch(l){n=l}throw n}},u=0,i=function(n){return null!=n&&void 0===n.constructor},_.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=a({},this.state),\"function\"==typeof n&&(n=n(a({},u),this.props)),n&&a(u,n),null!=n&&this.__v&&(l&&this.__h.push(l),m(this))},_.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),m(this))},_.prototype.render=d,t=[],o=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,g.__r=0,f=0;export{S as render,q as hydrate,v as createElement,v as h,d as Fragment,p as createRef,i as isValidElement,_ as Component,B as cloneElement,D as createContext,A as toChildArray,l as options};\n//# sourceMappingURL=preact.module.js.map\n","import{options as n}from\"preact\";var t,u,r,o=0,i=[],c=n.__b,f=n.__r,e=n.diffed,a=n.__c,v=n.unmount;function m(t,r){n.__h&&n.__h(u,t,o||r),o=0;var i=u.__H||(u.__H={__:[],__h:[]});return t>=i.__.length&&i.__.push({}),i.__[t]}function l(n){return o=1,p(w,n)}function p(n,r,o){var i=m(t++,2);return i.t=n,i.__c||(i.__=[o?o(r):w(void 0,r),function(n){var t=i.t(i.__[0],n);i.__[0]!==t&&(i.__=[t,i.__[1]],i.__c.setState({}))}],i.__c=u),i.__}function y(r,o){var i=m(t++,3);!n.__s&&k(i.__H,o)&&(i.__=r,i.__H=o,u.__H.__h.push(i))}function h(r,o){var i=m(t++,4);!n.__s&&k(i.__H,o)&&(i.__=r,i.__H=o,u.__h.push(i))}function s(n){return o=5,d(function(){return{current:n}},[])}function _(n,t,u){o=6,h(function(){\"function\"==typeof n?n(t()):n&&(n.current=t())},null==u?u:u.concat(n))}function d(n,u){var r=m(t++,7);return k(r.__H,u)&&(r.__=n(),r.__H=u,r.__h=n),r.__}function A(n,t){return o=8,d(function(){return n},t)}function F(n){var r=u.context[n.__c],o=m(t++,9);return o.c=n,r?(null==o.__&&(o.__=!0,r.sub(u)),r.props.value):n.__}function T(t,u){n.useDebugValue&&n.useDebugValue(u?u(t):t)}function q(n){var r=m(t++,10),o=l();return r.__=n,u.componentDidCatch||(u.componentDidCatch=function(n){r.__&&r.__(n),o[1](n)}),[o[0],function(){o[1](void 0)}]}function x(){i.forEach(function(t){if(t.__P)try{t.__H.__h.forEach(g),t.__H.__h.forEach(j),t.__H.__h=[]}catch(u){t.__H.__h=[],n.__e(u,t.__v)}}),i=[]}n.__b=function(n){u=null,c&&c(n)},n.__r=function(n){f&&f(n),t=0;var r=(u=n.__c).__H;r&&(r.__h.forEach(g),r.__h.forEach(j),r.__h=[])},n.diffed=function(t){e&&e(t);var o=t.__c;o&&o.__H&&o.__H.__h.length&&(1!==i.push(o)&&r===n.requestAnimationFrame||((r=n.requestAnimationFrame)||function(n){var t,u=function(){clearTimeout(r),b&&cancelAnimationFrame(t),setTimeout(n)},r=setTimeout(u,100);b&&(t=requestAnimationFrame(u))})(x)),u=void 0},n.__c=function(t,u){u.some(function(t){try{t.__h.forEach(g),t.__h=t.__h.filter(function(n){return!n.__||j(n)})}catch(r){u.some(function(n){n.__h&&(n.__h=[])}),u=[],n.__e(r,t.__v)}}),a&&a(t,u)},n.unmount=function(t){v&&v(t);var u=t.__c;if(u&&u.__H)try{u.__H.__.forEach(g)}catch(t){n.__e(t,u.__v)}};var b=\"function\"==typeof requestAnimationFrame;function g(n){var t=u;\"function\"==typeof n.__c&&n.__c(),u=t}function j(n){var t=u;n.__c=n.__(),u=t}function k(n,t){return!n||n.length!==t.length||t.some(function(t,u){return t!==n[u]})}function w(n,t){return\"function\"==typeof t?t(n):t}export{l as useState,p as useReducer,y as useEffect,h as useLayoutEffect,s as useRef,_ as useImperativeHandle,d as useMemo,A as useCallback,F as useContext,T as useDebugValue,q as useErrorBoundary};\n//# sourceMappingURL=hooks.module.js.map\n","import{useState as n,useReducer as t,useEffect as e,useLayoutEffect as r,useRef as u,useImperativeHandle as o,useMemo as i,useCallback as l,useContext as f,useDebugValue as c}from\"preact/hooks\";export*from\"preact/hooks\";import{Component as a,createElement as s,options as h,toChildArray as v,Fragment as d,render as p,hydrate as m,cloneElement as y,createRef as b,createContext as _}from\"preact\";export{createElement,createContext,createRef,Fragment,Component}from\"preact\";function S(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){this.props=n}function g(n,t){function e(n){var e=this.props.ref,r=e==n.ref;return!r&&e&&(e.call?e(null):e.current=null),t?!t(this.props,n)||!r:C(this.props,n)}function r(t){return this.shouldComponentUpdate=e,s(n,t)}return r.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",r.prototype.isReactComponent=!0,r.__f=!0,r}(E.prototype=new a).isPureReactComponent=!0,E.prototype.shouldComponentUpdate=function(n,t){return C(this.props,n)||C(this.state,t)};var w=h.__b;h.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),w&&w(n)};var R=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function x(n){function t(t,e){var r=S({},t);return delete r.ref,n(r,(e=t.ref||e)&&(\"object\"!=typeof e||\"current\"in e)?e:null)}return t.$$typeof=R,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var N=function(n,t){return null==n?null:v(v(n).map(t))},k={map:N,forEach:N,count:function(n){return n?v(n).length:0},only:function(n){var t=v(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:v},A=h.__e;h.__e=function(n,t,e){if(n.then)for(var r,u=t;u=u.__;)if((r=u.__c)&&r.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),r.__c(n,t);A(n,t,e)};var O=h.unmount;function L(){this.__u=0,this.t=null,this.__b=null}function U(n){var t=n.__.__c;return t&&t.__e&&t.__e(n)}function F(n){var t,e,r;function u(u){if(t||(t=n()).then(function(n){e=n.default||n},function(n){r=n}),r)throw r;if(!e)throw t;return s(e,u)}return u.displayName=\"Lazy\",u.__f=!0,u}function M(){this.u=null,this.o=null}h.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&!0===n.__h&&(n.type=null),O&&O(n)},(L.prototype=new a).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=U(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.__e){var n=r.state.__e;r.__v.__k[0]=function n(t,e,r){return t&&(t.__v=null,t.__k=t.__k&&t.__k.map(function(t){return n(t,e,r)}),t.__c&&t.__c.__P===e&&(t.__e&&r.insertBefore(t.__e,t.__d),t.__c.__e=!0,t.__c.__P=r)),t}(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__e:r.__b=null});t=r.t.pop();)t.forceUpdate()}},f=!0===t.__h;r.__u++||f||r.setState({__e:r.__b=r.__v.__k[0]}),n.then(i,i)},L.prototype.componentWillUnmount=function(){this.t=[]},L.prototype.render=function(n,t){if(this.__b){if(this.__v.__k){var e=document.createElement(\"div\"),r=this.__v.__k[0].__c;this.__v.__k[0]=function n(t,e,r){return t&&(t.__c&&t.__c.__H&&(t.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),t.__c.__H=null),null!=(t=S({},t)).__c&&(t.__c.__P===r&&(t.__c.__P=e),t.__c=null),t.__k=t.__k&&t.__k.map(function(t){return n(t,e,r)})),t}(this.__b,e,r.__O=r.__P)}this.__b=null}var u=t.__e&&s(d,null,n.fallback);return u&&(u.__h=null),[s(d,null,t.__e?null:n.children),u]};var T=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),t.i.removeChild(n)}}),p(s(D,{context:t.context},n.__v),t.l)):t.l&&t.componentWillUnmount()}function W(n,t){return s(I,{__v:n,i:t})}(M.prototype=new a).__e=function(n){var t=this,e=U(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),T(t,n,r)):u()};e?e(o):o()}},M.prototype.render=function(n){this.u=null,this.o=new Map;var t=v(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},M.prototype.componentDidUpdate=M.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){T(n,e,t)})};var j=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,P=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,V=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/i:/fil|che|ra/i).test(n)};function z(n,t,e){return null==t.__k&&(t.textContent=\"\"),p(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function B(n,t,e){return m(n,t),\"function\"==typeof e&&e(),n?n.__c:null}a.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(n){Object.defineProperty(a.prototype,n,{configurable:!0,get:function(){return this[\"UNSAFE_\"+n]},set:function(t){Object.defineProperty(this,n,{configurable:!0,writable:!0,value:t})}})});var H=h.event;function Z(){}function Y(){return this.cancelBubble}function $(){return this.defaultPrevented}h.event=function(n){return H&&(n=H(n)),n.persist=Z,n.isPropagationStopped=Y,n.isDefaultPrevented=$,n.nativeEvent=n};var q,G={configurable:!0,get:function(){return this.class}},J=h.vnode;h.vnode=function(n){var t=n.type,e=n.props,r=e;if(\"string\"==typeof t){for(var u in r={},e){var o=e[u];\"value\"===u&&\"defaultValue\"in e&&null==o||(\"defaultValue\"===u&&\"value\"in e&&null==e.value?u=\"value\":\"download\"===u&&!0===o?o=\"\":/ondoubleclick/i.test(u)?u=\"ondblclick\":/^onchange(textarea|input)/i.test(u+t)&&!V(e.type)?u=\"oninput\":/^on(Ani|Tra|Tou|BeforeInp)/.test(u)?u=u.toLowerCase():P.test(u)?u=u.replace(/[A-Z0-9]/,\"-$&\").toLowerCase():null===o&&(o=void 0),r[u]=o)}\"select\"==t&&r.multiple&&Array.isArray(r.value)&&(r.value=v(e.children).forEach(function(n){n.props.selected=-1!=r.value.indexOf(n.props.value)})),\"select\"==t&&null!=r.defaultValue&&(r.value=v(e.children).forEach(function(n){n.props.selected=r.multiple?-1!=r.defaultValue.indexOf(n.props.value):r.defaultValue==n.props.value})),n.props=r}t&&e.class!=e.className&&(G.enumerable=\"className\"in e,null!=e.className&&(r.class=e.className),Object.defineProperty(r,\"className\",G)),n.$$typeof=j,J&&J(n)};var K=h.__r;h.__r=function(n){K&&K(n),q=n.__c};var Q={ReactCurrentDispatcher:{current:{readContext:function(n){return q.__n[n.__c].props.value}}}},X=\"17.0.2\";function nn(n){return s.bind(null,n)}function tn(n){return!!n&&n.$$typeof===j}function en(n){return tn(n)?y.apply(null,arguments):n}function rn(n){return!!n.__k&&(p(null,n),!0)}function un(n){return n&&(n.base||1===n.nodeType&&n)||null}var on=function(n,t){return n(t)},ln=function(n,t){return n(t)},fn=d;export default{useState:n,useReducer:t,useEffect:e,useLayoutEffect:r,useRef:u,useImperativeHandle:o,useMemo:i,useCallback:l,useContext:f,useDebugValue:c,version:\"17.0.2\",Children:k,render:z,hydrate:B,unmountComponentAtNode:rn,createPortal:W,createElement:s,createContext:_,createFactory:nn,cloneElement:en,createRef:b,Fragment:d,isValidElement:tn,findDOMNode:un,Component:a,PureComponent:E,memo:g,forwardRef:x,flushSync:ln,unstable_batchedUpdates:on,StrictMode:d,Suspense:L,SuspenseList:M,lazy:F,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:Q};export{X as version,k as Children,z as render,B as hydrate,rn as unmountComponentAtNode,W as createPortal,nn as createFactory,en as cloneElement,tn as isValidElement,un as findDOMNode,E as PureComponent,g as memo,x as forwardRef,ln as flushSync,on as unstable_batchedUpdates,fn as StrictMode,L as Suspense,M as SuspenseList,F as lazy,Q as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED};\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 flushToDom: flushToDom,\n unmountComponentAtNode: unmountComponentAtNode,\n };\n}\n// HACKS...\n// TODO: lock version\n// TODO: link gh issues\nfunction flushToDom() {\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","/*!\nFullCalendar v5.9.0\nDocs & License: https://fullcalendar.io/\n(c) 2021 Adam Shaw\n*/\nimport './vdom.js';\nimport { __extends, __assign } from 'tslib';\nimport { render, createElement, CalendarRoot, CustomContentRenderContext, CalendarContent, unmountComponentAtNode, flushToDom, 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 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 else if (_this.isRendered) {\n _this.isRendered = false;\n unmountComponentAtNode(_this.el);\n _this.setClassNames([]);\n _this.setHeight('');\n }\n flushToDom();\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 _super.prototype.updateSize.call(this);\n flushToDom();\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
/ elements with colspans.\n SOLUTION: making individual