diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales-all.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales-all.js
deleted file mode 100644
index 4f0c52b9b4166b927b004de226d6d37d5ebe87df..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales-all.js
+++ /dev/null
@@ -1,1402 +0,0 @@
-[].push.apply(FullCalendar.globalLocales, function () {
-  'use strict';
-
-  var l0 = {
-    code: "af",
-    week: {
-      dow: 1, // Maandag is die eerste dag van die week.
-      doy: 4  // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
-    },
-    buttonText: {
-      prev: "Vorige",
-      next: "Volgende",
-      today: "Vandag",
-      year: "Jaar",
-      month: "Maand",
-      week: "Week",
-      day: "Dag",
-      list: "Agenda"
-    },
-    allDayText: "Heeldag",
-    moreLinkText: "Addisionele",
-    noEventsText: "Daar is geen gebeurtenisse nie"
-  };
-
-  var l1 = {
-    code: "ar-dz",
-    week: {
-      dow: 0, // Sunday is the first day of the week.
-      doy: 4  // The week that contains Jan 1st is the first week of the year.
-    },
-    direction: 'rtl',
-    buttonText: {
-      prev: "السابق",
-      next: "التالي",
-      today: "اليوم",
-      month: "شهر",
-      week: "أسبوع",
-      day: "يوم",
-      list: "أجندة"
-    },
-    weekText: "أسبوع",
-    allDayText: "اليوم كله",
-    moreLinkText: "أخرى",
-    noEventsText: "أي أحداث لعرض"
-  };
-
-  var l2 = {
-    code: "ar-kw",
-    week: {
-      dow: 0, // Sunday is the first day of the week.
-      doy: 12  // The week that contains Jan 1st is the first week of the year.
-    },
-    direction: 'rtl',
-    buttonText: {
-      prev: "السابق",
-      next: "التالي",
-      today: "اليوم",
-      month: "شهر",
-      week: "أسبوع",
-      day: "يوم",
-      list: "أجندة"
-    },
-    weekText: "أسبوع",
-    allDayText: "اليوم كله",
-    moreLinkText: "أخرى",
-    noEventsText: "أي أحداث لعرض"
-  };
-
-  var l3 = {
-    code: "ar-ly",
-    week: {
-      dow: 6, // Saturday is the first day of the week.
-      doy: 12  // The week that contains Jan 1st is the first week of the year.
-    },
-    direction: 'rtl',
-    buttonText: {
-      prev: "السابق",
-      next: "التالي",
-      today: "اليوم",
-      month: "شهر",
-      week: "أسبوع",
-      day: "يوم",
-      list: "أجندة"
-    },
-    weekText: "أسبوع",
-    allDayText: "اليوم كله",
-    moreLinkText: "أخرى",
-    noEventsText: "أي أحداث لعرض"
-  };
-
-  var l4 = {
-    code: "ar-ma",
-    week: {
-      dow: 6, // Saturday is the first day of the week.
-      doy: 12  // The week that contains Jan 1st is the first week of the year.
-    },
-    direction: 'rtl',
-    buttonText: {
-      prev: "السابق",
-      next: "التالي",
-      today: "اليوم",
-      month: "شهر",
-      week: "أسبوع",
-      day: "يوم",
-      list: "أجندة"
-    },
-    weekText: "أسبوع",
-    allDayText: "اليوم كله",
-    moreLinkText: "أخرى",
-    noEventsText: "أي أحداث لعرض"
-  };
-
-  var l5 = {
-    code: "ar-sa",
-    week: {
-      dow: 0, // Sunday is the first day of the week.
-      doy: 6  // The week that contains Jan 1st is the first week of the year.
-    },
-    direction: 'rtl',
-    buttonText: {
-      prev: "السابق",
-      next: "التالي",
-      today: "اليوم",
-      month: "شهر",
-      week: "أسبوع",
-      day: "يوم",
-      list: "أجندة"
-    },
-    weekText: "أسبوع",
-    allDayText: "اليوم كله",
-    moreLinkText: "أخرى",
-    noEventsText: "أي أحداث لعرض"
-  };
-
-  var l6 = {
-    code: "ar-tn",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4 // The week that contains Jan 4th is the first week of the year.
-    },
-    direction: 'rtl',
-    buttonText: {
-      prev: "السابق",
-      next: "التالي",
-      today: "اليوم",
-      month: "شهر",
-      week: "أسبوع",
-      day: "يوم",
-      list: "أجندة"
-    },
-    weekText: "أسبوع",
-    allDayText: "اليوم كله",
-    moreLinkText: "أخرى",
-    noEventsText: "أي أحداث لعرض"
-  };
-
-  var l7 = {
-    code: "ar",
-    week: {
-      dow: 6, // Saturday is the first day of the week.
-      doy: 12  // The week that contains Jan 1st is the first week of the year.
-    },
-    direction: 'rtl',
-    buttonText: {
-      prev: "السابق",
-      next: "التالي",
-      today: "اليوم",
-      month: "شهر",
-      week: "أسبوع",
-      day: "يوم",
-      list: "أجندة"
-    },
-    weekText: "أسبوع",
-    allDayText: "اليوم كله",
-    moreLinkText: "أخرى",
-    noEventsText: "أي أحداث لعرض"
-  };
-
-  var l8 = {
-    code: "az",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Əvvəl",
-      next: "Sonra",
-      today: "Bu Gün",
-      month: "Ay",
-      week: "Həftə",
-      day: "Gün",
-      list: "Gündəm"
-    },
-    weekText: "Həftə",
-    allDayText: "Bütün Gün",
-    moreLinkText: function(n) {
-      return "+ daha çox " + n;
-    },
-    noEventsText: "Göstərmək üçün hadisə yoxdur"
-  };
-
-  var l9 = {
-    code: "bg",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "назад",
-      next: "напред",
-      today: "днес",
-      month: "Месец",
-      week: "Седмица",
-      day: "Ден",
-      list: "График"
-    },
-    allDayText: "Цял ден",
-    moreLinkText: function(n) {
-      return "+още " + n;
-    },
-    noEventsText: "Няма събития за показване"
-  };
-
-  var l10 = {
-    code: "bs",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Prošli",
-      next: "Sljedeći",
-      today: "Danas",
-      month: "Mjesec",
-      week: "Sedmica",
-      day: "Dan",
-      list: "Raspored"
-    },
-    weekText: "Sed",
-    allDayText: "Cijeli dan",
-    moreLinkText: function(n) {
-      return "+ još " + n;
-    },
-    noEventsText: "Nema događaja za prikazivanje"
-  };
-
-  var l11 = {
-    code: "ca",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Anterior",
-      next: "Següent",
-      today: "Avui",
-      month: "Mes",
-      week: "Setmana",
-      day: "Dia",
-      list: "Agenda"
-    },
-    weekText: "Set",
-    allDayText: "Tot el dia",
-    moreLinkText: "més",
-    noEventsText: "No hi ha esdeveniments per mostrar"
-  };
-
-  var l12 = {
-    code: "cs",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Dříve",
-      next: "Později",
-      today: "Nyní",
-      month: "Měsíc",
-      week: "Týden",
-      day: "Den",
-      list: "Agenda"
-    },
-    weekText: "Týd",
-    allDayText: "Celý den",
-    moreLinkText: function(n) {
-      return "+další: " + n;
-    },
-    noEventsText: "Žádné akce k zobrazení"
-  };
-
-  var l13 = {
-    code: "da",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Forrige",
-      next: "Næste",
-      today: "I dag",
-      month: "MÃ¥ned",
-      week: "Uge",
-      day: "Dag",
-      list: "Agenda"
-    },
-    weekText: "Uge",
-    allDayText: "Hele dagen",
-    moreLinkText: "flere",
-    noEventsText: "Ingen arrangementer at vise"
-  };
-
-  var l14 = {
-    code: "de",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Zurück",
-      next: "Vor",
-      today: "Heute",
-      year: "Jahr",
-      month: "Monat",
-      week: "Woche",
-      day: "Tag",
-      list: "Terminübersicht"
-    },
-    weekText: "KW",
-    allDayText: "Ganztägig",
-    moreLinkText: function(n) {
-      return "+ weitere " + n;
-    },
-    noEventsText: "Keine Ereignisse anzuzeigen"
-  };
-
-  var l15 = {
-    code: "el",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Προηγούμενος",
-      next: "Επόμενος",
-      today: "Σήμερα",
-      month: "Μήνας",
-      week: "Εβδομάδα",
-      day: "Ημέρα",
-      list: "Ατζέντα"
-    },
-    weekText: "Εβδ",
-    allDayText: "Ολοήμερο",
-    moreLinkText: "περισσότερα",
-    noEventsText: "Δεν υπάρχουν γεγονότα προς εμφάνιση"
-  };
-
-  var l16 = {
-    code: "en-au",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    }
-  };
-
-  var l17 = {
-    code: "en-gb",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    }
-  };
-
-  var l18 = {
-    code: "en-nz",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    }
-  };
-
-  var l19 = {
-    code: "es",
-    week: {
-      dow: 0, // Sunday is the first day of the week.
-      doy: 6  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Ant",
-      next: "Sig",
-      today: "Hoy",
-      month: "Mes",
-      week: "Semana",
-      day: "Día",
-      list: "Agenda"
-    },
-    weekText: "Sm",
-    allDayText: "Todo el día",
-    moreLinkText: "más",
-    noEventsText: "No hay eventos para mostrar"
-  };
-
-  var l20 = {
-    code: "es",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Ant",
-      next: "Sig",
-      today: "Hoy",
-      month: "Mes",
-      week: "Semana",
-      day: "Día",
-      list: "Agenda"
-    },
-    weekText: "Sm",
-    allDayText: "Todo el día",
-    moreLinkText: "más",
-    noEventsText: "No hay eventos para mostrar"
-  };
-
-  var l21 = {
-    code: "et",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Eelnev",
-      next: "Järgnev",
-      today: "Täna",
-      month: "Kuu",
-      week: "Nädal",
-      day: "Päev",
-      list: "Päevakord"
-    },
-    weekText: "näd",
-    allDayText: "Kogu päev",
-    moreLinkText: function(n) {
-      return "+ veel " + n;
-    },
-    noEventsText: "Kuvamiseks puuduvad sündmused"
-  };
-
-  var l22 = {
-    code: "eu",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Aur",
-      next: "Hur",
-      today: "Gaur",
-      month: "Hilabetea",
-      week: "Astea",
-      day: "Eguna",
-      list: "Agenda"
-    },
-    weekText: "As",
-    allDayText: "Egun osoa",
-    moreLinkText: "gehiago",
-    noEventsText: "Ez dago ekitaldirik erakusteko"
-  };
-
-  var l23 = {
-    code: "fa",
-    week: {
-      dow: 6, // Saturday is the first day of the week.
-      doy: 12 // The week that contains Jan 1st is the first week of the year.
-    },
-    direction: 'rtl',
-    buttonText: {
-      prev: "قبلی",
-      next: "بعدی",
-      today: "امروز",
-      month: "ماه",
-      week: "هفته",
-      day: "روز",
-      list: "برنامه"
-    },
-    weekText: "هف",
-    allDayText: "تمام روز",
-    moreLinkText: function(n) {
-      return "بیش از " + n;
-    },
-    noEventsText: "هیچ رویدادی به نمایش"
-  };
-
-  var l24 = {
-    code: "fi",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Edellinen",
-      next: "Seuraava",
-      today: "Tänään",
-      month: "Kuukausi",
-      week: "Viikko",
-      day: "Päivä",
-      list: "Tapahtumat"
-    },
-    weekText: "Vk",
-    allDayText: "Koko päivä",
-    moreLinkText: "lisää",
-    noEventsText: "Ei näytettäviä tapahtumia"
-  };
-
-  var l25 = {
-    code: "fr",
-    buttonText: {
-      prev: "Précédent",
-      next: "Suivant",
-      today: "Aujourd'hui",
-      year: "Année",
-      month: "Mois",
-      week: "Semaine",
-      day: "Jour",
-      list: "Mon planning"
-    },
-    weekText: "Sem.",
-    allDayText: "Toute la journée",
-    moreLinkText: "en plus",
-    noEventsText: "Aucun événement à afficher"
-  };
-
-  var l26 = {
-    code: "fr-ch",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Précédent",
-      next: "Suivant",
-      today: "Courant",
-      year: "Année",
-      month: "Mois",
-      week: "Semaine",
-      day: "Jour",
-      list: "Mon planning"
-    },
-    weekText: "Sm",
-    allDayText: "Toute la journée",
-    moreLinkText: "en plus",
-    noEventsText: "Aucun événement à afficher"
-  };
-
-  var l27 = {
-    code: "fr",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Précédent",
-      next: "Suivant",
-      today: "Aujourd'hui",
-      year: "Année",
-      month: "Mois",
-      week: "Semaine",
-      day: "Jour",
-      list: "Planning"
-    },
-    weekText: "Sem.",
-    allDayText: "Toute la journée",
-    moreLinkText: "en plus",
-    noEventsText: "Aucun événement à afficher"
-  };
-
-  var l28 = {
-    code: "gl",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Ant",
-      next: "Seg",
-      today: "Hoxe",
-      month: "Mes",
-      week: "Semana",
-      day: "Día",
-      list: "Axenda"
-    },
-    weekText: "Sm",
-    allDayText: "Todo o día",
-    moreLinkText: "máis",
-    noEventsText: "Non hai eventos para amosar"
-  };
-
-  var l29 = {
-    code: "he",
-    direction: 'rtl',
-    buttonText: {
-      prev: "הקודם",
-      next: "הבא",
-      today: "היום",
-      month: "חודש",
-      week: "שבוע",
-      day: "יום",
-      list: "סדר יום"
-    },
-    allDayText: "כל היום",
-    moreLinkText: "אחר",
-    noEventsText: "אין אירועים להצגה",
-    weekText: "שבוע"
-  };
-
-  var l30 = {
-    code: "hi",
-    week: {
-      dow: 0, // Sunday is the first day of the week.
-      doy: 6  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "पिछला",
-      next: "अगला",
-      today: "आज",
-      month: "महीना",
-      week: "सप्ताह",
-      day: "दिन",
-      list: "कार्यसूची"
-    },
-    weekText: "हफ्ता",
-    allDayText: "सभी दिन",
-    moreLinkText: function(n) {
-      return "+अधिक " + n;
-    },
-    noEventsText: "कोई घटनाओं को प्रदर्शित करने के लिए"
-  };
-
-  var l31 = {
-    code: "hr",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Prijašnji",
-      next: "Sljedeći",
-      today: "Danas",
-      month: "Mjesec",
-      week: "Tjedan",
-      day: "Dan",
-      list: "Raspored"
-    },
-    weekText: "Tje",
-    allDayText: "Cijeli dan",
-    moreLinkText: function(n) {
-      return "+ još " + n;
-    },
-    noEventsText: "Nema događaja za prikaz"
-  };
-
-  var l32 = {
-    code: "hu",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "vissza",
-      next: "előre",
-      today: "ma",
-      month: "Hónap",
-      week: "Hét",
-      day: "Nap",
-      list: "Napló"
-    },
-    weekText: "Hét",
-    allDayText: "Egész nap",
-    moreLinkText: "további",
-    noEventsText: "Nincs megjeleníthető esemény"
-  };
-
-  var l33 = {
-    code: "id",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "mundur",
-      next: "maju",
-      today: "hari ini",
-      month: "Bulan",
-      week: "Minggu",
-      day: "Hari",
-      list: "Agenda"
-    },
-    weekText: "Mg",
-    allDayText: "Sehari penuh",
-    moreLinkText: "lebih",
-    noEventsText: "Tidak ada acara untuk ditampilkan"
-  };
-
-  var l34 = {
-    code: "is",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Fyrri",
-      next: "Næsti",
-      today: "Í dag",
-      month: "Mánuður",
-      week: "Vika",
-      day: "Dagur",
-      list: "Dagskrá"
-    },
-    weekText: "Vika",
-    allDayText: "Allan daginn",
-    moreLinkText: "meira",
-    noEventsText: "Engir viðburðir til að sýna"
-  };
-
-  var l35 = {
-    code: "it",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Prec",
-      next: "Succ",
-      today: "Oggi",
-      month: "Mese",
-      week: "Settimana",
-      day: "Giorno",
-      list: "Agenda"
-    },
-    weekText: "Sm",
-    allDayText: "Tutto il giorno",
-    moreLinkText: function(n) {
-      return "+altri " + n;
-    },
-    noEventsText: "Non ci sono eventi da visualizzare"
-  };
-
-  var l36 = {
-    code: "ja",
-    buttonText: {
-      prev: "前",
-      next: "次",
-      today: "今日",
-      month: "月",
-      week: "週",
-      day: "æ—¥",
-      list: "予定リスト"
-    },
-    weekText: "週",
-    allDayText: "終日",
-    moreLinkText: function(n) {
-      return "他 " + n + " 件";
-    },
-    noEventsText: "表示する予定はありません"
-  };
-
-  var l37 = {
-    code: "ka",
-    week: {
-      dow: 1,
-      doy: 7
-    },
-    buttonText: {
-      prev: "წინა",
-      next: "შემდეგი",
-      today: "დღეს",
-      month: "თვე",
-      week: "კვირა",
-      day: "დღე",
-      list: "დღის წესრიგი"
-    },
-    weekText: "კვ",
-    allDayText: "მთელი დღე",
-    moreLinkText: function(n) {
-      return "+ კიდევ " + n;
-    },
-    noEventsText: "ღონისძიებები არ არის"
-  };
-
-  var l38 = {
-    code: "kk",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Алдыңғы",
-      next: "Келесі",
-      today: "Бүгін",
-      month: "Ай",
-      week: "Апта",
-      day: "Күн",
-      list: "Күн тәртібі"
-    },
-    weekText: "Не",
-    allDayText: "Күні бойы",
-    moreLinkText: function(n) {
-      return "+ тағы " + n;
-    },
-    noEventsText: "Көрсету үшін оқиғалар жоқ"
-  };
-
-  var l39 = {
-    code: "ko",
-    buttonText: {
-      prev: "이전달",
-      next: "다음달",
-      today: "오늘",
-      month: "ì›”",
-      week: "주",
-      day: "일",
-      list: "일정목록"
-    },
-    weekText: "주",
-    allDayText: "종일",
-    moreLinkText: "개",
-    noEventsText: "일정이 없습니다"
-  };
-
-  var l40 = {
-    code: "lb",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Zréck",
-      next: "Weider",
-      today: "Haut",
-      month: "Mount",
-      week: "Woch",
-      day: "Dag",
-      list: "Terminiwwersiicht"
-    },
-    weekText: "W",
-    allDayText: "Ganzen Dag",
-    moreLinkText: "méi",
-    noEventsText: "Nee Evenementer ze affichéieren"
-  };
-
-  var l41 = {
-    code: "lt",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Atgal",
-      next: "Pirmyn",
-      today: "Å iandien",
-      month: "MÄ—nuo",
-      week: "SavaitÄ—",
-      day: "Diena",
-      list: "DarbotvarkÄ—"
-    },
-    weekText: "SAV",
-    allDayText: "VisÄ… dienÄ…",
-    moreLinkText: "daugiau",
-    noEventsText: "Nėra įvykių rodyti"
-  };
-
-  var l42 = {
-    code: "lv",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Iepr.",
-      next: "Nāk.",
-      today: "Å odien",
-      month: "MÄ“nesis",
-      week: "Nedēļa",
-      day: "Diena",
-      list: "Dienas kārtība"
-    },
-    weekText: "Ned.",
-    allDayText: "Visu dienu",
-    moreLinkText: function(n) {
-      return "+vēl " + n;
-    },
-    noEventsText: "Nav notikumu"
-  };
-
-  var l43 = {
-    code: "mk",
-    buttonText: {
-      prev: "претходно",
-      next: "следно",
-      today: "Денес",
-      month: "Месец",
-      week: "Недела",
-      day: "Ден",
-      list: "График"
-    },
-    weekText: "Сед",
-    allDayText: "Цел ден",
-    moreLinkText: function(n) {
-      return "+повеќе " + n;
-    },
-    noEventsText: "Нема настани за прикажување"
-  };
-
-  var l44 = {
-    code: "ms",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Sebelum",
-      next: "Selepas",
-      today: "hari ini",
-      month: "Bulan",
-      week: "Minggu",
-      day: "Hari",
-      list: "Agenda"
-    },
-    weekText: "Mg",
-    allDayText: "Sepanjang hari",
-    moreLinkText: function(n) {
-      return "masih ada " + n + " acara";
-    },
-    noEventsText: "Tiada peristiwa untuk dipaparkan"
-  };
-
-  var l45 = {
-    code: "nb",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Forrige",
-      next: "Neste",
-      today: "I dag",
-      month: "MÃ¥ned",
-      week: "Uke",
-      day: "Dag",
-      list: "Agenda"
-    },
-    weekText: "Uke",
-    allDayText: "Hele dagen",
-    moreLinkText: "til",
-    noEventsText: "Ingen hendelser å vise"
-  };
-
-  var l46 = {
-    code: "nl",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Voorgaand",
-      next: "Volgende",
-      today: "Vandaag",
-      year: "Jaar",
-      month: "Maand",
-      week: "Week",
-      day: "Dag",
-      list: "Agenda"
-    },
-    allDayText: "Hele dag",
-    moreLinkText: "extra",
-    noEventsText: "Geen evenementen om te laten zien"
-  };
-
-  var l47 = {
-    code: "nn",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Førre",
-      next: "Neste",
-      today: "I dag",
-      month: "MÃ¥nad",
-      week: "Veke",
-      day: "Dag",
-      list: "Agenda"
-    },
-    weekText: "Veke",
-    allDayText: "Heile dagen",
-    moreLinkText: "til",
-    noEventsText: "Ingen hendelser å vise"
-  };
-
-  var l48 = {
-    code: "pl",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Poprzedni",
-      next: "Następny",
-      today: "DziÅ›",
-      month: "MiesiÄ…c",
-      week: "Tydzień",
-      day: "Dzień",
-      list: "Plan dnia"
-    },
-    weekText: "Tydz",
-    allDayText: "Cały dzień",
-    moreLinkText: "więcej",
-    noEventsText: "Brak wydarzeń do wyświetlenia"
-  };
-
-  var l49 = {
-    code: "pt-br",
-    buttonText: {
-      prev: "Anterior",
-      next: "Próximo",
-      today: "Hoje",
-      month: "Mês",
-      week: "Semana",
-      day: "Dia",
-      list: "Lista"
-    },
-    weekText: "Sm",
-    allDayText: "dia inteiro",
-    moreLinkText: function(n) {
-      return "mais +" + n;
-    },
-    noEventsText: "Não há eventos para mostrar"
-  };
-
-  var l50 = {
-    code: "pt",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Anterior",
-      next: "Seguinte",
-      today: "Hoje",
-      month: "Mês",
-      week: "Semana",
-      day: "Dia",
-      list: "Agenda"
-    },
-    weekText: "Sem",
-    allDayText: "Todo o dia",
-    moreLinkText: "mais",
-    noEventsText: "Não há eventos para mostrar"
-  };
-
-  var l51 = {
-    code: "ro",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "precedentă",
-      next: "următoare",
-      today: "Azi",
-      month: "Lună",
-      week: "Săptămână",
-      day: "Zi",
-      list: "Agendă"
-    },
-    weekText: "Săpt",
-    allDayText: "Toată ziua",
-    moreLinkText: function(n) {
-      return "+alte " + n;
-    },
-    noEventsText: "Nu există evenimente de afișat"
-  };
-
-  var l52 = {
-    code: "ru",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Пред",
-      next: "След",
-      today: "Сегодня",
-      month: "Месяц",
-      week: "Неделя",
-      day: "День",
-      list: "Повестка дня"
-    },
-    weekText: "Нед",
-    allDayText: "Весь день",
-    moreLinkText: function(n) {
-      return "+ ещё " + n;
-    },
-    noEventsText: "Нет событий для отображения"
-  };
-
-  var l53 = {
-    code: "sk",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Predchádzajúci",
-      next: "Nasledujúci",
-      today: "Dnes",
-      month: "Mesiac",
-      week: "Týždeň",
-      day: "Deň",
-      list: "Rozvrh"
-    },
-    weekText: "Ty",
-    allDayText: "Celý deň",
-    moreLinkText: function(n) {
-      return "+ďalšie: " + n;
-    },
-    noEventsText: "Žiadne akcie na zobrazenie"
-  };
-
-  var l54 = {
-    code: "sl",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Prejšnji",
-      next: "Naslednji",
-      today: "Trenutni",
-      month: "Mesec",
-      week: "Teden",
-      day: "Dan",
-      list: "Dnevni red"
-    },
-    weekText: "Teden",
-    allDayText: "Ves dan",
-    moreLinkText: "več",
-    noEventsText: "Ni dogodkov za prikaz"
-  };
-
-  var l55 = {
-    code: "sq",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "mbrapa",
-      next: "Përpara",
-      today: "sot",
-      month: "Muaj",
-      week: "Javë",
-      day: "Ditë",
-      list: "Listë"
-    },
-    weekText: "Ja",
-    allDayText: "Gjithë ditën",
-    moreLinkText: function(n) {
-      return "+më tepër " + n;
-    },
-    noEventsText: "Nuk ka evente për të shfaqur"
-  };
-
-  var l56 = {
-    code: "sr-cyrl",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Претходна",
-      next: "следећи",
-      today: "Данас",
-      month: "Месец",
-      week: "Недеља",
-      day: "Дан",
-      list: "Планер"
-    },
-    weekText: "Сед",
-    allDayText: "Цео дан",
-    moreLinkText: function(n) {
-      return "+ још " + n;
-    },
-    noEventsText: "Нема догађаја за приказ"
-  };
-
-  var l57 = {
-    code: "sr",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Prethodna",
-      next: "Sledeći",
-      today: "Danas",
-      month: "Mеsеc",
-      week: "Nеdеlja",
-      day: "Dan",
-      list: "Planеr"
-    },
-    weekText: "Sed",
-    allDayText: "Cеo dan",
-    moreLinkText: function(n) {
-      return "+ još " + n;
-    },
-    noEventsText: "Nеma događaja za prikaz"
-  };
-
-  var l58 = {
-    code: "sv",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Förra",
-      next: "Nästa",
-      today: "Idag",
-      month: "MÃ¥nad",
-      week: "Vecka",
-      day: "Dag",
-      list: "Program"
-    },
-    weekText: "v.",
-    allDayText: "Heldag",
-    moreLinkText: "till",
-    noEventsText: "Inga händelser att visa"
-  };
-
-  var l59 = {
-    code: "th",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "ก่อนหน้า",
-      next: "ถัดไป",
-      prevYear: 'ปีก่อนหน้า',
-      nextYear: 'ปีถัดไป',
-      year: 'ปี',
-      today: "วันนี้",
-      month: "เดือน",
-      week: "สัปดาห์",
-      day: "วัน",
-      list: "กำหนดการ"
-    },
-    weekText: "สัปดาห์",
-    allDayText: "ตลอดวัน",
-    moreLinkText: "เพิ่มเติม",
-    noEventsText: "ไม่มีกิจกรรมที่จะแสดง"
-  };
-
-  var l60 = {
-    code: "tr",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "geri",
-      next: "ileri",
-      today: "bugün",
-      month: "Ay",
-      week: "Hafta",
-      day: "Gün",
-      list: "Ajanda"
-    },
-    weekText: "Hf",
-    allDayText: "Tüm gün",
-    moreLinkText: "daha fazla",
-    noEventsText: "Gösterilecek etkinlik yok"
-  };
-
-  var l61 = {
-    code: "ug",
-    buttonText: {
-      month: "ئاي",
-      week: "ھەپتە",
-      day: "ÙƒÛˆÙ†",
-      list: "كۈنتەرتىپ"
-    },
-    allDayText: "پۈتۈن كۈن"
-  };
-
-  var l62 = {
-    code: "uk",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Попередній",
-      next: "далі",
-      today: "Сьогодні",
-      month: "Місяць",
-      week: "Тиждень",
-      day: "День",
-      list: "Порядок денний"
-    },
-    weekText: "Тиж",
-    allDayText: "Увесь день",
-    moreLinkText: function(n) {
-      return "+ще " + n + "...";
-    },
-    noEventsText: "Немає подій для відображення"
-  };
-
-  var l63 = {
-    code: "uz",
-    buttonText: {
-      month: "Oy",
-      week: "Xafta",
-      day: "Kun",
-      list: "Kun tartibi"
-    },
-    allDayText: "Kun bo'yi",
-    moreLinkText: function(n) {
-      return "+ yana " + n;
-    },
-    noEventsText: "Ko'rsatish uchun voqealar yo'q"
-  };
-
-  var l64 = {
-    code: "vi",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "TrÆ°á»›c",
-      next: "Tiếp",
-      today: "Hôm nay",
-      month: "Tháng",
-      week: "Tuần",
-      day: "Ngày",
-      list: "Lịch biểu"
-    },
-    weekText: "Tu",
-    allDayText: "Cả ngày",
-    moreLinkText: function(n) {
-      return "+ thêm " + n;
-    },
-    noEventsText: "Không có sự kiện để hiển thị"
-  };
-
-  var l65 = {
-    code: "zh-cn",
-    week: {
-      // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "上月",
-      next: "下月",
-      today: "今天",
-      month: "月",
-      week: "周",
-      day: "æ—¥",
-      list: "日程"
-    },
-    weekText: "周",
-    allDayText: "全天",
-    moreLinkText: function(n) {
-      return "另外 " + n + " 个";
-    },
-    noEventsText: "没有事件显示"
-  };
-
-  var l66 = {
-    code: "zh-tw",
-    buttonText: {
-      prev: "上月",
-      next: "下月",
-      today: "今天",
-      month: "月",
-      week: "週",
-      day: "天",
-      list: "活動列表"
-    },
-    weekText: "周",
-    allDayText: "整天",
-    moreLinkText: '顯示更多',
-    noEventsText: "没有任何活動"
-  };
-
-  var localesAll = [
-    l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15, l16, l17, l18, l19, l20, l21, l22, l23, l24, l25, l26, l27, l28, l29, l30, l31, l32, l33, l34, l35, l36, l37, l38, l39, l40, l41, l42, l43, l44, l45, l46, l47, l48, l49, l50, l51, l52, l53, l54, l55, l56, l57, l58, l59, l60, l61, l62, l63, l64, l65, l66, 
-  ];
-
-  return localesAll;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales-all.min.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales-all.min.js
deleted file mode 100644
index c15382ed3ffe54e11a16ce35d0b51311e31610d9..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales-all.min.js
+++ /dev/null
@@ -1 +0,0 @@
-[].push.apply(FullCalendar.globalLocales,function(){"use strict";return[{code:"af",week:{dow:1,doy:4},buttonText:{prev:"Vorige",next:"Volgende",today:"Vandag",year:"Jaar",month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Heeldag",moreLinkText:"Addisionele",noEventsText:"Daar is geen gebeurtenisse nie"},{code:"ar-dz",week:{dow:0,doy:4},direction:"rtl",buttonText:{prev:"السابق",next:"التالي",today:"اليوم",month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},weekText:"أسبوع",allDayText:"اليوم كله",moreLinkText:"أخرى",noEventsText:"أي أحداث لعرض"},{code:"ar-kw",week:{dow:0,doy:12},direction:"rtl",buttonText:{prev:"السابق",next:"التالي",today:"اليوم",month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},weekText:"أسبوع",allDayText:"اليوم كله",moreLinkText:"أخرى",noEventsText:"أي أحداث لعرض"},{code:"ar-ly",week:{dow:6,doy:12},direction:"rtl",buttonText:{prev:"السابق",next:"التالي",today:"اليوم",month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},weekText:"أسبوع",allDayText:"اليوم كله",moreLinkText:"أخرى",noEventsText:"أي أحداث لعرض"},{code:"ar-ma",week:{dow:6,doy:12},direction:"rtl",buttonText:{prev:"السابق",next:"التالي",today:"اليوم",month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},weekText:"أسبوع",allDayText:"اليوم كله",moreLinkText:"أخرى",noEventsText:"أي أحداث لعرض"},{code:"ar-sa",week:{dow:0,doy:6},direction:"rtl",buttonText:{prev:"السابق",next:"التالي",today:"اليوم",month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},weekText:"أسبوع",allDayText:"اليوم كله",moreLinkText:"أخرى",noEventsText:"أي أحداث لعرض"},{code:"ar-tn",week:{dow:1,doy:4},direction:"rtl",buttonText:{prev:"السابق",next:"التالي",today:"اليوم",month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},weekText:"أسبوع",allDayText:"اليوم كله",moreLinkText:"أخرى",noEventsText:"أي أحداث لعرض"},{code:"ar",week:{dow:6,doy:12},direction:"rtl",buttonText:{prev:"السابق",next:"التالي",today:"اليوم",month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},weekText:"أسبوع",allDayText:"اليوم كله",moreLinkText:"أخرى",noEventsText:"أي أحداث لعرض"},{code:"az",week:{dow:1,doy:4},buttonText:{prev:"Əvvəl",next:"Sonra",today:"Bu Gün",month:"Ay",week:"Həftə",day:"Gün",list:"Gündəm"},weekText:"Həftə",allDayText:"Bütün Gün",moreLinkText:function(e){return"+ daha çox "+e},noEventsText:"Göstərmək üçün hadisə yoxdur"},{code:"bg",week:{dow:1,doy:7},buttonText:{prev:"назад",next:"напред",today:"днес",month:"Месец",week:"Седмица",day:"Ден",list:"График"},allDayText:"Цял ден",moreLinkText:function(e){return"+още "+e},noEventsText:"Няма събития за показване"},{code:"bs",week:{dow:1,doy:7},buttonText:{prev:"Prošli",next:"Sljedeći",today:"Danas",month:"Mjesec",week:"Sedmica",day:"Dan",list:"Raspored"},weekText:"Sed",allDayText:"Cijeli dan",moreLinkText:function(e){return"+ još "+e},noEventsText:"Nema događaja za prikazivanje"},{code:"ca",week:{dow:1,doy:4},buttonText:{prev:"Anterior",next:"Següent",today:"Avui",month:"Mes",week:"Setmana",day:"Dia",list:"Agenda"},weekText:"Set",allDayText:"Tot el dia",moreLinkText:"més",noEventsText:"No hi ha esdeveniments per mostrar"},{code:"cs",week:{dow:1,doy:4},buttonText:{prev:"Dříve",next:"Později",today:"Nyní",month:"Měsíc",week:"Týden",day:"Den",list:"Agenda"},weekText:"Týd",allDayText:"Celý den",moreLinkText:function(e){return"+další: "+e},noEventsText:"Žádné akce k zobrazení"},{code:"da",week:{dow:1,doy:4},buttonText:{prev:"Forrige",next:"Næste",today:"I dag",month:"Måned",week:"Uge",day:"Dag",list:"Agenda"},weekText:"Uge",allDayText:"Hele dagen",moreLinkText:"flere",noEventsText:"Ingen arrangementer at vise"},{code:"de",week:{dow:1,doy:4},buttonText:{prev:"Zurück",next:"Vor",today:"Heute",year:"Jahr",month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},weekText:"KW",allDayText:"Ganztägig",moreLinkText:function(e){return"+ weitere "+e},noEventsText:"Keine Ereignisse anzuzeigen"},{code:"el",week:{dow:1,doy:4},buttonText:{prev:"Προηγούμενος",next:"Επόμενος",today:"Σήμερα",month:"Μήνας",week:"Εβδομάδα",day:"Ημέρα",list:"Ατζέντα"},weekText:"Εβδ",allDayText:"Ολοήμερο",moreLinkText:"περισσότερα",noEventsText:"Δεν υπάρχουν γεγονότα προς εμφάνιση"},{code:"en-au",week:{dow:1,doy:4}},{code:"en-gb",week:{dow:1,doy:4}},{code:"en-nz",week:{dow:1,doy:4}},{code:"es",week:{dow:0,doy:6},buttonText:{prev:"Ant",next:"Sig",today:"Hoy",month:"Mes",week:"Semana",day:"Día",list:"Agenda"},weekText:"Sm",allDayText:"Todo el día",moreLinkText:"más",noEventsText:"No hay eventos para mostrar"},{code:"es",week:{dow:1,doy:4},buttonText:{prev:"Ant",next:"Sig",today:"Hoy",month:"Mes",week:"Semana",day:"Día",list:"Agenda"},weekText:"Sm",allDayText:"Todo el día",moreLinkText:"más",noEventsText:"No hay eventos para mostrar"},{code:"et",week:{dow:1,doy:4},buttonText:{prev:"Eelnev",next:"Järgnev",today:"Täna",month:"Kuu",week:"Nädal",day:"Päev",list:"Päevakord"},weekText:"näd",allDayText:"Kogu päev",moreLinkText:function(e){return"+ veel "+e},noEventsText:"Kuvamiseks puuduvad sündmused"},{code:"eu",week:{dow:1,doy:7},buttonText:{prev:"Aur",next:"Hur",today:"Gaur",month:"Hilabetea",week:"Astea",day:"Eguna",list:"Agenda"},weekText:"As",allDayText:"Egun osoa",moreLinkText:"gehiago",noEventsText:"Ez dago ekitaldirik erakusteko"},{code:"fa",week:{dow:6,doy:12},direction:"rtl",buttonText:{prev:"قبلی",next:"بعدی",today:"امروز",month:"ماه",week:"هفته",day:"روز",list:"برنامه"},weekText:"هف",allDayText:"تمام روز",moreLinkText:function(e){return"بیش از "+e},noEventsText:"هیچ رویدادی به نمایش"},{code:"fi",week:{dow:1,doy:4},buttonText:{prev:"Edellinen",next:"Seuraava",today:"Tänään",month:"Kuukausi",week:"Viikko",day:"Päivä",list:"Tapahtumat"},weekText:"Vk",allDayText:"Koko päivä",moreLinkText:"lisää",noEventsText:"Ei näytettäviä tapahtumia"},{code:"fr",buttonText:{prev:"Précédent",next:"Suivant",today:"Aujourd'hui",year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},weekText:"Sem.",allDayText:"Toute la journée",moreLinkText:"en plus",noEventsText:"Aucun événement à afficher"},{code:"fr-ch",week:{dow:1,doy:4},buttonText:{prev:"Précédent",next:"Suivant",today:"Courant",year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},weekText:"Sm",allDayText:"Toute la journée",moreLinkText:"en plus",noEventsText:"Aucun événement à afficher"},{code:"fr",week:{dow:1,doy:4},buttonText:{prev:"Précédent",next:"Suivant",today:"Aujourd'hui",year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Planning"},weekText:"Sem.",allDayText:"Toute la journée",moreLinkText:"en plus",noEventsText:"Aucun événement à afficher"},{code:"gl",week:{dow:1,doy:4},buttonText:{prev:"Ant",next:"Seg",today:"Hoxe",month:"Mes",week:"Semana",day:"Día",list:"Axenda"},weekText:"Sm",allDayText:"Todo o día",moreLinkText:"máis",noEventsText:"Non hai eventos para amosar"},{code:"he",direction:"rtl",buttonText:{prev:"הקודם",next:"הבא",today:"היום",month:"חודש",week:"שבוע",day:"יום",list:"סדר יום"},allDayText:"כל היום",moreLinkText:"אחר",noEventsText:"אין אירועים להצגה",weekText:"שבוע"},{code:"hi",week:{dow:0,doy:6},buttonText:{prev:"पिछला",next:"अगला",today:"आज",month:"महीना",week:"सप्ताह",day:"दिन",list:"कार्यसूची"},weekText:"हफ्ता",allDayText:"सभी दिन",moreLinkText:function(e){return"+अधिक "+e},noEventsText:"कोई घटनाओं को प्रदर्शित करने के लिए"},{code:"hr",week:{dow:1,doy:7},buttonText:{prev:"Prijašnji",next:"Sljedeći",today:"Danas",month:"Mjesec",week:"Tjedan",day:"Dan",list:"Raspored"},weekText:"Tje",allDayText:"Cijeli dan",moreLinkText:function(e){return"+ još "+e},noEventsText:"Nema događaja za prikaz"},{code:"hu",week:{dow:1,doy:4},buttonText:{prev:"vissza",next:"előre",today:"ma",month:"Hónap",week:"Hét",day:"Nap",list:"Napló"},weekText:"Hét",allDayText:"Egész nap",moreLinkText:"további",noEventsText:"Nincs megjeleníthető esemény"},{code:"id",week:{dow:1,doy:7},buttonText:{prev:"mundur",next:"maju",today:"hari ini",month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},weekText:"Mg",allDayText:"Sehari penuh",moreLinkText:"lebih",noEventsText:"Tidak ada acara untuk ditampilkan"},{code:"is",week:{dow:1,doy:4},buttonText:{prev:"Fyrri",next:"Næsti",today:"Í dag",month:"Mánuður",week:"Vika",day:"Dagur",list:"Dagskrá"},weekText:"Vika",allDayText:"Allan daginn",moreLinkText:"meira",noEventsText:"Engir viðburðir til að sýna"},{code:"it",week:{dow:1,doy:4},buttonText:{prev:"Prec",next:"Succ",today:"Oggi",month:"Mese",week:"Settimana",day:"Giorno",list:"Agenda"},weekText:"Sm",allDayText:"Tutto il giorno",moreLinkText:function(e){return"+altri "+e},noEventsText:"Non ci sono eventi da visualizzare"},{code:"ja",buttonText:{prev:"前",next:"次",today:"今日",month:"月",week:"週",day:"日",list:"予定リスト"},weekText:"週",allDayText:"終日",moreLinkText:function(e){return"他 "+e+" 件"},noEventsText:"表示する予定はありません"},{code:"ka",week:{dow:1,doy:7},buttonText:{prev:"წინა",next:"შემდეგი",today:"დღეს",month:"თვე",week:"კვირა",day:"დღე",list:"დღის წესრიგი"},weekText:"კვ",allDayText:"მთელი დღე",moreLinkText:function(e){return"+ კიდევ "+e},noEventsText:"ღონისძიებები არ არის"},{code:"kk",week:{dow:1,doy:7},buttonText:{prev:"Алдыңғы",next:"Келесі",today:"Бүгін",month:"Ай",week:"Апта",day:"Күн",list:"Күн тәртібі"},weekText:"Не",allDayText:"Күні бойы",moreLinkText:function(e){return"+ тағы "+e},noEventsText:"Көрсету үшін оқиғалар жоқ"},{code:"ko",buttonText:{prev:"이전달",next:"다음달",today:"오늘",month:"월",week:"주",day:"일",list:"일정목록"},weekText:"주",allDayText:"종일",moreLinkText:"개",noEventsText:"일정이 없습니다"},{code:"lb",week:{dow:1,doy:4},buttonText:{prev:"Zréck",next:"Weider",today:"Haut",month:"Mount",week:"Woch",day:"Dag",list:"Terminiwwersiicht"},weekText:"W",allDayText:"Ganzen Dag",moreLinkText:"méi",noEventsText:"Nee Evenementer ze affichéieren"},{code:"lt",week:{dow:1,doy:4},buttonText:{prev:"Atgal",next:"Pirmyn",today:"Šiandien",month:"Mėnuo",week:"Savaitė",day:"Diena",list:"Darbotvarkė"},weekText:"SAV",allDayText:"Visą dieną",moreLinkText:"daugiau",noEventsText:"Nėra įvykių rodyti"},{code:"lv",week:{dow:1,doy:4},buttonText:{prev:"Iepr.",next:"Nāk.",today:"Šodien",month:"Mēnesis",week:"Nedēļa",day:"Diena",list:"Dienas kārtība"},weekText:"Ned.",allDayText:"Visu dienu",moreLinkText:function(e){return"+vēl "+e},noEventsText:"Nav notikumu"},{code:"mk",buttonText:{prev:"претходно",next:"следно",today:"Денес",month:"Месец",week:"Недела",day:"Ден",list:"График"},weekText:"Сед",allDayText:"Цел ден",moreLinkText:function(e){return"+повеќе "+e},noEventsText:"Нема настани за прикажување"},{code:"ms",week:{dow:1,doy:7},buttonText:{prev:"Sebelum",next:"Selepas",today:"hari ini",month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},weekText:"Mg",allDayText:"Sepanjang hari",moreLinkText:function(e){return"masih ada "+e+" acara"},noEventsText:"Tiada peristiwa untuk dipaparkan"},{code:"nb",week:{dow:1,doy:4},buttonText:{prev:"Forrige",next:"Neste",today:"I dag",month:"Måned",week:"Uke",day:"Dag",list:"Agenda"},weekText:"Uke",allDayText:"Hele dagen",moreLinkText:"til",noEventsText:"Ingen hendelser å vise"},{code:"nl",week:{dow:1,doy:4},buttonText:{prev:"Voorgaand",next:"Volgende",today:"Vandaag",year:"Jaar",month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",moreLinkText:"extra",noEventsText:"Geen evenementen om te laten zien"},{code:"nn",week:{dow:1,doy:4},buttonText:{prev:"Førre",next:"Neste",today:"I dag",month:"Månad",week:"Veke",day:"Dag",list:"Agenda"},weekText:"Veke",allDayText:"Heile dagen",moreLinkText:"til",noEventsText:"Ingen hendelser å vise"},{code:"pl",week:{dow:1,doy:4},buttonText:{prev:"Poprzedni",next:"Następny",today:"Dziś",month:"Miesiąc",week:"Tydzień",day:"Dzień",list:"Plan dnia"},weekText:"Tydz",allDayText:"Cały dzień",moreLinkText:"więcej",noEventsText:"Brak wydarzeń do wyświetlenia"},{code:"pt-br",buttonText:{prev:"Anterior",next:"Próximo",today:"Hoje",month:"Mês",week:"Semana",day:"Dia",list:"Lista"},weekText:"Sm",allDayText:"dia inteiro",moreLinkText:function(e){return"mais +"+e},noEventsText:"Não há eventos para mostrar"},{code:"pt",week:{dow:1,doy:4},buttonText:{prev:"Anterior",next:"Seguinte",today:"Hoje",month:"Mês",week:"Semana",day:"Dia",list:"Agenda"},weekText:"Sem",allDayText:"Todo o dia",moreLinkText:"mais",noEventsText:"Não há eventos para mostrar"},{code:"ro",week:{dow:1,doy:7},buttonText:{prev:"precedentă",next:"următoare",today:"Azi",month:"Lună",week:"Săptămână",day:"Zi",list:"Agendă"},weekText:"Săpt",allDayText:"Toată ziua",moreLinkText:function(e){return"+alte "+e},noEventsText:"Nu există evenimente de afișat"},{code:"ru",week:{dow:1,doy:4},buttonText:{prev:"Пред",next:"След",today:"Сегодня",month:"Месяц",week:"Неделя",day:"День",list:"Повестка дня"},weekText:"Нед",allDayText:"Весь день",moreLinkText:function(e){return"+ ещё "+e},noEventsText:"Нет событий для отображения"},{code:"sk",week:{dow:1,doy:4},buttonText:{prev:"Predchádzajúci",next:"Nasledujúci",today:"Dnes",month:"Mesiac",week:"Týždeň",day:"Deň",list:"Rozvrh"},weekText:"Ty",allDayText:"Celý deň",moreLinkText:function(e){return"+ďalšie: "+e},noEventsText:"Žiadne akcie na zobrazenie"},{code:"sl",week:{dow:1,doy:7},buttonText:{prev:"Prejšnji",next:"Naslednji",today:"Trenutni",month:"Mesec",week:"Teden",day:"Dan",list:"Dnevni red"},weekText:"Teden",allDayText:"Ves dan",moreLinkText:"več",noEventsText:"Ni dogodkov za prikaz"},{code:"sq",week:{dow:1,doy:4},buttonText:{prev:"mbrapa",next:"Përpara",today:"sot",month:"Muaj",week:"Javë",day:"Ditë",list:"Listë"},weekText:"Ja",allDayText:"Gjithë ditën",moreLinkText:function(e){return"+më tepër "+e},noEventsText:"Nuk ka evente për të shfaqur"},{code:"sr-cyrl",week:{dow:1,doy:7},buttonText:{prev:"Претходна",next:"следећи",today:"Данас",month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},weekText:"Сед",allDayText:"Цео дан",moreLinkText:function(e){return"+ још "+e},noEventsText:"Нема догађаја за приказ"},{code:"sr",week:{dow:1,doy:7},buttonText:{prev:"Prethodna",next:"Sledeći",today:"Danas",month:"Mеsеc",week:"Nеdеlja",day:"Dan",list:"Planеr"},weekText:"Sed",allDayText:"Cеo dan",moreLinkText:function(e){return"+ još "+e},noEventsText:"Nеma događaja za prikaz"},{code:"sv",week:{dow:1,doy:4},buttonText:{prev:"Förra",next:"Nästa",today:"Idag",month:"Månad",week:"Vecka",day:"Dag",list:"Program"},weekText:"v.",allDayText:"Heldag",moreLinkText:"till",noEventsText:"Inga händelser att visa"},{code:"th",week:{dow:1,doy:4},buttonText:{prev:"ก่อนหน้า",next:"ถัดไป",prevYear:"ปีก่อนหน้า",nextYear:"ปีถัดไป",year:"ปี",today:"วันนี้",month:"เดือน",week:"สัปดาห์",day:"วัน",list:"กำหนดการ"},weekText:"สัปดาห์",allDayText:"ตลอดวัน",moreLinkText:"เพิ่มเติม",noEventsText:"ไม่มีกิจกรรมที่จะแสดง"},{code:"tr",week:{dow:1,doy:7},buttonText:{prev:"geri",next:"ileri",today:"bugün",month:"Ay",week:"Hafta",day:"Gün",list:"Ajanda"},weekText:"Hf",allDayText:"Tüm gün",moreLinkText:"daha fazla",noEventsText:"Gösterilecek etkinlik yok"},{code:"ug",buttonText:{month:"ئاي",week:"ھەپتە",day:"كۈن",list:"كۈنتەرتىپ"},allDayText:"پۈتۈن كۈن"},{code:"uk",week:{dow:1,doy:7},buttonText:{prev:"Попередній",next:"далі",today:"Сьогодні",month:"Місяць",week:"Тиждень",day:"День",list:"Порядок денний"},weekText:"Тиж",allDayText:"Увесь день",moreLinkText:function(e){return"+ще "+e+"..."},noEventsText:"Немає подій для відображення"},{code:"uz",buttonText:{month:"Oy",week:"Xafta",day:"Kun",list:"Kun tartibi"},allDayText:"Kun bo'yi",moreLinkText:function(e){return"+ yana "+e},noEventsText:"Ko'rsatish uchun voqealar yo'q"},{code:"vi",week:{dow:1,doy:4},buttonText:{prev:"Trước",next:"Tiếp",today:"Hôm nay",month:"Tháng",week:"Tuần",day:"Ngày",list:"Lịch biểu"},weekText:"Tu",allDayText:"Cả ngày",moreLinkText:function(e){return"+ thêm "+e},noEventsText:"Không có sự kiện để hiển thị"},{code:"zh-cn",week:{dow:1,doy:4},buttonText:{prev:"上月",next:"下月",today:"今天",month:"月",week:"周",day:"日",list:"日程"},weekText:"周",allDayText:"全天",moreLinkText:function(e){return"另外 "+e+" 个"},noEventsText:"没有事件显示"},{code:"zh-tw",buttonText:{prev:"上月",next:"下月",today:"今天",month:"月",week:"週",day:"天",list:"活動列表"},weekText:"周",allDayText:"整天",moreLinkText:"顯示更多",noEventsText:"没有任何活動"}]}());
\ No newline at end of file
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/af.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/af.js
deleted file mode 100644
index a9535f5c4edec5af8ced9d8306da9b312c3ee94a..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/af.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var af = {
-    code: "af",
-    week: {
-      dow: 1, // Maandag is die eerste dag van die week.
-      doy: 4  // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
-    },
-    buttonText: {
-      prev: "Vorige",
-      next: "Volgende",
-      today: "Vandag",
-      year: "Jaar",
-      month: "Maand",
-      week: "Week",
-      day: "Dag",
-      list: "Agenda"
-    },
-    allDayText: "Heeldag",
-    moreLinkText: "Addisionele",
-    noEventsText: "Daar is geen gebeurtenisse nie"
-  };
-
-  return af;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar-dz.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar-dz.js
deleted file mode 100644
index d351bcff0a4822dc4aa60937ea61a48f916785ad..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar-dz.js
+++ /dev/null
@@ -1,28 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var arDz = {
-    code: "ar-dz",
-    week: {
-      dow: 0, // Sunday is the first day of the week.
-      doy: 4  // The week that contains Jan 1st is the first week of the year.
-    },
-    direction: 'rtl',
-    buttonText: {
-      prev: "السابق",
-      next: "التالي",
-      today: "اليوم",
-      month: "شهر",
-      week: "أسبوع",
-      day: "يوم",
-      list: "أجندة"
-    },
-    weekText: "أسبوع",
-    allDayText: "اليوم كله",
-    moreLinkText: "أخرى",
-    noEventsText: "أي أحداث لعرض"
-  };
-
-  return arDz;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar-kw.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar-kw.js
deleted file mode 100644
index 080be1de192e75540d7e57702ac90a5ede373cb8..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar-kw.js
+++ /dev/null
@@ -1,28 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var arKw = {
-    code: "ar-kw",
-    week: {
-      dow: 0, // Sunday is the first day of the week.
-      doy: 12  // The week that contains Jan 1st is the first week of the year.
-    },
-    direction: 'rtl',
-    buttonText: {
-      prev: "السابق",
-      next: "التالي",
-      today: "اليوم",
-      month: "شهر",
-      week: "أسبوع",
-      day: "يوم",
-      list: "أجندة"
-    },
-    weekText: "أسبوع",
-    allDayText: "اليوم كله",
-    moreLinkText: "أخرى",
-    noEventsText: "أي أحداث لعرض"
-  };
-
-  return arKw;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar-ly.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar-ly.js
deleted file mode 100644
index 9dfac0a55d6eda2bffe6f21c42d8aa0c066cd88f..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar-ly.js
+++ /dev/null
@@ -1,28 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var arLy = {
-    code: "ar-ly",
-    week: {
-      dow: 6, // Saturday is the first day of the week.
-      doy: 12  // The week that contains Jan 1st is the first week of the year.
-    },
-    direction: 'rtl',
-    buttonText: {
-      prev: "السابق",
-      next: "التالي",
-      today: "اليوم",
-      month: "شهر",
-      week: "أسبوع",
-      day: "يوم",
-      list: "أجندة"
-    },
-    weekText: "أسبوع",
-    allDayText: "اليوم كله",
-    moreLinkText: "أخرى",
-    noEventsText: "أي أحداث لعرض"
-  };
-
-  return arLy;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar-ma.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar-ma.js
deleted file mode 100644
index a44ce7d9ec764dd9987166e665ae0f6d2d95c593..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar-ma.js
+++ /dev/null
@@ -1,28 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var arMa = {
-    code: "ar-ma",
-    week: {
-      dow: 6, // Saturday is the first day of the week.
-      doy: 12  // The week that contains Jan 1st is the first week of the year.
-    },
-    direction: 'rtl',
-    buttonText: {
-      prev: "السابق",
-      next: "التالي",
-      today: "اليوم",
-      month: "شهر",
-      week: "أسبوع",
-      day: "يوم",
-      list: "أجندة"
-    },
-    weekText: "أسبوع",
-    allDayText: "اليوم كله",
-    moreLinkText: "أخرى",
-    noEventsText: "أي أحداث لعرض"
-  };
-
-  return arMa;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar-sa.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar-sa.js
deleted file mode 100644
index 554e3dff6cdef2b0fe9e832f569ccc84e5ab35f8..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar-sa.js
+++ /dev/null
@@ -1,28 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var arSa = {
-    code: "ar-sa",
-    week: {
-      dow: 0, // Sunday is the first day of the week.
-      doy: 6  // The week that contains Jan 1st is the first week of the year.
-    },
-    direction: 'rtl',
-    buttonText: {
-      prev: "السابق",
-      next: "التالي",
-      today: "اليوم",
-      month: "شهر",
-      week: "أسبوع",
-      day: "يوم",
-      list: "أجندة"
-    },
-    weekText: "أسبوع",
-    allDayText: "اليوم كله",
-    moreLinkText: "أخرى",
-    noEventsText: "أي أحداث لعرض"
-  };
-
-  return arSa;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar-tn.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar-tn.js
deleted file mode 100644
index d4d4750905dc19c52ab5610ae4c8a2c20c0e7908..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar-tn.js
+++ /dev/null
@@ -1,28 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var arTn = {
-    code: "ar-tn",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4 // The week that contains Jan 4th is the first week of the year.
-    },
-    direction: 'rtl',
-    buttonText: {
-      prev: "السابق",
-      next: "التالي",
-      today: "اليوم",
-      month: "شهر",
-      week: "أسبوع",
-      day: "يوم",
-      list: "أجندة"
-    },
-    weekText: "أسبوع",
-    allDayText: "اليوم كله",
-    moreLinkText: "أخرى",
-    noEventsText: "أي أحداث لعرض"
-  };
-
-  return arTn;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar.js
deleted file mode 100644
index 462c353fe65c9e5c41ab69ff7072d9fe64ef096a..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ar.js
+++ /dev/null
@@ -1,28 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var ar = {
-    code: "ar",
-    week: {
-      dow: 6, // Saturday is the first day of the week.
-      doy: 12  // The week that contains Jan 1st is the first week of the year.
-    },
-    direction: 'rtl',
-    buttonText: {
-      prev: "السابق",
-      next: "التالي",
-      today: "اليوم",
-      month: "شهر",
-      week: "أسبوع",
-      day: "يوم",
-      list: "أجندة"
-    },
-    weekText: "أسبوع",
-    allDayText: "اليوم كله",
-    moreLinkText: "أخرى",
-    noEventsText: "أي أحداث لعرض"
-  };
-
-  return ar;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/az.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/az.js
deleted file mode 100644
index 634b46bf7cfab2e95487699d6677c29e04d24f32..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/az.js
+++ /dev/null
@@ -1,29 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var az = {
-    code: "az",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Əvvəl",
-      next: "Sonra",
-      today: "Bu Gün",
-      month: "Ay",
-      week: "Həftə",
-      day: "Gün",
-      list: "Gündəm"
-    },
-    weekText: "Həftə",
-    allDayText: "Bütün Gün",
-    moreLinkText: function(n) {
-      return "+ daha çox " + n;
-    },
-    noEventsText: "Göstərmək üçün hadisə yoxdur"
-  };
-
-  return az;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/bg.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/bg.js
deleted file mode 100644
index a50a26a5680c5567739b95e57478ddab896e48f4..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/bg.js
+++ /dev/null
@@ -1,28 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var bg = {
-    code: "bg",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "назад",
-      next: "напред",
-      today: "днес",
-      month: "Месец",
-      week: "Седмица",
-      day: "Ден",
-      list: "График"
-    },
-    allDayText: "Цял ден",
-    moreLinkText: function(n) {
-      return "+още " + n;
-    },
-    noEventsText: "Няма събития за показване"
-  };
-
-  return bg;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/bs.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/bs.js
deleted file mode 100644
index 80c9f48432389b5f94183e96025e406f74f9a403..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/bs.js
+++ /dev/null
@@ -1,29 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var bs = {
-    code: "bs",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Prošli",
-      next: "Sljedeći",
-      today: "Danas",
-      month: "Mjesec",
-      week: "Sedmica",
-      day: "Dan",
-      list: "Raspored"
-    },
-    weekText: "Sed",
-    allDayText: "Cijeli dan",
-    moreLinkText: function(n) {
-      return "+ još " + n;
-    },
-    noEventsText: "Nema događaja za prikazivanje"
-  };
-
-  return bs;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ca.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ca.js
deleted file mode 100644
index 1e1d9b8e976918879e5f5e6f41a074c284241b1a..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ca.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var ca = {
-    code: "ca",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Anterior",
-      next: "Següent",
-      today: "Avui",
-      month: "Mes",
-      week: "Setmana",
-      day: "Dia",
-      list: "Agenda"
-    },
-    weekText: "Set",
-    allDayText: "Tot el dia",
-    moreLinkText: "més",
-    noEventsText: "No hi ha esdeveniments per mostrar"
-  };
-
-  return ca;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/cs.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/cs.js
deleted file mode 100644
index 197b68c53b5dd60c9ef0d0812eb6a2e60441e395..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/cs.js
+++ /dev/null
@@ -1,29 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var cs = {
-    code: "cs",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Dříve",
-      next: "Později",
-      today: "Nyní",
-      month: "Měsíc",
-      week: "Týden",
-      day: "Den",
-      list: "Agenda"
-    },
-    weekText: "Týd",
-    allDayText: "Celý den",
-    moreLinkText: function(n) {
-      return "+další: " + n;
-    },
-    noEventsText: "Žádné akce k zobrazení"
-  };
-
-  return cs;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/da.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/da.js
deleted file mode 100644
index 9db9d4a22e82d4a69338769a68ec7582bda214c8..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/da.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var da = {
-    code: "da",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Forrige",
-      next: "Næste",
-      today: "I dag",
-      month: "MÃ¥ned",
-      week: "Uge",
-      day: "Dag",
-      list: "Agenda"
-    },
-    weekText: "Uge",
-    allDayText: "Hele dagen",
-    moreLinkText: "flere",
-    noEventsText: "Ingen arrangementer at vise"
-  };
-
-  return da;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/de.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/de.js
index 94374b94e49361387bfba5a992acdc13dba1166b..a03d5451e669f15bea445e1487d941cf2f2b5dfe 100644
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/de.js
+++ b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/de.js
@@ -2,27 +2,27 @@ FullCalendar.globalLocales.push(function () {
   'use strict';
 
   var de = {
-    code: "de",
+    code: 'de',
     week: {
       dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
     },
     buttonText: {
-      prev: "Zurück",
-      next: "Vor",
-      today: "Heute",
-      year: "Jahr",
-      month: "Monat",
-      week: "Woche",
-      day: "Tag",
-      list: "Terminübersicht"
+      prev: 'Zurück',
+      next: 'Vor',
+      today: 'Heute',
+      year: 'Jahr',
+      month: 'Monat',
+      week: 'Woche',
+      day: 'Tag',
+      list: 'Terminübersicht',
     },
-    weekText: "KW",
-    allDayText: "Ganztägig",
+    weekText: 'KW',
+    allDayText: 'Ganztägig',
     moreLinkText: function(n) {
-      return "+ weitere " + n;
+      return '+ weitere ' + n
     },
-    noEventsText: "Keine Ereignisse anzuzeigen"
+    noEventsText: 'Keine Ereignisse anzuzeigen',
   };
 
   return de;
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/el.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/el.js
deleted file mode 100644
index 59c1a4c27582b937863724bf368f717f13450a25..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/el.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var el = {
-    code: "el",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Προηγούμενος",
-      next: "Επόμενος",
-      today: "Σήμερα",
-      month: "Μήνας",
-      week: "Εβδομάδα",
-      day: "Ημέρα",
-      list: "Ατζέντα"
-    },
-    weekText: "Εβδ",
-    allDayText: "Ολοήμερο",
-    moreLinkText: "περισσότερα",
-    noEventsText: "Δεν υπάρχουν γεγονότα προς εμφάνιση"
-  };
-
-  return el;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/en-au.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/en-au.js
deleted file mode 100644
index 9a214978f61dc94cd6cf64b94651928851b0184a..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/en-au.js
+++ /dev/null
@@ -1,14 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var enAu = {
-    code: "en-au",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    }
-  };
-
-  return enAu;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/en-gb.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/en-gb.js
deleted file mode 100644
index e53ab94e12cd6e092cc3282f30b740d17182009b..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/en-gb.js
+++ /dev/null
@@ -1,14 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var enGb = {
-    code: "en-gb",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    }
-  };
-
-  return enGb;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/en-nz.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/en-nz.js
deleted file mode 100644
index 27ffd6713879856dd066334fa5a5dc1739901652..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/en-nz.js
+++ /dev/null
@@ -1,14 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var enNz = {
-    code: "en-nz",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    }
-  };
-
-  return enNz;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/es-us.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/es-us.js
deleted file mode 100644
index e91571df7bef251619e7156a7b601221e92788eb..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/es-us.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var esUs = {
-    code: "es",
-    week: {
-      dow: 0, // Sunday is the first day of the week.
-      doy: 6  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Ant",
-      next: "Sig",
-      today: "Hoy",
-      month: "Mes",
-      week: "Semana",
-      day: "Día",
-      list: "Agenda"
-    },
-    weekText: "Sm",
-    allDayText: "Todo el día",
-    moreLinkText: "más",
-    noEventsText: "No hay eventos para mostrar"
-  };
-
-  return esUs;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/es.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/es.js
deleted file mode 100644
index a7a61bb9221da33ed02667be792ea4134a5be5e6..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/es.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var es = {
-    code: "es",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Ant",
-      next: "Sig",
-      today: "Hoy",
-      month: "Mes",
-      week: "Semana",
-      day: "Día",
-      list: "Agenda"
-    },
-    weekText: "Sm",
-    allDayText: "Todo el día",
-    moreLinkText: "más",
-    noEventsText: "No hay eventos para mostrar"
-  };
-
-  return es;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/et.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/et.js
deleted file mode 100644
index 364e378da48f1605ffb54c49b4ce766095e911a5..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/et.js
+++ /dev/null
@@ -1,29 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var et = {
-    code: "et",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Eelnev",
-      next: "Järgnev",
-      today: "Täna",
-      month: "Kuu",
-      week: "Nädal",
-      day: "Päev",
-      list: "Päevakord"
-    },
-    weekText: "näd",
-    allDayText: "Kogu päev",
-    moreLinkText: function(n) {
-      return "+ veel " + n;
-    },
-    noEventsText: "Kuvamiseks puuduvad sündmused"
-  };
-
-  return et;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/eu.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/eu.js
deleted file mode 100644
index 3554dc2041575343a6c19b355c6bacc4e76d70be..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/eu.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var eu = {
-    code: "eu",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Aur",
-      next: "Hur",
-      today: "Gaur",
-      month: "Hilabetea",
-      week: "Astea",
-      day: "Eguna",
-      list: "Agenda"
-    },
-    weekText: "As",
-    allDayText: "Egun osoa",
-    moreLinkText: "gehiago",
-    noEventsText: "Ez dago ekitaldirik erakusteko"
-  };
-
-  return eu;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/fa.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/fa.js
deleted file mode 100644
index b0767b95c1584a6124f12e978aecdbebd75f23fd..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/fa.js
+++ /dev/null
@@ -1,30 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var fa = {
-    code: "fa",
-    week: {
-      dow: 6, // Saturday is the first day of the week.
-      doy: 12 // The week that contains Jan 1st is the first week of the year.
-    },
-    direction: 'rtl',
-    buttonText: {
-      prev: "قبلی",
-      next: "بعدی",
-      today: "امروز",
-      month: "ماه",
-      week: "هفته",
-      day: "روز",
-      list: "برنامه"
-    },
-    weekText: "هف",
-    allDayText: "تمام روز",
-    moreLinkText: function(n) {
-      return "بیش از " + n;
-    },
-    noEventsText: "هیچ رویدادی به نمایش"
-  };
-
-  return fa;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/fi.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/fi.js
deleted file mode 100644
index 3e8b5756e177696ea8186a2bcbeaf84c8994d198..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/fi.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var fi = {
-    code: "fi",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Edellinen",
-      next: "Seuraava",
-      today: "Tänään",
-      month: "Kuukausi",
-      week: "Viikko",
-      day: "Päivä",
-      list: "Tapahtumat"
-    },
-    weekText: "Vk",
-    allDayText: "Koko päivä",
-    moreLinkText: "lisää",
-    noEventsText: "Ei näytettäviä tapahtumia"
-  };
-
-  return fi;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/fr-ca.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/fr-ca.js
deleted file mode 100644
index 3f647e035d6a016e4b138443f369ca5abd33b7df..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/fr-ca.js
+++ /dev/null
@@ -1,24 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var frCa = {
-    code: "fr",
-    buttonText: {
-      prev: "Précédent",
-      next: "Suivant",
-      today: "Aujourd'hui",
-      year: "Année",
-      month: "Mois",
-      week: "Semaine",
-      day: "Jour",
-      list: "Mon planning"
-    },
-    weekText: "Sem.",
-    allDayText: "Toute la journée",
-    moreLinkText: "en plus",
-    noEventsText: "Aucun événement à afficher"
-  };
-
-  return frCa;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/fr-ch.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/fr-ch.js
deleted file mode 100644
index d0787713c8efd922e5f163cd60490f04014cf752..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/fr-ch.js
+++ /dev/null
@@ -1,28 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var frCh = {
-    code: "fr-ch",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Précédent",
-      next: "Suivant",
-      today: "Courant",
-      year: "Année",
-      month: "Mois",
-      week: "Semaine",
-      day: "Jour",
-      list: "Mon planning"
-    },
-    weekText: "Sm",
-    allDayText: "Toute la journée",
-    moreLinkText: "en plus",
-    noEventsText: "Aucun événement à afficher"
-  };
-
-  return frCh;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/fr.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/fr.js
deleted file mode 100644
index 6948d410682e1705aaf2a8e8b876c7ad9dadb8ed..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/fr.js
+++ /dev/null
@@ -1,28 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var fr = {
-    code: "fr",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Précédent",
-      next: "Suivant",
-      today: "Aujourd'hui",
-      year: "Année",
-      month: "Mois",
-      week: "Semaine",
-      day: "Jour",
-      list: "Planning"
-    },
-    weekText: "Sem.",
-    allDayText: "Toute la journée",
-    moreLinkText: "en plus",
-    noEventsText: "Aucun événement à afficher"
-  };
-
-  return fr;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/gl.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/gl.js
deleted file mode 100644
index bb090b9064b9e89f2230c52f26dd2e6dc4a9d915..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/gl.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var gl = {
-    code: "gl",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Ant",
-      next: "Seg",
-      today: "Hoxe",
-      month: "Mes",
-      week: "Semana",
-      day: "Día",
-      list: "Axenda"
-    },
-    weekText: "Sm",
-    allDayText: "Todo o día",
-    moreLinkText: "máis",
-    noEventsText: "Non hai eventos para amosar"
-  };
-
-  return gl;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/he.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/he.js
deleted file mode 100644
index e1848d8b3b3d38a3c87bb8c89770f7cff9485594..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/he.js
+++ /dev/null
@@ -1,24 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var he = {
-    code: "he",
-    direction: 'rtl',
-    buttonText: {
-      prev: "הקודם",
-      next: "הבא",
-      today: "היום",
-      month: "חודש",
-      week: "שבוע",
-      day: "יום",
-      list: "סדר יום"
-    },
-    allDayText: "כל היום",
-    moreLinkText: "אחר",
-    noEventsText: "אין אירועים להצגה",
-    weekText: "שבוע"
-  };
-
-  return he;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/hi.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/hi.js
deleted file mode 100644
index 2e52eee0fc54a7054308c0e014a31111c73af29e..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/hi.js
+++ /dev/null
@@ -1,29 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var hi = {
-    code: "hi",
-    week: {
-      dow: 0, // Sunday is the first day of the week.
-      doy: 6  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "पिछला",
-      next: "अगला",
-      today: "आज",
-      month: "महीना",
-      week: "सप्ताह",
-      day: "दिन",
-      list: "कार्यसूची"
-    },
-    weekText: "हफ्ता",
-    allDayText: "सभी दिन",
-    moreLinkText: function(n) {
-      return "+अधिक " + n;
-    },
-    noEventsText: "कोई घटनाओं को प्रदर्शित करने के लिए"
-  };
-
-  return hi;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/hr.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/hr.js
deleted file mode 100644
index 23d555063344b8f1ee0d24d9efdda02a0b0e161b..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/hr.js
+++ /dev/null
@@ -1,29 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var hr = {
-    code: "hr",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Prijašnji",
-      next: "Sljedeći",
-      today: "Danas",
-      month: "Mjesec",
-      week: "Tjedan",
-      day: "Dan",
-      list: "Raspored"
-    },
-    weekText: "Tje",
-    allDayText: "Cijeli dan",
-    moreLinkText: function(n) {
-      return "+ još " + n;
-    },
-    noEventsText: "Nema događaja za prikaz"
-  };
-
-  return hr;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/hu.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/hu.js
deleted file mode 100644
index ff4dd555583ecfe34ae87419881f8f5eac8dec05..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/hu.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var hu = {
-    code: "hu",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "vissza",
-      next: "előre",
-      today: "ma",
-      month: "Hónap",
-      week: "Hét",
-      day: "Nap",
-      list: "Napló"
-    },
-    weekText: "Hét",
-    allDayText: "Egész nap",
-    moreLinkText: "további",
-    noEventsText: "Nincs megjeleníthető esemény"
-  };
-
-  return hu;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/id.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/id.js
deleted file mode 100644
index 4e43a3e4205da5902f405ec62b27b5337121fb5e..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/id.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var id = {
-    code: "id",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "mundur",
-      next: "maju",
-      today: "hari ini",
-      month: "Bulan",
-      week: "Minggu",
-      day: "Hari",
-      list: "Agenda"
-    },
-    weekText: "Mg",
-    allDayText: "Sehari penuh",
-    moreLinkText: "lebih",
-    noEventsText: "Tidak ada acara untuk ditampilkan"
-  };
-
-  return id;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/is.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/is.js
deleted file mode 100644
index df99e26d63d845db423dbceb915359abd88e59a1..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/is.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var is = {
-    code: "is",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Fyrri",
-      next: "Næsti",
-      today: "Í dag",
-      month: "Mánuður",
-      week: "Vika",
-      day: "Dagur",
-      list: "Dagskrá"
-    },
-    weekText: "Vika",
-    allDayText: "Allan daginn",
-    moreLinkText: "meira",
-    noEventsText: "Engir viðburðir til að sýna"
-  };
-
-  return is;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/it.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/it.js
deleted file mode 100644
index 772f4593070efcefd1a5670a6ecab6b46dc21523..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/it.js
+++ /dev/null
@@ -1,29 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var it = {
-    code: "it",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Prec",
-      next: "Succ",
-      today: "Oggi",
-      month: "Mese",
-      week: "Settimana",
-      day: "Giorno",
-      list: "Agenda"
-    },
-    weekText: "Sm",
-    allDayText: "Tutto il giorno",
-    moreLinkText: function(n) {
-      return "+altri " + n;
-    },
-    noEventsText: "Non ci sono eventi da visualizzare"
-  };
-
-  return it;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ja.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ja.js
deleted file mode 100644
index 79fad276c93c0fe9c11c0ea529211893d0c7e500..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ja.js
+++ /dev/null
@@ -1,25 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var ja = {
-    code: "ja",
-    buttonText: {
-      prev: "前",
-      next: "次",
-      today: "今日",
-      month: "月",
-      week: "週",
-      day: "æ—¥",
-      list: "予定リスト"
-    },
-    weekText: "週",
-    allDayText: "終日",
-    moreLinkText: function(n) {
-      return "他 " + n + " 件";
-    },
-    noEventsText: "表示する予定はありません"
-  };
-
-  return ja;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ka.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ka.js
deleted file mode 100644
index 20de1808c3a34c6b479389182e6eb475b291e927..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ka.js
+++ /dev/null
@@ -1,29 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var ka = {
-    code: "ka",
-    week: {
-      dow: 1,
-      doy: 7
-    },
-    buttonText: {
-      prev: "წინა",
-      next: "შემდეგი",
-      today: "დღეს",
-      month: "თვე",
-      week: "კვირა",
-      day: "დღე",
-      list: "დღის წესრიგი"
-    },
-    weekText: "კვ",
-    allDayText: "მთელი დღე",
-    moreLinkText: function(n) {
-      return "+ კიდევ " + n;
-    },
-    noEventsText: "ღონისძიებები არ არის"
-  };
-
-  return ka;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/kk.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/kk.js
deleted file mode 100644
index 1bbc2ef4fd72b0f4b085083a9969978486acc692..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/kk.js
+++ /dev/null
@@ -1,29 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var kk = {
-    code: "kk",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Алдыңғы",
-      next: "Келесі",
-      today: "Бүгін",
-      month: "Ай",
-      week: "Апта",
-      day: "Күн",
-      list: "Күн тәртібі"
-    },
-    weekText: "Не",
-    allDayText: "Күні бойы",
-    moreLinkText: function(n) {
-      return "+ тағы " + n;
-    },
-    noEventsText: "Көрсету үшін оқиғалар жоқ"
-  };
-
-  return kk;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ko.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ko.js
deleted file mode 100644
index 65f7ea190a51c22e02158c196696b3adb465a706..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ko.js
+++ /dev/null
@@ -1,23 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var ko = {
-    code: "ko",
-    buttonText: {
-      prev: "이전달",
-      next: "다음달",
-      today: "오늘",
-      month: "ì›”",
-      week: "주",
-      day: "일",
-      list: "일정목록"
-    },
-    weekText: "주",
-    allDayText: "종일",
-    moreLinkText: "개",
-    noEventsText: "일정이 없습니다"
-  };
-
-  return ko;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/lb.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/lb.js
deleted file mode 100644
index 2faf1ded2ca593f7d73165a4b966c395e8eab5e3..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/lb.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var lb = {
-    code: "lb",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Zréck",
-      next: "Weider",
-      today: "Haut",
-      month: "Mount",
-      week: "Woch",
-      day: "Dag",
-      list: "Terminiwwersiicht"
-    },
-    weekText: "W",
-    allDayText: "Ganzen Dag",
-    moreLinkText: "méi",
-    noEventsText: "Nee Evenementer ze affichéieren"
-  };
-
-  return lb;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/lt.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/lt.js
deleted file mode 100644
index 50c4611068b3329a229a68fbc7fa5d0830332175..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/lt.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var lt = {
-    code: "lt",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Atgal",
-      next: "Pirmyn",
-      today: "Å iandien",
-      month: "MÄ—nuo",
-      week: "SavaitÄ—",
-      day: "Diena",
-      list: "DarbotvarkÄ—"
-    },
-    weekText: "SAV",
-    allDayText: "VisÄ… dienÄ…",
-    moreLinkText: "daugiau",
-    noEventsText: "Nėra įvykių rodyti"
-  };
-
-  return lt;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/lv.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/lv.js
deleted file mode 100644
index 9598b26c35eda8bf0241d1fe92620774e7dc66c3..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/lv.js
+++ /dev/null
@@ -1,29 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var lv = {
-    code: "lv",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Iepr.",
-      next: "Nāk.",
-      today: "Å odien",
-      month: "MÄ“nesis",
-      week: "Nedēļa",
-      day: "Diena",
-      list: "Dienas kārtība"
-    },
-    weekText: "Ned.",
-    allDayText: "Visu dienu",
-    moreLinkText: function(n) {
-      return "+vēl " + n;
-    },
-    noEventsText: "Nav notikumu"
-  };
-
-  return lv;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/mk.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/mk.js
deleted file mode 100644
index d90347330489f06b7461a7cc8731576037229cfa..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/mk.js
+++ /dev/null
@@ -1,25 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var mk = {
-    code: "mk",
-    buttonText: {
-      prev: "претходно",
-      next: "следно",
-      today: "Денес",
-      month: "Месец",
-      week: "Недела",
-      day: "Ден",
-      list: "График"
-    },
-    weekText: "Сед",
-    allDayText: "Цел ден",
-    moreLinkText: function(n) {
-      return "+повеќе " + n;
-    },
-    noEventsText: "Нема настани за прикажување"
-  };
-
-  return mk;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ms.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ms.js
deleted file mode 100644
index 3d4fdb3dd0271a40f7832bc17158c4bc2c361c5e..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ms.js
+++ /dev/null
@@ -1,29 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var ms = {
-    code: "ms",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Sebelum",
-      next: "Selepas",
-      today: "hari ini",
-      month: "Bulan",
-      week: "Minggu",
-      day: "Hari",
-      list: "Agenda"
-    },
-    weekText: "Mg",
-    allDayText: "Sepanjang hari",
-    moreLinkText: function(n) {
-      return "masih ada " + n + " acara";
-    },
-    noEventsText: "Tiada peristiwa untuk dipaparkan"
-  };
-
-  return ms;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/nb.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/nb.js
deleted file mode 100644
index 9512e079bc1b1494c917183e20730bac96de841f..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/nb.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var nb = {
-    code: "nb",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Forrige",
-      next: "Neste",
-      today: "I dag",
-      month: "MÃ¥ned",
-      week: "Uke",
-      day: "Dag",
-      list: "Agenda"
-    },
-    weekText: "Uke",
-    allDayText: "Hele dagen",
-    moreLinkText: "til",
-    noEventsText: "Ingen hendelser å vise"
-  };
-
-  return nb;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/nl.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/nl.js
deleted file mode 100644
index a485abf00f2d78f3d43cd48f0e4c12935ef40a8f..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/nl.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var nl = {
-    code: "nl",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Voorgaand",
-      next: "Volgende",
-      today: "Vandaag",
-      year: "Jaar",
-      month: "Maand",
-      week: "Week",
-      day: "Dag",
-      list: "Agenda"
-    },
-    allDayText: "Hele dag",
-    moreLinkText: "extra",
-    noEventsText: "Geen evenementen om te laten zien"
-  };
-
-  return nl;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/nn.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/nn.js
deleted file mode 100644
index 692127ed40374979fa1439aa35829ab65545dc19..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/nn.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var nn = {
-    code: "nn",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Førre",
-      next: "Neste",
-      today: "I dag",
-      month: "MÃ¥nad",
-      week: "Veke",
-      day: "Dag",
-      list: "Agenda"
-    },
-    weekText: "Veke",
-    allDayText: "Heile dagen",
-    moreLinkText: "til",
-    noEventsText: "Ingen hendelser å vise"
-  };
-
-  return nn;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/pl.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/pl.js
deleted file mode 100644
index ed21adf667330ed684fd1e48d9e64ad20caffa8a..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/pl.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var pl = {
-    code: "pl",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Poprzedni",
-      next: "Następny",
-      today: "DziÅ›",
-      month: "MiesiÄ…c",
-      week: "Tydzień",
-      day: "Dzień",
-      list: "Plan dnia"
-    },
-    weekText: "Tydz",
-    allDayText: "Cały dzień",
-    moreLinkText: "więcej",
-    noEventsText: "Brak wydarzeń do wyświetlenia"
-  };
-
-  return pl;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/pt-br.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/pt-br.js
deleted file mode 100644
index 92744d94320971dd86bab2cf97373bfdbdb359d7..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/pt-br.js
+++ /dev/null
@@ -1,25 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var ptBr = {
-    code: "pt-br",
-    buttonText: {
-      prev: "Anterior",
-      next: "Próximo",
-      today: "Hoje",
-      month: "Mês",
-      week: "Semana",
-      day: "Dia",
-      list: "Lista"
-    },
-    weekText: "Sm",
-    allDayText: "dia inteiro",
-    moreLinkText: function(n) {
-      return "mais +" + n;
-    },
-    noEventsText: "Não há eventos para mostrar"
-  };
-
-  return ptBr;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/pt.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/pt.js
deleted file mode 100644
index b72a79b92d65faf0740f56884777e7e424951d66..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/pt.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var pt = {
-    code: "pt",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Anterior",
-      next: "Seguinte",
-      today: "Hoje",
-      month: "Mês",
-      week: "Semana",
-      day: "Dia",
-      list: "Agenda"
-    },
-    weekText: "Sem",
-    allDayText: "Todo o dia",
-    moreLinkText: "mais",
-    noEventsText: "Não há eventos para mostrar"
-  };
-
-  return pt;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ro.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ro.js
deleted file mode 100644
index 0f833f3b04517b8fa967516aad5cad79ea3baa67..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ro.js
+++ /dev/null
@@ -1,29 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var ro = {
-    code: "ro",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "precedentă",
-      next: "următoare",
-      today: "Azi",
-      month: "Lună",
-      week: "Săptămână",
-      day: "Zi",
-      list: "Agendă"
-    },
-    weekText: "Săpt",
-    allDayText: "Toată ziua",
-    moreLinkText: function(n) {
-      return "+alte " + n;
-    },
-    noEventsText: "Nu există evenimente de afișat"
-  };
-
-  return ro;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ru.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ru.js
deleted file mode 100644
index 0cf61d6826985c2eb79337148cb8a2007108fc97..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ru.js
+++ /dev/null
@@ -1,29 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var ru = {
-    code: "ru",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Пред",
-      next: "След",
-      today: "Сегодня",
-      month: "Месяц",
-      week: "Неделя",
-      day: "День",
-      list: "Повестка дня"
-    },
-    weekText: "Нед",
-    allDayText: "Весь день",
-    moreLinkText: function(n) {
-      return "+ ещё " + n;
-    },
-    noEventsText: "Нет событий для отображения"
-  };
-
-  return ru;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/sk.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/sk.js
deleted file mode 100644
index a46f85d9ce585c78ab8ac187bed18d3468eca027..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/sk.js
+++ /dev/null
@@ -1,29 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var sk = {
-    code: "sk",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Predchádzajúci",
-      next: "Nasledujúci",
-      today: "Dnes",
-      month: "Mesiac",
-      week: "Týždeň",
-      day: "Deň",
-      list: "Rozvrh"
-    },
-    weekText: "Ty",
-    allDayText: "Celý deň",
-    moreLinkText: function(n) {
-      return "+ďalšie: " + n;
-    },
-    noEventsText: "Žiadne akcie na zobrazenie"
-  };
-
-  return sk;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/sl.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/sl.js
deleted file mode 100644
index 56cc360bb025e093f3d0740831cb13f6a17ab5aa..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/sl.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var sl = {
-    code: "sl",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Prejšnji",
-      next: "Naslednji",
-      today: "Trenutni",
-      month: "Mesec",
-      week: "Teden",
-      day: "Dan",
-      list: "Dnevni red"
-    },
-    weekText: "Teden",
-    allDayText: "Ves dan",
-    moreLinkText: "več",
-    noEventsText: "Ni dogodkov za prikaz"
-  };
-
-  return sl;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/sq.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/sq.js
deleted file mode 100644
index 8e2ac0b790146157718215d67251ca1b3c6f6896..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/sq.js
+++ /dev/null
@@ -1,29 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var sq = {
-    code: "sq",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "mbrapa",
-      next: "Përpara",
-      today: "sot",
-      month: "Muaj",
-      week: "Javë",
-      day: "Ditë",
-      list: "Listë"
-    },
-    weekText: "Ja",
-    allDayText: "Gjithë ditën",
-    moreLinkText: function(n) {
-      return "+më tepër " + n;
-    },
-    noEventsText: "Nuk ka evente për të shfaqur"
-  };
-
-  return sq;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/sr-cyrl.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/sr-cyrl.js
deleted file mode 100644
index c650d70d13e369f28dcffe8c6e069045b949d858..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/sr-cyrl.js
+++ /dev/null
@@ -1,29 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var srCyrl = {
-    code: "sr-cyrl",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Претходна",
-      next: "следећи",
-      today: "Данас",
-      month: "Месец",
-      week: "Недеља",
-      day: "Дан",
-      list: "Планер"
-    },
-    weekText: "Сед",
-    allDayText: "Цео дан",
-    moreLinkText: function(n) {
-      return "+ још " + n;
-    },
-    noEventsText: "Нема догађаја за приказ"
-  };
-
-  return srCyrl;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/sr.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/sr.js
deleted file mode 100644
index 74a949d5c1103c3bec92923164cae00aa2e2f747..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/sr.js
+++ /dev/null
@@ -1,29 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var sr = {
-    code: "sr",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Prethodna",
-      next: "Sledeći",
-      today: "Danas",
-      month: "Mеsеc",
-      week: "Nеdеlja",
-      day: "Dan",
-      list: "Planеr"
-    },
-    weekText: "Sed",
-    allDayText: "Cеo dan",
-    moreLinkText: function(n) {
-      return "+ još " + n;
-    },
-    noEventsText: "Nеma događaja za prikaz"
-  };
-
-  return sr;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/sv.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/sv.js
deleted file mode 100644
index b3a809db5dcced6e3a51f34dc3d652b2b293030f..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/sv.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var sv = {
-    code: "sv",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "Förra",
-      next: "Nästa",
-      today: "Idag",
-      month: "MÃ¥nad",
-      week: "Vecka",
-      day: "Dag",
-      list: "Program"
-    },
-    weekText: "v.",
-    allDayText: "Heldag",
-    moreLinkText: "till",
-    noEventsText: "Inga händelser att visa"
-  };
-
-  return sv;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/th.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/th.js
deleted file mode 100644
index 927b392cf1a102dc1067580fe3ad2a0d02e5430e..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/th.js
+++ /dev/null
@@ -1,30 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var th = {
-    code: "th",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "ก่อนหน้า",
-      next: "ถัดไป",
-      prevYear: 'ปีก่อนหน้า',
-      nextYear: 'ปีถัดไป',
-      year: 'ปี',
-      today: "วันนี้",
-      month: "เดือน",
-      week: "สัปดาห์",
-      day: "วัน",
-      list: "กำหนดการ"
-    },
-    weekText: "สัปดาห์",
-    allDayText: "ตลอดวัน",
-    moreLinkText: "เพิ่มเติม",
-    noEventsText: "ไม่มีกิจกรรมที่จะแสดง"
-  };
-
-  return th;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/tr.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/tr.js
deleted file mode 100644
index dd19a44af2d2061012aab7940eb4531047387451..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/tr.js
+++ /dev/null
@@ -1,27 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var tr = {
-    code: "tr",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "geri",
-      next: "ileri",
-      today: "bugün",
-      month: "Ay",
-      week: "Hafta",
-      day: "Gün",
-      list: "Ajanda"
-    },
-    weekText: "Hf",
-    allDayText: "Tüm gün",
-    moreLinkText: "daha fazla",
-    noEventsText: "Gösterilecek etkinlik yok"
-  };
-
-  return tr;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ug.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ug.js
deleted file mode 100644
index 9130a6c54a1d7674714f895bfcb01c5fdb7f0661..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/ug.js
+++ /dev/null
@@ -1,17 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var ug = {
-    code: "ug",
-    buttonText: {
-      month: "ئاي",
-      week: "ھەپتە",
-      day: "ÙƒÛˆÙ†",
-      list: "كۈنتەرتىپ"
-    },
-    allDayText: "پۈتۈن كۈن"
-  };
-
-  return ug;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/uk.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/uk.js
deleted file mode 100644
index acde23939482767762c84856df621903e93c6004..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/uk.js
+++ /dev/null
@@ -1,29 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var uk = {
-    code: "uk",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 7  // The week that contains Jan 1st is the first week of the year.
-    },
-    buttonText: {
-      prev: "Попередній",
-      next: "далі",
-      today: "Сьогодні",
-      month: "Місяць",
-      week: "Тиждень",
-      day: "День",
-      list: "Порядок денний"
-    },
-    weekText: "Тиж",
-    allDayText: "Увесь день",
-    moreLinkText: function(n) {
-      return "+ще " + n + "...";
-    },
-    noEventsText: "Немає подій для відображення"
-  };
-
-  return uk;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/uz.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/uz.js
deleted file mode 100644
index f1ea640c2b960bc3ed686a6f9344adff31c014c8..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/uz.js
+++ /dev/null
@@ -1,21 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var uz = {
-    code: "uz",
-    buttonText: {
-      month: "Oy",
-      week: "Xafta",
-      day: "Kun",
-      list: "Kun tartibi"
-    },
-    allDayText: "Kun bo'yi",
-    moreLinkText: function(n) {
-      return "+ yana " + n;
-    },
-    noEventsText: "Ko'rsatish uchun voqealar yo'q"
-  };
-
-  return uz;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/vi.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/vi.js
deleted file mode 100644
index 5ea3a4a2fa897b7f435b9b3aa44454567c4a2da0..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/vi.js
+++ /dev/null
@@ -1,29 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var vi = {
-    code: "vi",
-    week: {
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "TrÆ°á»›c",
-      next: "Tiếp",
-      today: "Hôm nay",
-      month: "Tháng",
-      week: "Tuần",
-      day: "Ngày",
-      list: "Lịch biểu"
-    },
-    weekText: "Tu",
-    allDayText: "Cả ngày",
-    moreLinkText: function(n) {
-      return "+ thêm " + n;
-    },
-    noEventsText: "Không có sự kiện để hiển thị"
-  };
-
-  return vi;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/zh-cn.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/zh-cn.js
deleted file mode 100644
index 45e6863110077cf4dbba3345b04f42fe31ec2736..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/zh-cn.js
+++ /dev/null
@@ -1,30 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var zhCn = {
-    code: "zh-cn",
-    week: {
-      // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
-      dow: 1, // Monday is the first day of the week.
-      doy: 4  // The week that contains Jan 4th is the first week of the year.
-    },
-    buttonText: {
-      prev: "上月",
-      next: "下月",
-      today: "今天",
-      month: "月",
-      week: "周",
-      day: "æ—¥",
-      list: "日程"
-    },
-    weekText: "周",
-    allDayText: "全天",
-    moreLinkText: function(n) {
-      return "另外 " + n + " 个";
-    },
-    noEventsText: "没有事件显示"
-  };
-
-  return zhCn;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/zh-tw.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/zh-tw.js
deleted file mode 100644
index 0e9ccca65a4c4aa105c760939ecef0cf3404e60d..0000000000000000000000000000000000000000
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/locales/zh-tw.js
+++ /dev/null
@@ -1,23 +0,0 @@
-FullCalendar.globalLocales.push(function () {
-  'use strict';
-
-  var zhTw = {
-    code: "zh-tw",
-    buttonText: {
-      prev: "上月",
-      next: "下月",
-      today: "今天",
-      month: "月",
-      week: "週",
-      day: "天",
-      list: "活動列表"
-    },
-    weekText: "周",
-    allDayText: "整天",
-    moreLinkText: '顯示更多',
-    noEventsText: "没有任何活動"
-  };
-
-  return zhTw;
-
-}());
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/main.css b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/main.css
index c533941d0058dd3c49a5f8dd868292206d563072..89692d34fa20e1e845d9fe78e0c472ff1ac3534e 100644
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/main.css
+++ b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/main.css
@@ -345,33 +345,22 @@ When it's NOT activated, the fc-button classes won't even be in the DOM.
       border-left-style: hidden;
       border-right-style: hidden;
     }
-.fc .fc-scrollgrid > tbody table,
-    .fc .fc-scrollgrid > tfoot table {
-      border-bottom-style: hidden; /* head keeps its bottom border tho */
-    }
 .fc .fc-scrollgrid {
 
     border-collapse: separate;
     border-right-width: 0;
-    border-bottom-width: 0
+    border-bottom-width: 0;
+
   }
-.fc .fc-scrollgrid > * > tr > * {
-      border-top-width: 0;
-      border-left-width: 0;
-    }
-.fc .fc-scrollgrid > thead > tr > *,
-    .fc .fc-scrollgrid > tfoot > tr > * {
-      border-bottom-width: 0;
-    }
 .fc .fc-scrollgrid-liquid {
     height: 100%;
   }
 .fc .fc-scrollgrid-section { /* a <tr> */
-    height: 0
+    height: 1px /* better than 0, for firefox */
 
   }
 .fc .fc-scrollgrid-section > td {
-      height: 0; /* needs a height so inner div within grow */
+      height: 1px; /* needs a height so inner div within grow. better than 0, for firefox */
     }
 .fc .fc-scrollgrid-section table {
       height: 1px;
@@ -383,8 +372,20 @@ When it's NOT activated, the fc-button classes won't even be in the DOM.
 
   }
 .fc .fc-scrollgrid-section-liquid > td {
-      height: 100%; /* FF needs this instead of auto */
+      height: 100%; /* better than `auto`, for firefox */
     }
+.fc .fc-scrollgrid-section > * {
+    border-top-width: 0;
+    border-left-width: 0;
+  }
+.fc .fc-scrollgrid-section-header > *,
+  .fc .fc-scrollgrid-section-footer > * {
+    border-bottom-width: 0;
+  }
+.fc .fc-scrollgrid-section-body table,
+  .fc .fc-scrollgrid-section-footer table {
+    border-bottom-style: hidden; /* head keeps its bottom border tho */
+  }
 .fc {
 
   /* stickiness */
@@ -398,21 +399,21 @@ When it's NOT activated, the fc-button classes won't even be in the DOM.
     z-index: 2; /* TODO: var */
     /* TODO: box-shadow when sticking */
   }
-.fc .fc-scrollgrid > thead > .fc-scrollgrid-section-sticky > * {
+.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky > * {
     top: 0; /* because border-sharing causes a gap at the top */
       /* TODO: give safari -1. has bug */
   }
-.fc .fc-scrollgrid > tfoot > .fc-scrollgrid-section-sticky > * {
+.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky > * {
     bottom: 0; /* known bug: bottom-stickiness doesn't work in safari */
   }
 .fc .fc-scrollgrid-sticky-shim { /* for horizontal scrollbar */
     height: 1px; /* needs height to create scrollbars */
     margin-bottom: -1px;
   }
-.fc .fc-sticky {
-    position: -webkit-sticky;
-    position: sticky;
-  }
+.fc-sticky { /* no .fc wrap because used as child of body */
+  position: -webkit-sticky;
+  position: sticky;
+}
 .fc .fc-view-harness {
     flex-grow: 1; /* because this harness is WITHIN the .fc's flexbox */
     position: relative;
@@ -576,9 +577,9 @@ A HORIZONTAL event
 .fc-h-event { /* allowed to be top-level */
   display: block;
   border: 1px solid #3788d8;
-  border: 1px solid var(--fc-event-bg-color, #3788d8);
+  border: 1px solid var(--fc-event-border-color, #3788d8);
   background-color: #3788d8;
-  background-color: var(--fc-event-border-color, #3788d8)
+  background-color: var(--fc-event-bg-color, #3788d8)
 
 }
 .fc-h-event .fc-event-main {
@@ -724,8 +725,6 @@ A HORIZONTAL event
 
 }
 .fc .fc-daygrid-day-top {
-    position: relative;
-    z-index: 4;
     display: flex;
     flex-direction: row-reverse;
   }
@@ -738,6 +737,8 @@ A HORIZONTAL event
 
 }
 .fc .fc-daygrid-day-number {
+    position: relative;
+    z-index: 4;
     padding: 4px;
   }
 .fc {
@@ -812,12 +813,12 @@ A HORIZONTAL event
 
 }
 .fc .fc-daygrid-day-bottom {
-    position: relative;
-    z-index: 4;
     font-size: .85em;
     margin: 2px 3px 0;
   }
 .fc .fc-daygrid-more-link {
+    position: relative;
+    z-index: 4;
     cursor: pointer;
   }
 .fc {
@@ -885,24 +886,28 @@ A HORIZONTAL event
   }
 /* --- the dot style of event --- */
 .fc-daygrid-dot-event {
-  display: block;
-  padding: 2px 0;
-  overflow: hidden
+  display: flex;
+  align-items: center;
+  padding: 2px 0
 
 }
 .fc-daygrid-dot-event .fc-event-title {
+    flex-grow: 1;
+    flex-shrink: 1;
+    min-width: 0; /* important for allowing to shrink all the way */
+    overflow: hidden;
     font-weight: bold;
   }
-.fc-daygrid-dot-event .fc-event-time,
-  .fc-daygrid-dot-event .fc-event-title {
-    display: inline-block; /* better than inline, for sitting next to dot */
-  }
 .fc-daygrid-dot-event:hover,
   .fc-daygrid-dot-event.fc-event-mirror {
     background: rgba(0, 0, 0, 0.1);
   }
+.fc-daygrid-dot-event.fc-event-selected:before {
+    /* expand hit area */
+    top: -10px;
+    bottom: -10px;
+  }
 .fc-daygrid-event-dot { /* the actual dot */
-  display: inline-block;
   margin: 0 4px;
   box-sizing: content-box;
   width: 0;
@@ -1063,12 +1068,15 @@ A VERTICAL event
     }
 .fc .fc-timegrid-slots {
     position: relative;
-    z-index: 2;
+    z-index: 1;
   }
 .fc .fc-timegrid-slot { /* a <td> */
     height: 1.5em;
-    border-bottom: 0; /* each cell owns its top border */
+    border-bottom: 0 /* each cell owns its top border */
   }
+.fc .fc-timegrid-slot:empty:before {
+      content: '\00a0'; /* make sure there's at least an empty space to create height for height syncing */
+    }
 .fc .fc-timegrid-slot-minor {
     border-top-style: dotted;
   }
@@ -1166,7 +1174,7 @@ A VERTICAL event
 
 }
 .fc .fc-timegrid-col-bg {
-    z-index: 1; /* TODO: kill */
+    z-index: 2; /* TODO: kill */
   }
 .fc .fc-timegrid-col-bg .fc-non-business { z-index: 1 }
 .fc .fc-timegrid-col-bg .fc-bg-event { z-index: 2 }
@@ -1513,10 +1521,18 @@ vertical slots in both the header AND the body
 /* only owns one side, so can do dotted */
 .fc-direction-ltr .fc-timeline-slot { border-right: 0 !important }
 .fc-direction-rtl .fc-timeline-slot { border-left: 0 !important }
+.fc .fc-timeline-now-indicator-container {
+    position: absolute;
+    z-index: 4;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    width: 0;
+  }
 .fc .fc-timeline-now-indicator-arrow,
   .fc .fc-timeline-now-indicator-line {
     position: absolute;
-    z-index: 4;
     top: 0;
     border-style: solid;
     border-color: red;
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/main.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/main.js
index 582589bcf4b7fcc7d023b1835e8a3ba7203056b7..4ee282f4b39103c551791812ab096f572d68323f 100644
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/main.js
+++ b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/main.js
@@ -1,5 +1,5 @@
 /*!
-FullCalendar Scheduler v5.1.0
+FullCalendar Scheduler v5.5.1
 Docs & License: https://fullcalendar.io/scheduler
 (c) 2020 Adam Shaw
 */
@@ -25,7 +25,7 @@ var FullCalendar = (function (exports) {
     var extendStatics = function(d, b) {
         extendStatics = Object.setPrototypeOf ||
             ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
         return extendStatics(d, b);
     };
 
@@ -54,17 +54,24 @@ var FullCalendar = (function (exports) {
         return r;
     }
 
-    var n,u,i,t,r,o,f,e={},c=[],s=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;function a(n,l){for(var u in l)n[u]=l[u];return n}function v(n){var l=n.parentNode;l&&l.removeChild(n);}function h(n,l,u){var i,t=arguments,r={};for(i in l)"key"!==i&&"ref"!==i&&(r[i]=l[i]);if(arguments.length>3)for(u=[u],i=3;i<arguments.length;i++)u.push(t[i]);if(null!=u&&(r.children=u),"function"==typeof n&&null!=n.defaultProps)for(i in n.defaultProps)void 0===r[i]&&(r[i]=n.defaultProps[i]);return p(n,r,l&&l.key,l&&l.ref,null)}function p(l,u,i,t,r){var o={type:l,props:u,key:i,ref:t,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:r};return null==r&&(o.__v=o),n.vnode&&n.vnode(o),o}function y(){return {}}function d(n){return n.children}function m(n,l){this.props=n,this.context=l;}function w(n,l){if(null==l)return n.__?w(n.__,n.__.__k.indexOf(n)+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return "function"==typeof n.type?w(n):null}function k(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return k(n)}}function g(l){(!l.__d&&(l.__d=!0)&&u.push(l)&&!i++||r!==n.debounceRendering)&&((r=n.debounceRendering)||t)(_);}function _(){for(var n;i=u.length;)n=u.sort(function(n,l){return n.__v.__b-l.__v.__b}),u=[],n.some(function(n){var l,u,i,t,r,o,f;n.__d&&(o=(r=(l=n).__v).__e,(f=l.__P)&&(u=[],(i=a({},r)).__v=i,t=A(f,r,i,l.__n,void 0!==f.ownerSVGElement,null,u,null==o?w(r):o),T(u,r),t!=o&&k(r)));});}function b(n,l,u,i,t,r,o,f,s){var a,h,p,y,d,m,k,g=u&&u.__k||c,_=g.length;if(f==e&&(f=null!=r?r[0]:_?w(u,0):null),a=0,l.__k=x(l.__k,function(u){if(null!=u){if(u.__=l,u.__b=l.__b+1,null===(p=g[a])||p&&u.key==p.key&&u.type===p.type)g[a]=void 0;else for(h=0;h<_;h++){if((p=g[h])&&u.key==p.key&&u.type===p.type){g[h]=void 0;break}p=null;}if(y=A(n,u,p=p||e,i,t,r,o,f,s),(h=u.ref)&&p.ref!=h&&(k||(k=[]),p.ref&&k.push(p.ref,null,u),k.push(h,u.__c||y,u)),null!=y){var c;if(null==m&&(m=y),void 0!==u.__d)c=u.__d,u.__d=void 0;else if(r==p||y!=f||null==y.parentNode){n:if(null==f||f.parentNode!==n)n.appendChild(y),c=null;else {for(d=f,h=0;(d=d.nextSibling)&&h<_;h+=2)if(d==y)break n;n.insertBefore(y,f),c=f;}"option"==l.type&&(n.value="");}f=void 0!==c?c:y.nextSibling,"function"==typeof l.type&&(l.__d=f);}else f&&p.__e==f&&f.parentNode!=n&&(f=w(p));}return a++,u}),l.__e=m,null!=r&&"function"!=typeof l.type)for(a=r.length;a--;)null!=r[a]&&v(r[a]);for(a=_;a--;)null!=g[a]&&D(g[a],g[a]);if(k)for(a=0;a<k.length;a++)j(k[a],k[++a],k[++a]);}function x(n,l,u){if(null==u&&(u=[]),null==n||"boolean"==typeof n)l&&u.push(l(null));else if(Array.isArray(n))for(var i=0;i<n.length;i++)x(n[i],l,u);else u.push(l?l("string"==typeof n||"number"==typeof n?p(null,n,null,null,n):null!=n.__e||null!=n.__c?p(n.type,n.props,n.key,null,n.__v):n):n);return u}function P(n,l,u,i,t){var r;for(r in u)"children"===r||"key"===r||r in l||N(n,r,null,u[r],i);for(r in l)t&&"function"!=typeof l[r]||"children"===r||"key"===r||"value"===r||"checked"===r||u[r]===l[r]||N(n,r,l[r],u[r],i);}function C(n,l,u){"-"===l[0]?n.setProperty(l,u):n[l]="number"==typeof u&&!1===s.test(l)?u+"px":null==u?"":u;}function N(n,l,u,i,t){var r,o,f,e,c;if(t?"className"===l&&(l="class"):"class"===l&&(l="className"),"style"===l)if(r=n.style,"string"==typeof u)r.cssText=u;else {if("string"==typeof i&&(r.cssText="",i=null),i)for(e in i)u&&e in u||C(r,e,"");if(u)for(c in u)i&&u[c]===i[c]||C(r,c,u[c]);}else "o"===l[0]&&"n"===l[1]?(o=l!==(l=l.replace(/Capture$/,"")),f=l.toLowerCase(),l=(f in n?f:l).slice(2),u?(i||n.addEventListener(l,z,o),(n.l||(n.l={}))[l]=u):n.removeEventListener(l,z,o)):"list"!==l&&"tagName"!==l&&"form"!==l&&"type"!==l&&"size"!==l&&!t&&l in n?n[l]=null==u?"":u:"function"!=typeof u&&"dangerouslySetInnerHTML"!==l&&(l!==(l=l.replace(/^xlink:?/,""))?null==u||!1===u?n.removeAttributeNS("http://www.w3.org/1999/xlink",l.toLowerCase()):n.setAttributeNS("http://www.w3.org/1999/xlink",l.toLowerCase(),u):null==u||!1===u&&!/^ar/.test(l)?n.removeAttribute(l):n.setAttribute(l,u));}function z(l){this.l[l.type](n.event?n.event(l):l);}function A(l,u,i,t,r,o,f,e,c){var s,v,h,p,y,w,k,g,_,x,P=u.type;if(void 0!==u.constructor)return null;(s=n.__b)&&s(u);try{n:if("function"==typeof P){if(g=u.props,_=(s=P.contextType)&&t[s.__c],x=s?_?_.props.value:s.__:t,i.__c?k=(v=u.__c=i.__c).__=v.__E:("prototype"in P&&P.prototype.render?u.__c=v=new P(g,x):(u.__c=v=new m(g,x),v.constructor=P,v.render=E),_&&_.sub(v),v.props=g,v.state||(v.state={}),v.context=x,v.__n=t,h=v.__d=!0,v.__h=[]),null==v.__s&&(v.__s=v.state),null!=P.getDerivedStateFromProps&&(v.__s==v.state&&(v.__s=a({},v.__s)),a(v.__s,P.getDerivedStateFromProps(g,v.__s))),p=v.props,y=v.state,h)null==P.getDerivedStateFromProps&&null!=v.componentWillMount&&v.componentWillMount(),null!=v.componentDidMount&&v.__h.push(v.componentDidMount);else {if(null==P.getDerivedStateFromProps&&g!==p&&null!=v.componentWillReceiveProps&&v.componentWillReceiveProps(g,x),!v.__e&&null!=v.shouldComponentUpdate&&!1===v.shouldComponentUpdate(g,v.__s,x)||u.__v===i.__v&&!v.__){for(v.props=g,v.state=v.__s,u.__v!==i.__v&&(v.__d=!1),v.__v=u,u.__e=i.__e,u.__k=i.__k,v.__h.length&&f.push(v),s=0;s<u.__k.length;s++)u.__k[s]&&(u.__k[s].__=u);break n}null!=v.componentWillUpdate&&v.componentWillUpdate(g,v.__s,x),null!=v.componentDidUpdate&&v.__h.push(function(){v.componentDidUpdate(p,y,w);});}v.context=x,v.props=g,v.state=v.__s,(s=n.__r)&&s(u),v.__d=!1,v.__v=u,v.__P=l,s=v.render(v.props,v.state,v.context),u.__k=null!=s&&s.type==d&&null==s.key?s.props.children:Array.isArray(s)?s:[s],null!=v.getChildContext&&(t=a(a({},t),v.getChildContext())),h||null==v.getSnapshotBeforeUpdate||(w=v.getSnapshotBeforeUpdate(p,y)),b(l,u,i,t,r,o,f,e,c),v.base=u.__e,v.__h.length&&f.push(v),k&&(v.__E=v.__=null),v.__e=!1;}else null==o&&u.__v===i.__v?(u.__k=i.__k,u.__e=i.__e):u.__e=$(i.__e,u,i,t,r,o,f,c);(s=n.diffed)&&s(u);}catch(l){u.__v=null,n.__e(l,u,i);}return u.__e}function T(l,u){n.__c&&n.__c(u,l),l.some(function(u){try{l=u.__h,u.__h=[],l.some(function(n){n.call(u);});}catch(l){n.__e(l,u.__v);}});}function $(n,l,u,i,t,r,o,f){var s,a,v,h,p,y=u.props,d=l.props;if(t="svg"===l.type||t,null!=r)for(s=0;s<r.length;s++)if(null!=(a=r[s])&&((null===l.type?3===a.nodeType:a.localName===l.type)||n==a)){n=a,r[s]=null;break}if(null==n){if(null===l.type)return document.createTextNode(d);n=t?document.createElementNS("http://www.w3.org/2000/svg",l.type):document.createElement(l.type,d.is&&{is:d.is}),r=null,f=!1;}if(null===l.type)y!==d&&n.data!=d&&(n.data=d);else {if(null!=r&&(r=c.slice.call(n.childNodes)),v=(y=u.props||e).dangerouslySetInnerHTML,h=d.dangerouslySetInnerHTML,!f){if(y===e)for(y={},p=0;p<n.attributes.length;p++)y[n.attributes[p].name]=n.attributes[p].value;(h||v)&&(h&&v&&h.__html==v.__html||(n.innerHTML=h&&h.__html||""));}P(n,d,y,t,f),h?l.__k=[]:(l.__k=l.props.children,b(n,l,u,i,"foreignObject"!==l.type&&t,r,o,e,f)),f||("value"in d&&void 0!==(s=d.value)&&s!==n.value&&N(n,"value",s,y.value,!1),"checked"in d&&void 0!==(s=d.checked)&&s!==n.checked&&N(n,"checked",s,y.checked,!1));}return n}function j(l,u,i){try{"function"==typeof l?l(u):l.current=u;}catch(l){n.__e(l,i);}}function D(l,u,i){var t,r,o;if(n.unmount&&n.unmount(l),(t=l.ref)&&(t.current&&t.current!==l.__e||j(t,null,u)),i||"function"==typeof l.type||(i=null!=(r=l.__e)),l.__e=l.__d=void 0,null!=(t=l.__c)){if(t.componentWillUnmount)try{t.componentWillUnmount();}catch(l){n.__e(l,u);}t.base=t.__P=null;}if(t=l.__k)for(o=0;o<t.length;o++)t[o]&&D(t[o],u,i);null!=r&&v(r);}function E(n,l,u){return this.constructor(n,u)}function H(l,u,i){var t,r,f;n.__&&n.__(l,u),r=(t=i===o)?null:i&&i.__k||u.__k,l=h(d,null,[l]),f=[],A(u,(t?u:i||u).__k=l,r||e,e,void 0!==u.ownerSVGElement,i&&!t?[i]:r?null:c.slice.call(u.childNodes),f,i||e,t),T(f,l);}function M(n){var l={},u={__c:"__cC"+f++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var i,t=this;return this.getChildContext||(i=[],this.getChildContext=function(){return l[u.__c]=t,l},this.shouldComponentUpdate=function(n){t.props.value!==n.value&&i.some(function(l){l.context=n.value,g(l);});},this.sub=function(n){i.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){i.splice(i.indexOf(n),1),l&&l.call(n);};}),n.children}};return u.Consumer.contextType=u,u.Provider.__=u,u}n={__e:function(n,l){for(var u,i;l=l.__;)if((u=l.__c)&&!u.__)try{if(u.constructor&&null!=u.constructor.getDerivedStateFromError&&(i=!0,u.setState(u.constructor.getDerivedStateFromError(n))),null!=u.componentDidCatch&&(i=!0,u.componentDidCatch(n)),i)return g(u.__E=u)}catch(l){n=l;}throw n}},m.prototype.setState=function(n,l){var u;u=this.__s!==this.state?this.__s:this.__s=a({},this.state),"function"==typeof n&&(n=n(u,this.props)),n&&a(u,n),null!=n&&this.__v&&(l&&this.__h.push(l),g(this));},m.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),g(this));},m.prototype.render=d,u=[],i=0,t="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,o=e,f=0;
+    var n,u,i,t,o,r,f={},e=[],c=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function s(n,l){for(var u in l)n[u]=l[u];return n}function a(n){var l=n.parentNode;l&&l.removeChild(n);}function v(n,l,u){var i,t,o,r=arguments,f={};for(o in l)"key"==o?i=l[o]:"ref"==o?t=l[o]:f[o]=l[o];if(arguments.length>3)for(u=[u],o=3;o<arguments.length;o++)u.push(r[o]);if(null!=u&&(f.children=u),"function"==typeof n&&null!=n.defaultProps)for(o in n.defaultProps)void 0===f[o]&&(f[o]=n.defaultProps[o]);return h(n,f,i,t,null)}function h(l,u,i,t,o){var r={type:l,props:u,key:i,ref:t,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++n.__v:o};return null!=n.vnode&&n.vnode(r),r}function y(){return {current:null}}function p(n){return n.children}function d(n,l){this.props=n,this.context=l;}function _(n,l){if(null==l)return n.__?_(n.__,n.__.__k.indexOf(n)+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return "function"==typeof n.type?_(n):null}function w(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return w(n)}}function k(l){(!l.__d&&(l.__d=!0)&&u.push(l)&&!g.__r++||t!==n.debounceRendering)&&((t=n.debounceRendering)||i)(g);}function g(){for(var n;g.__r=u.length;)n=u.sort(function(n,l){return n.__v.__b-l.__v.__b}),u=[],n.some(function(n){var l,u,i,t,o,r,f;n.__d&&(r=(o=(l=n).__v).__e,(f=l.__P)&&(u=[],(i=s({},o)).__v=o.__v+1,t=$(f,o,i,l.__n,void 0!==f.ownerSVGElement,null!=o.__h?[r]:null,u,null==r?_(o):r,o.__h),j(u,o),t!=r&&w(o)));});}function m(n,l,u,i,t,o,r,c,s,v){var y,d,w,k,g,m,b,A=i&&i.__k||e,P=A.length;for(s==f&&(s=null!=r?r[0]:P?_(i,0):null),u.__k=[],y=0;y<l.length;y++)if(null!=(k=u.__k[y]=null==(k=l[y])||"boolean"==typeof k?null:"string"==typeof k||"number"==typeof k?h(null,k,null,null,k):Array.isArray(k)?h(p,{children:k},null,null,null):null!=k.__e||null!=k.__c?h(k.type,k.props,k.key,null,k.__v):k)){if(k.__=u,k.__b=u.__b+1,null===(w=A[y])||w&&k.key==w.key&&k.type===w.type)A[y]=void 0;else for(d=0;d<P;d++){if((w=A[d])&&k.key==w.key&&k.type===w.type){A[d]=void 0;break}w=null;}g=$(n,k,w=w||f,t,o,r,c,s,v),(d=k.ref)&&w.ref!=d&&(b||(b=[]),w.ref&&b.push(w.ref,null,k),b.push(d,k.__c||g,k)),null!=g?(null==m&&(m=g),s=x(n,k,w,A,r,g,s),v||"option"!=u.type?"function"==typeof u.type&&(u.__d=s):n.value=""):s&&w.__e==s&&s.parentNode!=n&&(s=_(w));}if(u.__e=m,null!=r&&"function"!=typeof u.type)for(y=r.length;y--;)null!=r[y]&&a(r[y]);for(y=P;y--;)null!=A[y]&&L(A[y],A[y]);if(b)for(y=0;y<b.length;y++)I(b[y],b[++y],b[++y]);}function x(n,l,u,i,t,o,r){var f,e,c;if(void 0!==l.__d)f=l.__d,l.__d=void 0;else if(t==u||o!=r||null==o.parentNode)n:if(null==r||r.parentNode!==n)n.appendChild(o),f=null;else {for(e=r,c=0;(e=e.nextSibling)&&c<i.length;c+=2)if(e==o)break n;n.insertBefore(o,r),f=r;}return void 0!==f?f:o.nextSibling}function A(n,l,u,i,t){var o;for(o in u)"children"===o||"key"===o||o in l||C(n,o,null,u[o],i);for(o in l)t&&"function"!=typeof l[o]||"children"===o||"key"===o||"value"===o||"checked"===o||u[o]===l[o]||C(n,o,l[o],u[o],i);}function P(n,l,u){"-"===l[0]?n.setProperty(l,u):n[l]=null==u?"":"number"!=typeof u||c.test(l)?u:u+"px";}function C(n,l,u,i,t){var o,r,f;if(t&&"className"==l&&(l="class"),"style"===l)if("string"==typeof u)n.style.cssText=u;else {if("string"==typeof i&&(n.style.cssText=i=""),i)for(l in i)u&&l in u||P(n.style,l,"");if(u)for(l in u)i&&u[l]===i[l]||P(n.style,l,u[l]);}else "o"===l[0]&&"n"===l[1]?(o=l!==(l=l.replace(/Capture$/,"")),(r=l.toLowerCase())in n&&(l=r),l=l.slice(2),n.l||(n.l={}),n.l[l+o]=u,f=o?N:z,u?i||n.addEventListener(l,f,o):n.removeEventListener(l,f,o)):"list"!==l&&"tagName"!==l&&"form"!==l&&"type"!==l&&"size"!==l&&"download"!==l&&"href"!==l&&!t&&l in n?n[l]=null==u?"":u:"function"!=typeof u&&"dangerouslySetInnerHTML"!==l&&(l!==(l=l.replace(/xlink:?/,""))?null==u||!1===u?n.removeAttributeNS("http://www.w3.org/1999/xlink",l.toLowerCase()):n.setAttributeNS("http://www.w3.org/1999/xlink",l.toLowerCase(),u):null==u||!1===u&&!/^ar/.test(l)?n.removeAttribute(l):n.setAttribute(l,u));}function z(l){this.l[l.type+!1](n.event?n.event(l):l);}function N(l){this.l[l.type+!0](n.event?n.event(l):l);}function T(n,l,u){var i,t;for(i=0;i<n.__k.length;i++)(t=n.__k[i])&&(t.__=n,t.__e&&("function"==typeof t.type&&t.__k.length>1&&T(t,l,u),l=x(u,t,t,n.__k,null,t.__e,l),"function"==typeof n.type&&(n.__d=l)));}function $(l,u,i,t,o,r,f,e,c){var a,v,h,y,_,w,k,g,b,x,A,P=u.type;if(void 0!==u.constructor)return null;null!=i.__h&&(c=i.__h,e=u.__e=i.__e,u.__h=null,r=[e]),(a=n.__b)&&a(u);try{n:if("function"==typeof P){if(g=u.props,b=(a=P.contextType)&&t[a.__c],x=a?b?b.props.value:a.__:t,i.__c?k=(v=u.__c=i.__c).__=v.__E:("prototype"in P&&P.prototype.render?u.__c=v=new P(g,x):(u.__c=v=new d(g,x),v.constructor=P,v.render=M),b&&b.sub(v),v.props=g,v.state||(v.state={}),v.context=x,v.__n=t,h=v.__d=!0,v.__h=[]),null==v.__s&&(v.__s=v.state),null!=P.getDerivedStateFromProps&&(v.__s==v.state&&(v.__s=s({},v.__s)),s(v.__s,P.getDerivedStateFromProps(g,v.__s))),y=v.props,_=v.state,h)null==P.getDerivedStateFromProps&&null!=v.componentWillMount&&v.componentWillMount(),null!=v.componentDidMount&&v.__h.push(v.componentDidMount);else {if(null==P.getDerivedStateFromProps&&g!==y&&null!=v.componentWillReceiveProps&&v.componentWillReceiveProps(g,x),!v.__e&&null!=v.shouldComponentUpdate&&!1===v.shouldComponentUpdate(g,v.__s,x)||u.__v===i.__v){v.props=g,v.state=v.__s,u.__v!==i.__v&&(v.__d=!1),v.__v=u,u.__e=i.__e,u.__k=i.__k,v.__h.length&&f.push(v),T(u,e,l);break n}null!=v.componentWillUpdate&&v.componentWillUpdate(g,v.__s,x),null!=v.componentDidUpdate&&v.__h.push(function(){v.componentDidUpdate(y,_,w);});}v.context=x,v.props=g,v.state=v.__s,(a=n.__r)&&a(u),v.__d=!1,v.__v=u,v.__P=l,a=v.render(v.props,v.state,v.context),v.state=v.__s,null!=v.getChildContext&&(t=s(s({},t),v.getChildContext())),h||null==v.getSnapshotBeforeUpdate||(w=v.getSnapshotBeforeUpdate(y,_)),A=null!=a&&a.type==p&&null==a.key?a.props.children:a,m(l,Array.isArray(A)?A:[A],u,i,t,o,r,f,e,c),v.base=u.__e,u.__h=null,v.__h.length&&f.push(v),k&&(v.__E=v.__=null),v.__e=!1;}else null==r&&u.__v===i.__v?(u.__k=i.__k,u.__e=i.__e):u.__e=H(i.__e,u,i,t,o,r,f,c);(a=n.diffed)&&a(u);}catch(l){u.__v=null,(c||null!=r)&&(u.__e=e,u.__h=!!c,r[r.indexOf(e)]=null),n.__e(l,u,i);}return u.__e}function j(l,u){n.__c&&n.__c(u,l),l.some(function(u){try{l=u.__h,u.__h=[],l.some(function(n){n.call(u);});}catch(l){n.__e(l,u.__v);}});}function H(n,l,u,i,t,o,r,c){var s,a,v,h,y,p=u.props,d=l.props;if(t="svg"===l.type||t,null!=o)for(s=0;s<o.length;s++)if(null!=(a=o[s])&&((null===l.type?3===a.nodeType:a.localName===l.type)||n==a)){n=a,o[s]=null;break}if(null==n){if(null===l.type)return document.createTextNode(d);n=t?document.createElementNS("http://www.w3.org/2000/svg",l.type):document.createElement(l.type,d.is&&{is:d.is}),o=null,c=!1;}if(null===l.type)p===d||c&&n.data===d||(n.data=d);else {if(null!=o&&(o=e.slice.call(n.childNodes)),v=(p=u.props||f).dangerouslySetInnerHTML,h=d.dangerouslySetInnerHTML,!c){if(null!=o)for(p={},y=0;y<n.attributes.length;y++)p[n.attributes[y].name]=n.attributes[y].value;(h||v)&&(h&&(v&&h.__html==v.__html||h.__html===n.innerHTML)||(n.innerHTML=h&&h.__html||""));}A(n,d,p,t,c),h?l.__k=[]:(s=l.props.children,m(n,Array.isArray(s)?s:[s],l,u,i,"foreignObject"!==l.type&&t,o,r,f,c)),c||("value"in d&&void 0!==(s=d.value)&&(s!==n.value||"progress"===l.type&&!s)&&C(n,"value",s,p.value,!1),"checked"in d&&void 0!==(s=d.checked)&&s!==n.checked&&C(n,"checked",s,p.checked,!1));}return n}function I(l,u,i){try{"function"==typeof l?l(u):l.current=u;}catch(l){n.__e(l,i);}}function L(l,u,i){var t,o,r;if(n.unmount&&n.unmount(l),(t=l.ref)&&(t.current&&t.current!==l.__e||I(t,null,u)),i||"function"==typeof l.type||(i=null!=(o=l.__e)),l.__e=l.__d=void 0,null!=(t=l.__c)){if(t.componentWillUnmount)try{t.componentWillUnmount();}catch(l){n.__e(l,u);}t.base=t.__P=null;}if(t=l.__k)for(r=0;r<t.length;r++)t[r]&&L(t[r],u,i);null!=o&&a(o);}function M(n,l,u){return this.constructor(n,u)}function O(l,u,i){var t,r,c;n.__&&n.__(l,u),r=(t=i===o)?null:i&&i.__k||u.__k,l=v(p,null,[l]),c=[],$(u,(t?u:i||u).__k=l,r||f,f,void 0!==u.ownerSVGElement,i&&!t?[i]:r?null:u.childNodes.length?e.slice.call(u.childNodes):null,c,i||f,t),j(c,l);}function B(n,l){var u={__c:l="__cC"+r++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n,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(k);},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={__e:function(n,l){for(var u,i,t,o=l.__h;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 l.__h=o,u.__E=u}catch(l){n=l;}throw n},__v:0},d.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=s({},this.state),"function"==typeof n&&(n=n(s({},u),this.props)),n&&s(u,n),null!=n&&this.__v&&(l&&this.__h.push(l),k(this));},d.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),k(this));},d.prototype.render=p,u=[],i="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,g.__r=0,o=f,r=0;
 
-    window.FullCalendarVDom = {
-        Component: m,
-        createElement: h,
-        render: H,
-        createRef: y,
-        Fragment: d,
-        createContext: createContext,
-        flushToDom: flushToDom
-    };
+    var globalObj = typeof globalThis !== 'undefined' ? globalThis : window; // // TODO: streamline when killing IE11 support
+    if (globalObj.FullCalendarVDom) {
+        console.warn('FullCalendar VDOM already loaded');
+    }
+    else {
+        globalObj.FullCalendarVDom = {
+            Component: d,
+            createElement: v,
+            render: O,
+            createRef: y,
+            Fragment: p,
+            createContext: createContext,
+            flushToDom: flushToDom,
+            unmountComponentAtNode: unmountComponentAtNode,
+        };
+    }
     // HACKS...
     // TODO: lock version
     // TODO: link gh issues
@@ -75,7 +82,7 @@ var FullCalendar = (function (exports) {
             callbackQ.push(callback);
         }
         n.debounceRendering = execCallbackSync;
-        H(h(FakeComponent, {}), document.createElement('div'));
+        O(v(FakeComponent, {}), document.createElement('div'));
         while (callbackQ.length) {
             callbackQ.shift()();
         }
@@ -86,22 +93,22 @@ var FullCalendar = (function (exports) {
         function FakeComponent() {
             return _super !== null && _super.apply(this, arguments) || this;
         }
-        FakeComponent.prototype.render = function () { return h('div', {}); };
+        FakeComponent.prototype.render = function () { return v('div', {}); };
         FakeComponent.prototype.componentDidMount = function () { this.setState({}); };
         return FakeComponent;
-    }(m));
+    }(d));
     function createContext(defaultValue) {
-        var ContextType = M(defaultValue);
+        var ContextType = B(defaultValue);
         var origProvider = ContextType.Provider;
         ContextType.Provider = function () {
             var _this = this;
             var isNew = !this.getChildContext;
-            var children = origProvider.apply(this, arguments);
+            var children = origProvider.apply(this, arguments); // eslint-disable-line prefer-rest-params
             if (isNew) {
                 var subs_1 = [];
                 this.shouldComponentUpdate = function (_props) {
                     if (_this.props.value !== _props.value) {
-                        subs_1.some(function (c) {
+                        subs_1.forEach(function (c) {
                             c.context = _props.value;
                             c.forceUpdate();
                         });
@@ -120,25 +127,27 @@ var FullCalendar = (function (exports) {
         };
         return ContextType;
     }
+    function unmountComponentAtNode(node) {
+        O(null, node);
+    }
 
     // no public types yet. when there are, export from:
     // import {} from './api-type-deps'
     var EventSourceApi = /** @class */ (function () {
-        function EventSourceApi(context, internalEventSource // rename?
-        ) {
+        function EventSourceApi(context, internalEventSource) {
             this.context = context;
             this.internalEventSource = internalEventSource;
         }
         EventSourceApi.prototype.remove = function () {
             this.context.dispatch({
                 type: 'REMOVE_EVENT_SOURCE',
-                sourceId: this.internalEventSource.sourceId
+                sourceId: this.internalEventSource.sourceId,
             });
         };
         EventSourceApi.prototype.refetch = function () {
             this.context.dispatch({
                 type: 'FETCH_EVENT_SOURCES',
-                sourceIds: [this.internalEventSource.sourceId]
+                sourceIds: [this.internalEventSource.sourceId],
             });
         };
         Object.defineProperty(EventSourceApi.prototype, "id", {
@@ -149,82 +158,35 @@ var FullCalendar = (function (exports) {
             configurable: true
         });
         Object.defineProperty(EventSourceApi.prototype, "url", {
-            // only relevant to json-feed event sources
             get: function () {
                 return this.internalEventSource.meta.url;
             },
             enumerable: false,
             configurable: true
         });
+        Object.defineProperty(EventSourceApi.prototype, "format", {
+            get: function () {
+                return this.internalEventSource.meta.format; // TODO: bad. not guaranteed
+            },
+            enumerable: false,
+            configurable: true
+        });
         return EventSourceApi;
     }());
 
-    // TODO: new util arrayify?
-    function removeExact(array, exactVal) {
-        var removeCnt = 0;
-        var i = 0;
-        while (i < array.length) {
-            if (array[i] === exactVal) {
-                array.splice(i, 1);
-                removeCnt++;
-            }
-            else {
-                i++;
-            }
-        }
-        return removeCnt;
-    }
-    function isArraysEqual(a0, a1, equalityFunc) {
-        if (a0 === a1) {
-            return true;
-        }
-        var len = a0.length;
-        var i;
-        if (len !== a1.length) { // not array? or not same length?
-            return false;
-        }
-        for (i = 0; i < len; i++) {
-            if (!(equalityFunc ? equalityFunc(a0[i], a1[i]) : a0[i] === a1[i])) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    function htmlToElement(html) {
-        html = html.trim();
-        var container = document.createElement('div');
-        container.innerHTML = html;
-        return container.firstChild;
-    }
     function removeElement(el) {
         if (el.parentNode) {
             el.parentNode.removeChild(el);
         }
     }
-    function injectHtml(el, html) {
-        el.innerHTML = html;
-    }
-    function injectDomNodes(el, domNodes) {
-        var oldNodes = Array.prototype.slice.call(el.childNodes); // TODO: use array util
-        var newNodes = Array.prototype.slice.call(domNodes); // TODO: use array util
-        if (!isArraysEqual(oldNodes, newNodes)) {
-            for (var _i = 0, newNodes_1 = newNodes; _i < newNodes_1.length; _i++) {
-                var newNode = newNodes_1[_i];
-                el.appendChild(newNode);
-            }
-            oldNodes.forEach(removeElement);
-        }
-    }
     // Querying
     // ----------------------------------------------------------------------------------------------------------------
-    // from https://developer.mozilla.org/en-US/docs/Web/API/Element/closest
-    var matchesMethod = Element.prototype.matches ||
-        Element.prototype.matchesSelector ||
-        Element.prototype.msMatchesSelector;
-    var closestMethod = Element.prototype.closest || function (selector) {
-        // polyfill
-        var el = this;
+    function elementClosest(el, selector) {
+        if (el.closest) {
+            return el.closest(selector);
+            // really bad fallback for IE
+            // from https://developer.mozilla.org/en-US/docs/Web/API/Element/closest
+        }
         if (!document.documentElement.contains(el)) {
             return null;
         }
@@ -232,15 +194,13 @@ var FullCalendar = (function (exports) {
             if (elementMatches(el, selector)) {
                 return el;
             }
-            el = el.parentElement || el.parentNode;
+            el = (el.parentElement || el.parentNode);
         } while (el !== null && el.nodeType === 1);
         return null;
-    };
-    function elementClosest(el, selector) {
-        return closestMethod.call(el, selector);
     }
     function elementMatches(el, selector) {
-        return matchesMethod.call(el, selector);
+        var method = el.matches || el.matchesSelector || el.msMatchesSelector;
+        return method.call(el, selector);
     }
     // accepts multiple subject els
     // returns a real array. good for methods like forEach
@@ -248,9 +208,9 @@ var FullCalendar = (function (exports) {
     function findElements(container, selector) {
         var containers = container instanceof HTMLElement ? [container] : container;
         var allMatches = [];
-        for (var i = 0; i < containers.length; i++) {
+        for (var i = 0; i < containers.length; i += 1) {
             var matches = containers[i].querySelectorAll(selector);
-            for (var j = 0; j < matches.length; j++) {
+            for (var j = 0; j < matches.length; j += 1) {
                 allMatches.push(matches[j]);
             }
         }
@@ -261,9 +221,9 @@ var FullCalendar = (function (exports) {
     function findDirectChildren(parent, selector) {
         var parents = parent instanceof HTMLElement ? [parent] : parent;
         var allMatches = [];
-        for (var i = 0; i < parents.length; i++) {
+        for (var i = 0; i < parents.length; i += 1) {
             var childNodes = parents[i].children; // only ever elements
-            for (var j = 0; j < childNodes.length; j++) {
+            for (var j = 0; j < childNodes.length; j += 1) {
                 var childNode = childNodes[j];
                 if (!selector || elementMatches(childNode, selector)) {
                     allMatches.push(childNode);
@@ -285,7 +245,7 @@ var FullCalendar = (function (exports) {
             el.style[name] = '';
         }
         else if (typeof val === 'number' && PIXEL_PROP_RE.test(name)) {
-            el.style[name] = val + 'px';
+            el.style[name] = val + "px";
         }
         else {
             el.style[name] = val;
@@ -315,13 +275,13 @@ var FullCalendar = (function (exports) {
     }
     function listenToHoverBySelector(container, selector, onMouseEnter, onMouseLeave) {
         var currentMatchedChild;
-        return listenBySelector(container, 'mouseover', selector, function (ev, matchedChild) {
+        return listenBySelector(container, 'mouseover', selector, function (mouseOverEv, matchedChild) {
             if (matchedChild !== currentMatchedChild) {
                 currentMatchedChild = matchedChild;
-                onMouseEnter(ev, matchedChild);
-                var realOnMouseLeave_1 = function (ev) {
+                onMouseEnter(mouseOverEv, matchedChild);
+                var realOnMouseLeave_1 = function (mouseLeaveEv) {
                     currentMatchedChild = null;
-                    onMouseLeave(ev, matchedChild);
+                    onMouseLeave(mouseLeaveEv, matchedChild);
                     matchedChild.removeEventListener('mouseleave', realOnMouseLeave_1);
                 };
                 // listen to the next mouseleave, and then unattach
@@ -336,7 +296,7 @@ var FullCalendar = (function (exports) {
         'otransitionend',
         'oTransitionEnd',
         'msTransitionEnd',
-        'transitionend'
+        'transitionend',
     ];
     // triggered only when the next single subsequent transition finishes
     function whenTransitionDone(el, callback) {
@@ -353,7 +313,8 @@ var FullCalendar = (function (exports) {
 
     var guidNumber = 0;
     function guid() {
-        return String(guidNumber++);
+        guidNumber += 1;
+        return String(guidNumber);
     }
     /* FullCalendar-specific DOM Utilities
     ----------------------------------------------------------------------------------------------------------------------*/
@@ -397,7 +358,7 @@ var FullCalendar = (function (exports) {
         else if (Array.isArray(input)) {
             tokens = input;
         }
-        for (i = 0; i < tokens.length; i++) {
+        for (i = 0; i < tokens.length; i += 1) {
             token = tokens[i];
             if (typeof token === 'string') {
                 specs.push(token.charAt(0) === '-' ?
@@ -413,7 +374,7 @@ var FullCalendar = (function (exports) {
     function compareByFieldSpecs(obj0, obj1, fieldSpecs) {
         var i;
         var cmp;
-        for (i = 0; i < fieldSpecs.length; i++) {
+        for (i = 0; i < fieldSpecs.length; i += 1) {
             cmp = compareByFieldSpec(obj0, obj1, fieldSpecs[i]);
             if (cmp) {
                 return cmp;
@@ -513,7 +474,7 @@ var FullCalendar = (function (exports) {
             years: 0,
             months: 0,
             days: Math.round(diffDays(m0day, m1day)),
-            milliseconds: (m1.valueOf() - m1day.valueOf()) - (m0.valueOf() - m0day.valueOf())
+            milliseconds: (m1.valueOf() - m1day.valueOf()) - (m0.valueOf() - m0day.valueOf()),
         };
     }
     // Diffing Whole Units
@@ -535,7 +496,7 @@ var FullCalendar = (function (exports) {
         return arrayToUtcDate([
             m.getUTCFullYear(),
             m.getUTCMonth(),
-            m.getUTCDate()
+            m.getUTCDate(),
         ]);
     }
     function startOfHour(m) {
@@ -543,7 +504,7 @@ var FullCalendar = (function (exports) {
             m.getUTCFullYear(),
             m.getUTCMonth(),
             m.getUTCDate(),
-            m.getUTCHours()
+            m.getUTCHours(),
         ]);
     }
     function startOfMinute(m) {
@@ -552,7 +513,7 @@ var FullCalendar = (function (exports) {
             m.getUTCMonth(),
             m.getUTCDate(),
             m.getUTCHours(),
-            m.getUTCMinutes()
+            m.getUTCMinutes(),
         ]);
     }
     function startOfSecond(m) {
@@ -562,7 +523,7 @@ var FullCalendar = (function (exports) {
             m.getUTCDate(),
             m.getUTCHours(),
             m.getUTCMinutes(),
-            m.getUTCSeconds()
+            m.getUTCSeconds(),
         ]);
     }
     // Week Computation
@@ -601,7 +562,7 @@ var FullCalendar = (function (exports) {
             date.getHours(),
             date.getMinutes(),
             date.getSeconds(),
-            date.getMilliseconds()
+            date.getMilliseconds(),
         ];
     }
     function arrayToLocalDate(a) {
@@ -616,7 +577,7 @@ var FullCalendar = (function (exports) {
             date.getUTCHours(),
             date.getUTCMinutes(),
             date.getUTCSeconds(),
-            date.getUTCMilliseconds()
+            date.getUTCMilliseconds(),
         ];
     }
     function arrayToUtcDate(a) {
@@ -644,7 +605,7 @@ var FullCalendar = (function (exports) {
             defId: defId,
             range: range,
             forcedStartTzo: forcedStartTzo == null ? null : forcedStartTzo,
-            forcedEndTzo: forcedEndTzo == null ? null : forcedEndTzo
+            forcedEndTzo: forcedEndTzo == null ? null : forcedEndTzo,
         };
     }
 
@@ -657,7 +618,7 @@ var FullCalendar = (function (exports) {
             for (var name_1 in complexPropsMap) {
                 var complexObjs = [];
                 // collect the trailing object values, stopping when a non-object is discovered
-                for (var i = propObjs.length - 1; i >= 0; i--) {
+                for (var i = propObjs.length - 1; i >= 0; i -= 1) {
                     var val = propObjs[i][name_1];
                     if (typeof val === 'object' && val) { // non-null object
                         complexObjs.unshift(val);
@@ -674,7 +635,7 @@ var FullCalendar = (function (exports) {
             }
         }
         // copy values into the destination, going from last to first
-        for (var i = propObjs.length - 1; i >= 0; i--) {
+        for (var i = propObjs.length - 1; i >= 0; i -= 1) {
             var props = propObjs[i];
             for (var name_2 in props) {
                 if (!(name_2 in dest)) { // if already assigned by previous props or complex props, don't reassign
@@ -710,7 +671,7 @@ var FullCalendar = (function (exports) {
     }
     function buildHashFromArray(a, func) {
         var hash = {};
-        for (var i = 0; i < a.length; i++) {
+        for (var i = 0; i < a.length; i += 1) {
             var tuple = func(a[i], i);
             hash[tuple[0]] = tuple[1];
         }
@@ -809,7 +770,7 @@ var FullCalendar = (function (exports) {
     }
 
     function parseRecurring(refined, defaultAllDay, dateEnv, recurringTypes) {
-        for (var i = 0; i < recurringTypes.length; i++) {
+        for (var i = 0; i < recurringTypes.length; i += 1) {
             var parsed = recurringTypes[i].parse(refined, dateEnv);
             if (parsed) {
                 var allDay = refined.allDay;
@@ -826,7 +787,7 @@ var FullCalendar = (function (exports) {
                     allDay: allDay,
                     duration: parsed.duration,
                     typeData: parsed.typeData,
-                    typeId: i
+                    typeId: i,
                 };
             }
         }
@@ -837,9 +798,7 @@ var FullCalendar = (function (exports) {
         var defs = eventStore.defs, instances = eventStore.instances;
         // remove existing recurring instances
         // TODO: bad. always expand events as a second step
-        instances = filterHash(instances, function (instance) {
-            return !defs[instance.defId].recurringDef;
-        });
+        instances = filterHash(instances, function (instance) { return !defs[instance.defId].recurringDef; });
         for (var defId in defs) {
             var def = defs[defId];
             if (def.recurringDef) {
@@ -854,7 +813,7 @@ var FullCalendar = (function (exports) {
                     var start = starts_1[_i];
                     var instance = createEventInstance(defId, {
                         start: start,
-                        end: dateEnv.add(start, duration)
+                        end: dateEnv.add(start, duration),
                     });
                     instances[instance.instanceId] = instance;
                 }
@@ -869,7 +828,7 @@ var FullCalendar = (function (exports) {
         var typeDef = recurringTypes[eventDef.recurringDef.typeId];
         var markers = typeDef.expand(eventDef.recurringDef.typeData, {
             start: dateEnv.subtract(framingRange.start, duration),
-            end: framingRange.end
+            end: framingRange.end,
         }, dateEnv);
         // the recurrence plugins don't guarantee that all-day events are start-of-day, so we have to
         if (eventDef.allDay) {
@@ -886,15 +845,13 @@ var FullCalendar = (function (exports) {
         if (typeof input === 'string') {
             return parseString(input);
         }
-        else if (typeof input === 'object' && input) { // non-null object
+        if (typeof input === 'object' && input) { // non-null object
             return parseObject(input);
         }
-        else if (typeof input === 'number') {
+        if (typeof input === 'number') {
             return parseObject((_a = {}, _a[unit || 'milliseconds'] = input, _a));
         }
-        else {
-            return null;
-        }
+        return null;
     }
     function parseString(s) {
         var m = PARSE_RE.exec(s);
@@ -908,7 +865,7 @@ var FullCalendar = (function (exports) {
                     (m[4] ? parseInt(m[4], 10) : 0) * 60 * 1000 + // minutes
                     (m[5] ? parseInt(m[5], 10) : 0) * 1000 + // seconds
                     (m[6] ? parseInt(m[6], 10) : 0) // ms
-                )
+                ),
             };
         }
         return null;
@@ -921,7 +878,7 @@ var FullCalendar = (function (exports) {
             milliseconds: (obj.hours || obj.hour || 0) * 60 * 60 * 1000 + // hours
                 (obj.minutes || obj.minute || 0) * 60 * 1000 + // minutes
                 (obj.seconds || obj.second || 0) * 1000 + // seconds
-                (obj.milliseconds || obj.millisecond || obj.ms || 0) // ms
+                (obj.milliseconds || obj.millisecond || obj.ms || 0),
         };
         var weeks = obj.weeks || obj.week;
         if (weeks) {
@@ -937,8 +894,11 @@ var FullCalendar = (function (exports) {
             d0.days === d1.days &&
             d0.milliseconds === d1.milliseconds;
     }
-    function isSingleDay(dur) {
-        return dur.years === 0 && dur.months === 0 && dur.days === 1 && dur.milliseconds === 0;
+    function asCleanDays(dur) {
+        if (!dur.years && !dur.months && !dur.milliseconds) {
+            return dur.days;
+        }
+        return 0;
     }
     // Simple Math
     function addDurations(d0, d1) {
@@ -946,7 +906,7 @@ var FullCalendar = (function (exports) {
             years: d0.years + d1.years,
             months: d0.months + d1.months,
             days: d0.days + d1.days,
-            milliseconds: d0.milliseconds + d1.milliseconds
+            milliseconds: d0.milliseconds + d1.milliseconds,
         };
     }
     function subtractDurations(d1, d0) {
@@ -954,7 +914,7 @@ var FullCalendar = (function (exports) {
             years: d1.years - d0.years,
             months: d1.months - d0.months,
             days: d1.days - d0.days,
-            milliseconds: d1.milliseconds - d0.milliseconds
+            milliseconds: d1.milliseconds - d0.milliseconds,
         };
     }
     function multiplyDuration(d, n) {
@@ -962,7 +922,7 @@ var FullCalendar = (function (exports) {
             years: d.years * n,
             months: d.months * n,
             days: d.days * n,
-            milliseconds: d.milliseconds * n
+            milliseconds: d.milliseconds * n,
         };
     }
     // Conversions
@@ -991,7 +951,7 @@ var FullCalendar = (function (exports) {
     // Advanced Math
     function wholeDivideDurations(numerator, denominator) {
         var res = null;
-        for (var i = 0; i < INTERNAL_UNITS.length; i++) {
+        for (var i = 0; i < INTERNAL_UNITS.length; i += 1) {
             var unit = INTERNAL_UNITS[i];
             if (denominator[unit]) {
                 var localRes = numerator[unit] / denominator[unit];
@@ -1076,11 +1036,41 @@ var FullCalendar = (function (exports) {
         var hours = Math.floor(abs / 60);
         var mins = Math.round(abs % 60);
         if (doIso) {
-            return sign + padStart(hours, 2) + ':' + padStart(mins, 2);
+            return sign + padStart(hours, 2) + ":" + padStart(mins, 2);
         }
-        else {
-            return 'GMT' + sign + hours + (mins ? ':' + padStart(mins, 2) : '');
+        return "GMT" + sign + hours + (mins ? ":" + padStart(mins, 2) : '');
+    }
+
+    // TODO: new util arrayify?
+    function removeExact(array, exactVal) {
+        var removeCnt = 0;
+        var i = 0;
+        while (i < array.length) {
+            if (array[i] === exactVal) {
+                array.splice(i, 1);
+                removeCnt += 1;
+            }
+            else {
+                i += 1;
+            }
+        }
+        return removeCnt;
+    }
+    function isArraysEqual(a0, a1, equalityFunc) {
+        if (a0 === a1) {
+            return true;
+        }
+        var len = a0.length;
+        var i;
+        if (len !== a1.length) { // not array? or not same length?
+            return false;
+        }
+        for (i = 0; i < len; i += 1) {
+            if (!(equalityFunc ? equalityFunc(a0[i], a1[i]) : a0[i] === a1[i])) {
+                return false;
+            }
         }
+        return true;
     }
 
     function memoize(workerFunc, resEquality, teardownFunc) {
@@ -1108,17 +1098,18 @@ var FullCalendar = (function (exports) {
         };
     }
     function memoizeObjArg(workerFunc, resEquality, teardownFunc) {
+        var _this = this;
         var currentArg;
         var currentRes;
         return function (newArg) {
             if (!currentArg) {
-                currentRes = workerFunc.call(this, newArg);
+                currentRes = workerFunc.call(_this, newArg);
             }
             else if (!isPropsEqual(currentArg, newArg)) {
                 if (teardownFunc) {
                     teardownFunc(currentRes);
                 }
-                var res = workerFunc.call(this, newArg);
+                var res = workerFunc.call(_this, newArg);
                 if (!resEquality || !resEquality(res, currentRes)) {
                     currentRes = res;
                 }
@@ -1129,13 +1120,14 @@ var FullCalendar = (function (exports) {
     }
     function memoizeArraylike(// used at all?
     workerFunc, resEquality, teardownFunc) {
+        var _this = this;
         var currentArgSets = [];
         var currentResults = [];
         return function (newArgSets) {
             var currentLen = currentArgSets.length;
             var newLen = newArgSets.length;
             var i = 0;
-            for (; i < currentLen; i++) {
+            for (; i < currentLen; i += 1) {
                 if (!newArgSets[i]) { // one of the old sets no longer exists
                     if (teardownFunc) {
                         teardownFunc(currentResults[i]);
@@ -1145,14 +1137,14 @@ var FullCalendar = (function (exports) {
                     if (teardownFunc) {
                         teardownFunc(currentResults[i]);
                     }
-                    var res = workerFunc.apply(this, newArgSets[i]);
+                    var res = workerFunc.apply(_this, newArgSets[i]);
                     if (!resEquality || !resEquality(res, currentResults[i])) {
                         currentResults[i] = res;
                     }
                 }
             }
-            for (; i < newLen; i++) {
-                currentResults[i] = workerFunc.apply(this, newArgSets[i]);
+            for (; i < newLen; i += 1) {
+                currentResults[i] = workerFunc.apply(_this, newArgSets[i]);
             }
             currentArgSets = newArgSets;
             currentResults.splice(newLen); // remove excess
@@ -1160,21 +1152,21 @@ var FullCalendar = (function (exports) {
         };
     }
     function memoizeHashlike(// used?
-    workerFunc, resEquality, teardownFunc // TODO: change arg order
-    ) {
+    workerFunc, resEquality, teardownFunc) {
+        var _this = this;
         var currentArgHash = {};
         var currentResHash = {};
         return function (newArgHash) {
             var newResHash = {};
             for (var key in newArgHash) {
                 if (!currentResHash[key]) {
-                    newResHash[key] = workerFunc.apply(this, newArgHash[key]);
+                    newResHash[key] = workerFunc.apply(_this, newArgHash[key]);
                 }
                 else if (!isArraysEqual(currentArgHash[key], newArgHash[key])) {
                     if (teardownFunc) {
                         teardownFunc(currentResHash[key]);
                     }
-                    var res = workerFunc.apply(this, newArgHash[key]);
+                    var res = workerFunc.apply(_this, newArgHash[key]);
                     newResHash[key] = (resEquality && resEquality(res, currentResHash[key]))
                         ? currentResHash[key]
                         : res;
@@ -1194,7 +1186,7 @@ var FullCalendar = (function (exports) {
         separator: 0,
         omitZeroMinute: 0,
         meridiem: 0,
-        omitCommas: 0
+        omitCommas: 0,
     };
     var STANDARD_DATE_PROP_SEVERITIES = {
         timeZoneName: 7,
@@ -1205,7 +1197,7 @@ var FullCalendar = (function (exports) {
         weekday: 2,
         hour: 1,
         minute: 1,
-        second: 1
+        second: 1,
     };
     var MERIDIEM_RE = /\s*([ap])\.?m\.?/i; // eats up leading spaces too
     var COMMA_RE = /,/g; // we need re for globalness
@@ -1287,14 +1279,10 @@ var FullCalendar = (function (exports) {
     function buildFormattingFunc(standardDateProps, extendedSettings, context) {
         var standardDatePropCnt = Object.keys(standardDateProps).length;
         if (standardDatePropCnt === 1 && standardDateProps.timeZoneName === 'short') {
-            return function (date) {
-                return formatTimeZoneOffset(date.timeZoneOffset);
-            };
+            return function (date) { return (formatTimeZoneOffset(date.timeZoneOffset)); };
         }
         if (standardDatePropCnt === 0 && extendedSettings.week) {
-            return function (date) {
-                return formatWeekNumber(context.computeWeekNumber(date.marker), context.weekText, context.locale, extendedSettings.week);
-            };
+            return function (date) { return (formatWeekNumber(context.computeWeekNumber(date.marker), context.weekText, context.locale, extendedSettings.week)); };
         }
         return buildNativeFormattingFunc(standardDateProps, extendedSettings, context);
     }
@@ -1362,19 +1350,13 @@ var FullCalendar = (function (exports) {
             s = s.replace(MERIDIEM_RE, '').trim();
         }
         else if (extendedSettings.meridiem === 'narrow') { // a/p
-            s = s.replace(MERIDIEM_RE, function (m0, m1) {
-                return m1.toLocaleLowerCase();
-            });
+            s = s.replace(MERIDIEM_RE, function (m0, m1) { return m1.toLocaleLowerCase(); });
         }
         else if (extendedSettings.meridiem === 'short') { // am/pm
-            s = s.replace(MERIDIEM_RE, function (m0, m1) {
-                return m1.toLocaleLowerCase() + 'm';
-            });
+            s = s.replace(MERIDIEM_RE, function (m0, m1) { return m1.toLocaleLowerCase() + "m"; });
         }
         else if (extendedSettings.meridiem === 'lowercase') { // other meridiem transformers already converted to lowercase
-            s = s.replace(MERIDIEM_RE, function (m0) {
-                return m0.toLocaleLowerCase();
-            });
+            s = s.replace(MERIDIEM_RE, function (m0) { return m0.toLocaleLowerCase(); });
         }
         s = s.replace(MULTI_SPACE_RE, ' ');
         s = s.trim();
@@ -1388,7 +1370,7 @@ var FullCalendar = (function (exports) {
         });
         // IE11 doesn't include UTC/GMT in the original string, so append to end
         if (!replaced) {
-            s += ' ' + tzoStr;
+            s += " " + tzoStr;
         }
         return s;
     }
@@ -1458,7 +1440,7 @@ var FullCalendar = (function (exports) {
                 if (before0 === before1 && after0 === after1) {
                     return {
                         before: before0,
-                        after: after0
+                        after: after0,
                     };
                 }
             }
@@ -1478,7 +1460,7 @@ var FullCalendar = (function (exports) {
             hour: a[3],
             minute: a[4],
             second: a[5],
-            millisecond: a[6]
+            millisecond: a[6],
         };
     }
 
@@ -1491,7 +1473,7 @@ var FullCalendar = (function (exports) {
             end: endInfo,
             timeZone: context.timeZone,
             localeCodes: context.locale.codes,
-            defaultSeparator: betterDefaultSeparator || context.defaultSeparator
+            defaultSeparator: betterDefaultSeparator || context.defaultSeparator,
         };
     }
 
@@ -1532,12 +1514,13 @@ var FullCalendar = (function (exports) {
         if (typeof input === 'object' && input) { // non-null object
             return new NativeFormatter(input);
         }
-        else if (typeof input === 'string') {
+        if (typeof input === 'string') {
             return new CmdFormatter(input);
         }
-        else if (typeof input === 'function') {
+        if (typeof input === 'function') {
             return new FuncFormatter(input);
         }
+        return null;
     }
 
     // base options
@@ -1691,7 +1674,7 @@ var FullCalendar = (function (exports) {
         visibleRange: identity,
         titleFormat: identity,
         // only used by list-view, but languages define the value, so we need it in base options
-        noEventsText: String
+        noEventsText: String,
     };
     // do NOT give a type here. need `typeof BASE_OPTION_DEFAULTS` to give real results.
     // raw values.
@@ -1709,7 +1692,7 @@ var FullCalendar = (function (exports) {
         headerToolbar: {
             start: 'title',
             center: '',
-            end: 'today prev,next'
+            end: 'today prev,next',
         },
         weekends: true,
         weekNumbers: false,
@@ -1741,7 +1724,7 @@ var FullCalendar = (function (exports) {
         eventDragMinDistance: 5,
         expandRows: false,
         navLinks: false,
-        selectable: false
+        selectable: false,
     };
     // calendar listeners
     // ------------------
@@ -1765,7 +1748,7 @@ var FullCalendar = (function (exports) {
         _noEventDrop: identity,
         _noEventResize: identity,
         _resize: identity,
-        _scrollRequest: identity
+        _scrollRequest: identity,
     };
     // calendar-specific options
     // -------------------------
@@ -1775,21 +1758,19 @@ var FullCalendar = (function (exports) {
         plugins: identity,
         initialEvents: identity,
         events: identity,
-        eventSources: identity
+        eventSources: identity,
     };
     var COMPLEX_OPTION_COMPARATORS = {
         headerToolbar: isBoolComplexEqual,
         footerToolbar: isBoolComplexEqual,
         buttonText: isBoolComplexEqual,
-        buttonIcons: isBoolComplexEqual
+        buttonIcons: isBoolComplexEqual,
     };
     function isBoolComplexEqual(a, b) {
         if (typeof a === 'object' && typeof b === 'object' && a && b) { // both non-null objects
             return isPropsEqual(a, b);
         }
-        else {
-            return a === b;
-        }
+        return a === b;
     }
     // view-specific options
     // ---------------------
@@ -1803,7 +1784,7 @@ var FullCalendar = (function (exports) {
         classNames: identity,
         content: identity,
         didMount: identity,
-        willUnmount: identity
+        willUnmount: identity,
     };
     // util funcs
     // ----------------------------------------------------------------------------------------------------
@@ -1857,9 +1838,7 @@ var FullCalendar = (function (exports) {
         if (instance) {
             var def_1 = eventStore.defs[instance.defId];
             // get events/instances with same group
-            var newStore = filterEventStoreDefs(eventStore, function (lookDef) {
-                return isEventDefsGrouped(def_1, lookDef);
-            });
+            var newStore = filterEventStoreDefs(eventStore, function (lookDef) { return isEventDefsGrouped(def_1, lookDef); });
             // add the original
             // TODO: wish we could use eventTupleToStore or something like it
             newStore.defs[def_1.defId] = def_1;
@@ -1877,14 +1856,13 @@ var FullCalendar = (function (exports) {
     function mergeEventStores(store0, store1) {
         return {
             defs: __assign(__assign({}, store0.defs), store1.defs),
-            instances: __assign(__assign({}, store0.instances), store1.instances)
+            instances: __assign(__assign({}, store0.instances), store1.instances),
         };
     }
     function filterEventStoreDefs(eventStore, filterFunc) {
         var defs = filterHash(eventStore.defs, filterFunc);
-        var instances = filterHash(eventStore.instances, function (instance) {
-            return defs[instance.defId]; // still exists?
-        });
+        var instances = filterHash(eventStore.instances, function (instance) { return (defs[instance.defId] // still exists?
+        ); });
         return { defs: defs, instances: instances };
     }
     function excludeSubEventStore(master, sub) {
@@ -1905,7 +1883,7 @@ var FullCalendar = (function (exports) {
         }
         return {
             defs: filteredDefs,
-            instances: filteredInstances
+            instances: filteredInstances,
         };
     }
 
@@ -1913,27 +1891,23 @@ var FullCalendar = (function (exports) {
         if (Array.isArray(input)) {
             return parseEvents(input, null, context, true); // allowOpenRange=true
         }
-        else if (typeof input === 'object' && input) { // non-null object
+        if (typeof input === 'object' && input) { // non-null object
             return parseEvents([input], null, context, true); // allowOpenRange=true
         }
-        else if (input != null) {
+        if (input != null) {
             return String(input);
         }
-        else {
-            return null;
-        }
+        return null;
     }
 
     function parseClassNames(raw) {
         if (Array.isArray(raw)) {
             return raw;
         }
-        else if (typeof raw === 'string') {
+        if (typeof raw === 'string') {
             return raw.split(/\s+/);
         }
-        else {
-            return [];
-        }
+        return [];
     }
 
     // TODO: better called "EventSettings" or "EventConfig"
@@ -1952,7 +1926,19 @@ var FullCalendar = (function (exports) {
         color: String,
         backgroundColor: String,
         borderColor: String,
-        textColor: String
+        textColor: String,
+    };
+    var EMPTY_EVENT_UI = {
+        display: null,
+        startEditable: null,
+        durationEditable: null,
+        constraints: [],
+        overlap: null,
+        allows: [],
+        backgroundColor: '',
+        borderColor: '',
+        textColor: '',
+        classNames: [],
     };
     function createEventUi(refined, context) {
         var constraint = normalizeConstraint(refined.constraint, context);
@@ -1966,7 +1952,7 @@ var FullCalendar = (function (exports) {
             backgroundColor: refined.backgroundColor || refined.color || '',
             borderColor: refined.borderColor || refined.color || '',
             textColor: refined.textColor || '',
-            classNames: (refined.className || []).concat(refined.classNames || []) // join singular and plural
+            classNames: (refined.className || []).concat(refined.classNames || []),
         };
     }
     // TODO: prevent against problems with <2 args!
@@ -1984,33 +1970,21 @@ var FullCalendar = (function (exports) {
             backgroundColor: item1.backgroundColor || item0.backgroundColor,
             borderColor: item1.borderColor || item0.borderColor,
             textColor: item1.textColor || item0.textColor,
-            classNames: item0.classNames.concat(item1.classNames)
+            classNames: item0.classNames.concat(item1.classNames),
         };
     }
-    var EMPTY_EVENT_UI = {
-        display: null,
-        startEditable: null,
-        durationEditable: null,
-        constraints: [],
-        overlap: null,
-        allows: [],
-        backgroundColor: '',
-        borderColor: '',
-        textColor: '',
-        classNames: []
-    };
 
     var EVENT_NON_DATE_REFINERS = {
         id: String,
         groupId: String,
         title: String,
-        url: String
+        url: String,
     };
     var EVENT_DATE_REFINERS = {
         start: identity,
         end: identity,
         date: identity,
-        allDay: Boolean
+        allDay: Boolean,
     };
     var EVENT_REFINERS = __assign(__assign(__assign({}, EVENT_NON_DATE_REFINERS), EVENT_DATE_REFINERS), { extendedProps: identity });
     function parseEvent(raw, eventSource, context, allowOpenRange, refiners) {
@@ -2023,17 +1997,15 @@ var FullCalendar = (function (exports) {
             def.recurringDef = {
                 typeId: recurringRes.typeId,
                 typeData: recurringRes.typeData,
-                duration: recurringRes.duration
+                duration: recurringRes.duration,
             };
             return { def: def, instance: null };
         }
-        else {
-            var singleRes = parseSingle(refined, defaultAllDay, context, allowOpenRange);
-            if (singleRes) {
-                var def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', singleRes.allDay, singleRes.hasEnd, context);
-                var instance = createEventInstance(def.defId, singleRes.range, singleRes.forcedStartTzo, singleRes.forcedEndTzo);
-                return { def: def, instance: instance };
-            }
+        var singleRes = parseSingle(refined, defaultAllDay, context, allowOpenRange);
+        if (singleRes) {
+            var def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', singleRes.allDay, singleRes.hasEnd, context);
+            var instance = createEventInstance(def.defId, singleRes.range, singleRes.forcedStartTzo, singleRes.forcedEndTzo);
+            return { def: def, instance: instance };
         }
         return null;
     }
@@ -2060,7 +2032,7 @@ var FullCalendar = (function (exports) {
             allDay: allDay,
             hasEnd: hasEnd,
             ui: createEventUi(refined, context),
-            extendedProps: __assign(__assign({}, (refined.extendedProps || {})), extra)
+            extendedProps: __assign(__assign({}, (refined.extendedProps || {})), extra),
         };
         for (var _i = 0, _a = context.pluginHooks.eventDefMemberAdders; _i < _a.length; _i++) {
             var memberAdder = _a[_i];
@@ -2125,7 +2097,7 @@ var FullCalendar = (function (exports) {
             hasEnd: hasEnd,
             range: { start: startMarker, end: endMarker },
             forcedStartTzo: startMeta ? startMeta.forcedTzo : null,
-            forcedEndTzo: endMeta ? endMeta.forcedTzo : null
+            forcedEndTzo: endMeta ? endMeta.forcedTzo : null,
         };
     }
     function computeIsDefaultAllDay(eventSource, context) {
@@ -2183,12 +2155,10 @@ var FullCalendar = (function (exports) {
         if (largeUnit === 'year') {
             return createDuration(dateEnv.diffWholeYears(date0, date1), 'year');
         }
-        else if (largeUnit === 'month') {
+        if (largeUnit === 'month') {
             return createDuration(dateEnv.diffWholeMonths(date0, date1), 'month');
         }
-        else {
-            return diffDayAndTime(date0, date1); // returns a duration
-        }
+        return diffDayAndTime(date0, date1); // returns a duration
     }
 
     function parseRange(input, dateEnv) {
@@ -2217,7 +2187,7 @@ var FullCalendar = (function (exports) {
         var dateRange;
         // ranges need to be in order. required for our date-walking algorithm
         ranges.sort(compareRanges);
-        for (i = 0; i < ranges.length; i++) {
+        for (i = 0; i < ranges.length; i += 1) {
             dateRange = ranges[i];
             // add the span of time before the event (if there is any)
             if (dateRange.start > start) { // compare millisecond time (skip any ambig logic)
@@ -2237,8 +2207,7 @@ var FullCalendar = (function (exports) {
         return range0.start.valueOf() - range1.start.valueOf(); // earlier ranges go first
     }
     function intersectRanges(range0, range1) {
-        var start = range0.start;
-        var end = range0.end;
+        var start = range0.start, end = range0.end;
         var newRange = null;
         if (range1.start !== null) {
             if (start === null) {
@@ -2339,7 +2308,7 @@ var FullCalendar = (function (exports) {
                         instance: instance,
                         range: slicedRange,
                         isStart: normalRange.start && normalRange.start.valueOf() === slicedRange.start.valueOf(),
-                        isEnd: normalRange.end && normalRange.end.valueOf() === slicedRange.end.valueOf()
+                        isEnd: normalRange.end && normalRange.end.valueOf() === slicedRange.end.valueOf(),
                     });
                 }
             }
@@ -2357,7 +2326,7 @@ var FullCalendar = (function (exports) {
                     instance: null,
                     range: invertedRange,
                     isStart: false,
-                    isEnd: false
+                    isEnd: false,
                 });
             }
         }
@@ -2372,7 +2341,7 @@ var FullCalendar = (function (exports) {
                     instance: null,
                     range: invertedRange,
                     isStart: false,
-                    isEnd: false
+                    isEnd: false,
                 });
             }
         }
@@ -2391,9 +2360,7 @@ var FullCalendar = (function (exports) {
     }
     // event ui computation
     function compileEventUis(eventDefs, eventUiBases) {
-        return mapHash(eventDefs, function (eventDef) {
-            return compileEventUi(eventDef, eventUiBases);
-        });
+        return mapHash(eventDefs, function (eventDef) { return compileEventUi(eventDef, eventUiBases); });
     }
     function compileEventUi(eventDef, eventUiBases) {
         var uis = [];
@@ -2408,12 +2375,8 @@ var FullCalendar = (function (exports) {
     }
     function sortEventSegs(segs, eventOrderSpecs) {
         var objs = segs.map(buildSegCompareObj);
-        objs.sort(function (obj0, obj1) {
-            return compareByFieldSpecs(obj0, obj1, eventOrderSpecs);
-        });
-        return objs.map(function (c) {
-            return c._seg;
-        });
+        objs.sort(function (obj0, obj1) { return compareByFieldSpecs(obj0, obj1, eventOrderSpecs); });
+        return objs.map(function (c) { return c._seg; });
     }
     // returns a object with all primitive props that can be compared
     function buildSegCompareObj(seg) {
@@ -2423,8 +2386,7 @@ var FullCalendar = (function (exports) {
         var start = range.start ? range.start.valueOf() : 0; // TODO: better support for open-range events
         var end = range.end ? range.end.valueOf() : 0; // "
         return __assign(__assign(__assign({}, eventDef.extendedProps), eventDef), { id: eventDef.publicId, start: start,
-            end: end, duration: end - start, allDay: Number(eventDef.allDay), _seg: seg // for later retrieval
-         });
+            end: end, duration: end - start, allDay: Number(eventDef.allDay), _seg: seg });
     }
     function computeSegDraggable(seg, context) {
         var pluginHooks = context.pluginHooks;
@@ -2462,14 +2424,12 @@ var FullCalendar = (function (exports) {
             if (displayEventEnd && eventDef.hasEnd) {
                 return dateEnv.formatRange(segStart, segEnd, timeFormat, {
                     forcedStartTzo: startOverride ? null : eventInstance.forcedStartTzo,
-                    forcedEndTzo: endOverride ? null : eventInstance.forcedEndTzo
-                });
-            }
-            else {
-                return dateEnv.format(segStart, timeFormat, {
-                    forcedTzo: startOverride ? null : eventInstance.forcedStartTzo // nooooo, same
+                    forcedEndTzo: endOverride ? null : eventInstance.forcedEndTzo,
                 });
             }
+            return dateEnv.format(segStart, timeFormat, {
+                forcedTzo: startOverride ? null : eventInstance.forcedStartTzo,
+            });
         }
         return '';
     }
@@ -2478,7 +2438,7 @@ var FullCalendar = (function (exports) {
         return {
             isPast: segRange.end < (nowDate || todayRange.start),
             isFuture: segRange.start >= (nowDate || todayRange.end),
-            isToday: todayRange && rangeContainsMarker(todayRange, segRange.start)
+            isToday: todayRange && rangeContainsMarker(todayRange, segRange.start),
         };
     }
     function getEventClassNames(props) {
@@ -2521,14 +2481,14 @@ var FullCalendar = (function (exports) {
     function buildEventRangeKey(eventRange) {
         return eventRange.instance
             ? eventRange.instance.instanceId
-            : eventRange.def.defId + ':' + eventRange.range.start.toISOString();
+            : eventRange.def.defId + ":" + eventRange.range.start.toISOString();
         // inverse-background events don't have specific instances. TODO: better solution
     }
 
     var STANDARD_PROPS = {
         start: identity,
         end: identity,
-        allDay: Boolean
+        allDay: Boolean,
     };
     function parseDateSpan(raw, dateEnv, defaultDuration) {
         var span = parseOpenDateSpan(raw, dateEnv);
@@ -2540,9 +2500,7 @@ var FullCalendar = (function (exports) {
             if (defaultDuration == null) {
                 return null;
             }
-            else {
-                range.end = dateEnv.add(range.start, defaultDuration);
-            }
+            range.end = dateEnv.add(range.start, defaultDuration);
         }
         return span;
     }
@@ -2598,7 +2556,7 @@ var FullCalendar = (function (exports) {
             start: dateEnv.toDate(range.start),
             end: dateEnv.toDate(range.end),
             startStr: dateEnv.formatIso(range.start, { omitTime: omitTime }),
-            endStr: dateEnv.formatIso(range.end, { omitTime: omitTime })
+            endStr: dateEnv.formatIso(range.end, { omitTime: omitTime }),
         };
     }
     function fabricateEventRange(dateSpan, eventUiBases, context) {
@@ -2612,7 +2570,7 @@ var FullCalendar = (function (exports) {
             instance: createEventInstance(def.defId, dateSpan.range),
             range: dateSpan.range,
             isStart: true,
-            isEnd: true
+            isEnd: true,
         };
     }
 
@@ -2622,7 +2580,7 @@ var FullCalendar = (function (exports) {
     function triggerDateUnselect(pev, context) {
         context.emitter.trigger('unselect', {
             jsEvent: pev ? pev.origEvent : null,
-            view: context.viewApi || context.calendarApi.view
+            view: context.viewApi || context.calendarApi.view,
         });
     }
     function buildDateSpanApiWithContext(dateSpan, context) {
@@ -2699,25 +2657,25 @@ var FullCalendar = (function (exports) {
         if (mutation.datesDelta && eventConfig.startEditable) {
             copy.range = {
                 start: dateEnv.add(copy.range.start, mutation.datesDelta),
-                end: dateEnv.add(copy.range.end, mutation.datesDelta)
+                end: dateEnv.add(copy.range.end, mutation.datesDelta),
             };
         }
         if (mutation.startDelta && eventConfig.durationEditable) {
             copy.range = {
                 start: dateEnv.add(copy.range.start, mutation.startDelta),
-                end: copy.range.end
+                end: copy.range.end,
             };
         }
         if (mutation.endDelta && eventConfig.durationEditable) {
             copy.range = {
                 start: copy.range.start,
-                end: dateEnv.add(copy.range.end, mutation.endDelta)
+                end: dateEnv.add(copy.range.end, mutation.endDelta),
             };
         }
         if (clearEnd) {
             copy.range = {
                 start: copy.range.start,
-                end: getDefaultEventEnd(eventDef.allDay, copy.range.start, context)
+                end: getDefaultEventEnd(eventDef.allDay, copy.range.start, context),
             };
         }
         // in case event was all-day but the supplied deltas were not
@@ -2725,7 +2683,7 @@ var FullCalendar = (function (exports) {
         if (eventDef.allDay) {
             copy.range = {
                 start: startOfDay(copy.range.start),
-                end: startOfDay(copy.range.end)
+                end: startOfDay(copy.range.end),
             };
         }
         // handle invalid durations
@@ -2795,6 +2753,7 @@ var FullCalendar = (function (exports) {
         id: String,
         defaultAllDay: Boolean,
         url: String,
+        format: String,
         events: identity,
         eventDataTransform: identity,
         // for any network-related sources
@@ -2831,7 +2790,7 @@ var FullCalendar = (function (exports) {
                     sourceDefId: metaRes.sourceDefId,
                     meta: metaRes.meta,
                     ui: createEventUi(refined, context),
-                    extendedProps: extra
+                    extendedProps: extra,
                 };
             }
         }
@@ -2842,7 +2801,7 @@ var FullCalendar = (function (exports) {
     }
     function buildEventSourceMeta(raw, context) {
         var defs = context.pluginHooks.eventSourceDefs;
-        for (var i = defs.length - 1; i >= 0; i--) { // later-added plugins take precedence
+        for (var i = defs.length - 1; i >= 0; i -= 1) { // later-added plugins take precedence
             var def = defs[i];
             var meta = def.parseMeta(raw);
             if (meta) {
@@ -2866,9 +2825,7 @@ var FullCalendar = (function (exports) {
         if (initialDateInput != null) {
             return dateEnv.createMarker(initialDateInput);
         }
-        else {
-            return getNow(options.now, dateEnv); // getNow already returns unzoned
-        }
+        return getNow(options.now, dateEnv); // getNow already returns unzoned
     }
     function getNow(nowInput, dateEnv) {
         if (typeof nowInput === 'function') {
@@ -2907,7 +2864,7 @@ var FullCalendar = (function (exports) {
             this.dispatch({
                 type: 'SET_OPTION',
                 optionName: name,
-                rawOptionValue: val
+                rawOptionValue: val,
             });
         };
         CalendarApi.prototype.getOption = function (name) {
@@ -2930,6 +2887,7 @@ var FullCalendar = (function (exports) {
         CalendarApi.prototype.off = function (handlerName, handler) {
             this.currentDataManager.emitter.off(handlerName, handler);
         };
+        // not meant for public use
         CalendarApi.prototype.trigger = function (handlerName) {
             var _a;
             var args = [];
@@ -2953,7 +2911,7 @@ var FullCalendar = (function (exports) {
                         _this.dispatch({
                             type: 'SET_OPTION',
                             optionName: 'visibleRange',
-                            rawOptionValue: dateOrRange
+                            rawOptionValue: dateOrRange,
                         });
                     }
                     else {
@@ -2961,14 +2919,14 @@ var FullCalendar = (function (exports) {
                         _this.dispatch({
                             type: 'CHANGE_VIEW_TYPE',
                             viewType: viewType,
-                            dateMarker: dateEnv.createMarker(dateOrRange)
+                            dateMarker: dateEnv.createMarker(dateOrRange),
                         });
                     }
                 }
                 else {
                     _this.dispatch({
                         type: 'CHANGE_VIEW_TYPE',
-                        viewType: viewType
+                        viewType: viewType,
                     });
                 }
             });
@@ -2986,13 +2944,13 @@ var FullCalendar = (function (exports) {
                 this.dispatch({
                     type: 'CHANGE_VIEW_TYPE',
                     viewType: spec.type,
-                    dateMarker: dateMarker
+                    dateMarker: dateMarker,
                 });
             }
             else {
                 this.dispatch({
                     type: 'CHANGE_DATE',
-                    dateMarker: dateMarker
+                    dateMarker: dateMarker,
                 });
             }
         };
@@ -3006,7 +2964,7 @@ var FullCalendar = (function (exports) {
             for (var viewType in viewSpecs) {
                 viewTypes.push(viewType);
             }
-            for (i = 0; i < viewTypes.length; i++) {
+            for (i = 0; i < viewTypes.length; i += 1) {
                 spec = viewSpecs[viewTypes[i]];
                 if (spec) {
                     if (spec.singleUnit === unit) {
@@ -3014,6 +2972,7 @@ var FullCalendar = (function (exports) {
                     }
                 }
             }
+            return null;
         };
         // Current Date
         // -----------------------------------------------------------------------------------------------------------------
@@ -3030,7 +2989,7 @@ var FullCalendar = (function (exports) {
             this.unselect();
             this.dispatch({
                 type: 'CHANGE_DATE',
-                dateMarker: state.dateEnv.addYears(state.currentDate, -1)
+                dateMarker: state.dateEnv.addYears(state.currentDate, -1),
             });
         };
         CalendarApi.prototype.nextYear = function () {
@@ -3038,7 +2997,7 @@ var FullCalendar = (function (exports) {
             this.unselect();
             this.dispatch({
                 type: 'CHANGE_DATE',
-                dateMarker: state.dateEnv.addYears(state.currentDate, 1)
+                dateMarker: state.dateEnv.addYears(state.currentDate, 1),
             });
         };
         CalendarApi.prototype.today = function () {
@@ -3046,7 +3005,7 @@ var FullCalendar = (function (exports) {
             this.unselect();
             this.dispatch({
                 type: 'CHANGE_DATE',
-                dateMarker: getNow(state.calendarOptions.now, state.dateEnv)
+                dateMarker: getNow(state.calendarOptions.now, state.dateEnv),
             });
         };
         CalendarApi.prototype.gotoDate = function (zonedDateInput) {
@@ -3054,7 +3013,7 @@ var FullCalendar = (function (exports) {
             this.unselect();
             this.dispatch({
                 type: 'CHANGE_DATE',
-                dateMarker: state.dateEnv.createMarker(zonedDateInput)
+                dateMarker: state.dateEnv.createMarker(zonedDateInput),
             });
         };
         CalendarApi.prototype.incrementDate = function (deltaInput) {
@@ -3064,7 +3023,7 @@ var FullCalendar = (function (exports) {
                 this.unselect();
                 this.dispatch({
                     type: 'CHANGE_DATE',
-                    dateMarker: state.dateEnv.add(state.currentDate, delta)
+                    dateMarker: state.dateEnv.add(state.currentDate, delta),
                 });
             }
         };
@@ -3101,19 +3060,18 @@ var FullCalendar = (function (exports) {
                 else {
                     selectionInput = {
                         start: dateOrObj,
-                        end: null
+                        end: null,
                     };
                 }
             }
             else {
                 selectionInput = {
                     start: dateOrObj,
-                    end: endDate
+                    end: endDate,
                 };
             }
             var state = this.getCurrentData();
-            var selection = parseDateSpan(selectionInput, state.dateEnv, createDuration({ days: 1 }) // TODO: cache this?
-            );
+            var selection = parseDateSpan(selectionInput, state.dateEnv, createDuration({ days: 1 }));
             if (selection) { // throw parse error otherwise?
                 this.dispatch({ type: 'SELECT_DATES', selection: selection });
                 triggerDateSelect(selection, null, state);
@@ -3138,7 +3096,7 @@ var FullCalendar = (function (exports) {
                 if (!currentData.eventStore.defs[def.defId]) {
                     this.dispatch({
                         type: 'ADD_EVENTS',
-                        eventStore: eventTupleToStore({ def: def, instance: instance }) // TODO: better util for two args?
+                        eventStore: eventTupleToStore({ def: def, instance: instance }),
                     });
                     this.triggerEventAdd(eventInput);
                 }
@@ -3157,19 +3115,17 @@ var FullCalendar = (function (exports) {
             else if (sourceInput != null) { // an ID. accepts a number too
                 var sourceApi = this.getEventSourceById(sourceInput); // TODO: use an internal function
                 if (!sourceApi) {
-                    console.warn('Could not find an event source with ID "' + sourceInput + '"'); // TODO: test
+                    console.warn("Could not find an event source with ID \"" + sourceInput + "\""); // TODO: test
                     return null;
                 }
-                else {
-                    eventSource = sourceApi.internalEventSource;
-                }
+                eventSource = sourceApi.internalEventSource;
             }
             var tuple = parseEvent(eventInput, eventSource, state, false);
             if (tuple) {
                 var newEventApi = new EventApi(state, tuple.def, tuple.def.recurringDef ? null : tuple.instance);
                 this.dispatch({
                     type: 'ADD_EVENTS',
-                    eventStore: eventTupleToStore(tuple)
+                    eventStore: eventTupleToStore(tuple),
                 });
                 this.triggerEventAdd(newEventApi);
                 return newEventApi;
@@ -3185,9 +3141,9 @@ var FullCalendar = (function (exports) {
                 revert: function () {
                     _this.dispatch({
                         type: 'REMOVE_EVENTS',
-                        eventStore: eventApiToStore(eventApi)
+                        eventStore: eventApiToStore(eventApi),
                     });
-                }
+                },
             });
         };
         // TODO: optimize
@@ -3201,12 +3157,10 @@ var FullCalendar = (function (exports) {
                     if (def.recurringDef) {
                         return new EventApi(state, def, null);
                     }
-                    else {
-                        for (var instanceId in instances) {
-                            var instance = instances[instanceId];
-                            if (instance.defId === def.defId) {
-                                return new EventApi(state, def, instance);
-                            }
+                    for (var instanceId in instances) {
+                        var instance = instances[instanceId];
+                        if (instance.defId === def.defId) {
+                            return new EventApi(state, def, instance);
                         }
                     }
                 }
@@ -3249,7 +3203,7 @@ var FullCalendar = (function (exports) {
                 if (!state.eventSources[sourceInput.internalEventSource.sourceId]) {
                     this.dispatch({
                         type: 'ADD_EVENT_SOURCES',
-                        sources: [sourceInput.internalEventSource]
+                        sources: [sourceInput.internalEventSource],
                     });
                 }
                 return sourceInput;
@@ -3292,12 +3246,12 @@ var FullCalendar = (function (exports) {
         EventApi.prototype.setProp = function (name, val) {
             var _a, _b;
             if (name in EVENT_DATE_REFINERS) {
-                console.warn("Could not set date-related prop 'name'. Use one of the date-related methods instead.");
+                console.warn('Could not set date-related prop \'name\'. Use one of the date-related methods instead.');
             }
             else if (name in EVENT_NON_DATE_REFINERS) {
                 val = EVENT_NON_DATE_REFINERS[name](val);
                 this.mutate({
-                    standardProps: (_a = {}, _a[name] = val, _a)
+                    standardProps: (_a = {}, _a[name] = val, _a),
                 });
             }
             else if (name in EVENT_UI_REFINERS) {
@@ -3312,7 +3266,7 @@ var FullCalendar = (function (exports) {
                     ui = (_b = {}, _b[name] = val, _b);
                 }
                 this.mutate({
-                    standardProps: { ui: ui }
+                    standardProps: { ui: ui },
                 });
             }
             else {
@@ -3322,7 +3276,7 @@ var FullCalendar = (function (exports) {
         EventApi.prototype.setExtendedProp = function (name, val) {
             var _a;
             this.mutate({
-                extendedProps: (_a = {}, _a[name] = val, _a)
+                extendedProps: (_a = {}, _a[name] = val, _a),
             });
         };
         EventApi.prototype.setStart = function (startInput, options) {
@@ -3435,22 +3389,20 @@ var FullCalendar = (function (exports) {
             if (this._def.hasEnd) {
                 return dateEnv.formatRange(instance.range.start, instance.range.end, formatter, {
                     forcedStartTzo: instance.forcedStartTzo,
-                    forcedEndTzo: instance.forcedEndTzo
-                });
-            }
-            else {
-                return dateEnv.format(instance.range.start, formatter, {
-                    forcedTzo: instance.forcedStartTzo
+                    forcedEndTzo: instance.forcedEndTzo,
                 });
             }
+            return dateEnv.format(instance.range.start, formatter, {
+                forcedTzo: instance.forcedStartTzo,
+            });
         };
         EventApi.prototype.mutate = function (mutation) {
             var instance = this._instance;
             if (instance) {
                 var def = this._def;
                 var context_1 = this._context;
-                var eventStore = context_1.getCurrentData().eventStore;
-                var relevantEvents_1 = getRelevantEvents(eventStore, instance.instanceId);
+                var eventStore_1 = context_1.getCurrentData().eventStore;
+                var relevantEvents = getRelevantEvents(eventStore_1, instance.instanceId);
                 var eventConfigBase = {
                     '': {
                         display: '',
@@ -3462,27 +3414,27 @@ var FullCalendar = (function (exports) {
                         backgroundColor: '',
                         borderColor: '',
                         textColor: '',
-                        classNames: []
-                    }
+                        classNames: [],
+                    },
                 };
-                relevantEvents_1 = applyMutationToEventStore(relevantEvents_1, eventConfigBase, mutation, context_1);
+                relevantEvents = applyMutationToEventStore(relevantEvents, eventConfigBase, mutation, context_1);
                 var oldEvent = new EventApi(context_1, def, instance); // snapshot
-                this._def = relevantEvents_1.defs[def.defId];
-                this._instance = relevantEvents_1.instances[instance.instanceId];
+                this._def = relevantEvents.defs[def.defId];
+                this._instance = relevantEvents.instances[instance.instanceId];
                 context_1.dispatch({
                     type: 'MERGE_EVENTS',
-                    eventStore: relevantEvents_1
+                    eventStore: relevantEvents,
                 });
                 context_1.emitter.trigger('eventChange', {
                     oldEvent: oldEvent,
                     event: this,
-                    relatedEvents: buildEventApis(relevantEvents_1, context_1, instance),
+                    relatedEvents: buildEventApis(relevantEvents, context_1, instance),
                     revert: function () {
                         context_1.dispatch({
-                            type: 'REMOVE_EVENTS',
-                            eventStore: relevantEvents_1
+                            type: 'RESET_EVENTS',
+                            eventStore: eventStore_1,
                         });
-                    }
+                    },
                 });
             }
         };
@@ -3491,7 +3443,7 @@ var FullCalendar = (function (exports) {
             var asStore = eventApiToStore(this);
             context.dispatch({
                 type: 'REMOVE_EVENTS',
-                eventStore: asStore
+                eventStore: asStore,
             });
             context.emitter.trigger('eventRemove', {
                 event: this,
@@ -3499,9 +3451,9 @@ var FullCalendar = (function (exports) {
                 revert: function () {
                     context.dispatch({
                         type: 'MERGE_EVENTS',
-                        eventStore: asStore
+                        eventStore: asStore,
                     });
-                }
+                },
             });
         };
         Object.defineProperty(EventApi.prototype, "source", {
@@ -3539,7 +3491,7 @@ var FullCalendar = (function (exports) {
                 if (instance) {
                     return this._context.dateEnv.formatIso(instance.range.start, {
                         omitTime: this._def.allDay,
-                        forcedTzo: instance.forcedStartTzo
+                        forcedTzo: instance.forcedStartTzo,
                     });
                 }
                 return '';
@@ -3553,7 +3505,7 @@ var FullCalendar = (function (exports) {
                 if (instance && this._def.hasEnd) {
                     return this._context.dateEnv.formatIso(instance.range.end, {
                         omitTime: this._def.allDay,
-                        forcedTzo: instance.forcedEndTzo
+                        forcedTzo: instance.forcedEndTzo,
                     });
                 }
                 return '';
@@ -3713,7 +3665,7 @@ var FullCalendar = (function (exports) {
         return {
             defs: (_a = {}, _a[def.defId] = def, _a),
             instances: instance
-                ? (_b = {}, _b[instance.instanceId] = instance, _b) : {}
+                ? (_b = {}, _b[instance.instanceId] = instance, _b) : {},
         };
     }
     function buildEventApis(eventStore, context, excludeInstance) {
@@ -3759,11 +3711,11 @@ var FullCalendar = (function (exports) {
     }());
     registerCalendarSystem('gregory', GregorianCalendarSystem);
 
-    var ISO_RE = /^\s*(\d{4})(-(\d{2})(-(\d{2})([T ](\d{2}):(\d{2})(:(\d{2})(\.(\d+))?)?(Z|(([-+])(\d{2})(:?(\d{2}))?))?)?)?)?$/;
+    var ISO_RE = /^\s*(\d{4})(-?(\d{2})(-?(\d{2})([T ](\d{2}):?(\d{2})(:?(\d{2})(\.(\d+))?)?(Z|(([-+])(\d{2})(:?(\d{2}))?))?)?)?)?$/;
     function parse(str) {
         var m = ISO_RE.exec(str);
         if (m) {
-            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));
+            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));
             if (isValidDate(marker)) {
                 var timeZoneOffset = null;
                 if (m[13]) {
@@ -3773,7 +3725,7 @@ var FullCalendar = (function (exports) {
                 return {
                     marker: marker,
                     isTimeUnspecified: !m[6],
-                    timeZoneOffset: timeZoneOffset
+                    timeZoneOffset: timeZoneOffset,
                 };
             }
         }
@@ -3818,11 +3770,9 @@ var FullCalendar = (function (exports) {
             if (this.canComputeOffset) {
                 return this.timestampToMarker(new Date().valueOf());
             }
-            else {
-                // if we can't compute the current date val for a timezone,
-                // better to give the current local date vals than UTC
-                return arrayToUtcDate(dateToLocalArray(new Date()));
-            }
+            // if we can't compute the current date val for a timezone,
+            // better to give the current local date vals than UTC
+            return arrayToUtcDate(dateToLocalArray(new Date()));
         };
         DateEnv.prototype.createMarkerMeta = function (input) {
             if (typeof input === 'string') {
@@ -3977,41 +3927,42 @@ var FullCalendar = (function (exports) {
             if (unit === 'year') {
                 return this.startOfYear(m);
             }
-            else if (unit === 'month') {
+            if (unit === 'month') {
                 return this.startOfMonth(m);
             }
-            else if (unit === 'week') {
+            if (unit === 'week') {
                 return this.startOfWeek(m);
             }
-            else if (unit === 'day') {
+            if (unit === 'day') {
                 return startOfDay(m);
             }
-            else if (unit === 'hour') {
+            if (unit === 'hour') {
                 return startOfHour(m);
             }
-            else if (unit === 'minute') {
+            if (unit === 'minute') {
                 return startOfMinute(m);
             }
-            else if (unit === 'second') {
+            if (unit === 'second') {
                 return startOfSecond(m);
             }
+            return null;
         };
         DateEnv.prototype.startOfYear = function (m) {
             return this.calendarSystem.arrayToMarker([
-                this.calendarSystem.getMarkerYear(m)
+                this.calendarSystem.getMarkerYear(m),
             ]);
         };
         DateEnv.prototype.startOfMonth = function (m) {
             return this.calendarSystem.arrayToMarker([
                 this.calendarSystem.getMarkerYear(m),
-                this.calendarSystem.getMarkerMonth(m)
+                this.calendarSystem.getMarkerMonth(m),
             ]);
         };
         DateEnv.prototype.startOfWeek = function (m) {
             return this.calendarSystem.arrayToMarker([
                 this.calendarSystem.getMarkerYear(m),
                 this.calendarSystem.getMarkerMonth(m),
-                m.getUTCDate() - ((m.getUTCDay() - this.weekDow + 7) % 7)
+                m.getUTCDate() - ((m.getUTCDay() - this.weekDow + 7) % 7),
             ]);
         };
         // Week Number
@@ -4019,9 +3970,7 @@ var FullCalendar = (function (exports) {
             if (this.weekNumberFunc) {
                 return this.weekNumberFunc(this.toDate(marker));
             }
-            else {
-                return weekOfYear(marker, this.weekDow, this.weekDoy);
-            }
+            return weekOfYear(marker, this.weekDow, this.weekDoy);
         };
         // TODO: choke on timeZoneName: long
         DateEnv.prototype.format = function (marker, formatter, dateOptions) {
@@ -4030,7 +3979,7 @@ var FullCalendar = (function (exports) {
                 marker: marker,
                 timeZoneOffset: dateOptions.forcedTzo != null ?
                     dateOptions.forcedTzo :
-                    this.offsetForMarker(marker)
+                    this.offsetForMarker(marker),
             }, this);
         };
         DateEnv.prototype.formatRange = function (start, end, formatter, dateOptions) {
@@ -4042,12 +3991,12 @@ var FullCalendar = (function (exports) {
                 marker: start,
                 timeZoneOffset: dateOptions.forcedStartTzo != null ?
                     dateOptions.forcedStartTzo :
-                    this.offsetForMarker(start)
+                    this.offsetForMarker(start),
             }, {
                 marker: end,
                 timeZoneOffset: dateOptions.forcedEndTzo != null ?
                     dateOptions.forcedEndTzo :
-                    this.offsetForMarker(end)
+                    this.offsetForMarker(end),
             }, this, dateOptions.defaultSeparator);
         };
         /*
@@ -4072,21 +4021,19 @@ var FullCalendar = (function (exports) {
             if (this.timeZone === 'local') {
                 return arrayToUtcDate(dateToLocalArray(new Date(ms)));
             }
-            else if (this.timeZone === 'UTC' || !this.namedTimeZoneImpl) {
+            if (this.timeZone === 'UTC' || !this.namedTimeZoneImpl) {
                 return new Date(ms);
             }
-            else {
-                return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms));
-            }
+            return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms));
         };
         DateEnv.prototype.offsetForMarker = function (m) {
             if (this.timeZone === 'local') {
                 return -arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset(); // convert "inverse" offset to "normal" offset
             }
-            else if (this.timeZone === 'UTC') {
+            if (this.timeZone === 'UTC') {
                 return 0;
             }
-            else if (this.namedTimeZoneImpl) {
+            if (this.namedTimeZoneImpl) {
                 return this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m));
             }
             return null;
@@ -4096,17 +4043,14 @@ var FullCalendar = (function (exports) {
             if (this.timeZone === 'local') {
                 return arrayToLocalDate(dateToUtcArray(m));
             }
-            else if (this.timeZone === 'UTC') {
+            if (this.timeZone === 'UTC') {
                 return new Date(m.valueOf()); // make sure it's a copy
             }
-            else if (!this.namedTimeZoneImpl) {
+            if (!this.namedTimeZoneImpl) {
                 return new Date(m.valueOf() - (forcedTzo || 0));
             }
-            else {
-                return new Date(m.valueOf() -
-                    this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60 // convert minutes -> ms
-                );
-            }
+            return new Date(m.valueOf() -
+                this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60);
         };
         return DateEnv;
     }());
@@ -4117,7 +4061,7 @@ var FullCalendar = (function (exports) {
         code: 'en',
         week: {
             dow: 0,
-            doy: 4 // 4 days need to be within the year to be considered the first week
+            doy: 4,
         },
         direction: 'ltr',
         buttonText: {
@@ -4130,18 +4074,18 @@ var FullCalendar = (function (exports) {
             month: 'month',
             week: 'week',
             day: 'day',
-            list: 'list'
+            list: 'list',
         },
         weekText: 'W',
         allDayText: 'all-day',
         moreLinkText: 'more',
-        noEventsText: 'No events to display'
+        noEventsText: 'No events to display',
     };
     function organizeRawLocales(explicitRawLocales) {
         var defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en';
         var allRawLocales = globalLocales.concat(explicitRawLocales);
         var rawLocaleMap = {
-            en: RAW_EN_LOCALE // necessary?
+            en: RAW_EN_LOCALE,
         };
         for (var _i = 0, allRawLocales_1 = allRawLocales; _i < allRawLocales_1.length; _i++) {
             var rawLocale = allRawLocales_1[_i];
@@ -4149,16 +4093,14 @@ var FullCalendar = (function (exports) {
         }
         return {
             map: rawLocaleMap,
-            defaultCode: defaultCode
+            defaultCode: defaultCode,
         };
     }
     function buildLocale(inputSingular, available) {
         if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) {
             return parseLocale(inputSingular.code, [inputSingular.code], inputSingular);
         }
-        else {
-            return queryLocale(inputSingular, available);
-        }
+        return queryLocale(inputSingular, available);
     }
     function queryLocale(codeArg, available) {
         var codes = [].concat(codeArg || []); // will convert to array
@@ -4166,9 +4108,9 @@ var FullCalendar = (function (exports) {
         return parseLocale(codeArg, codes, raw);
     }
     function queryRawLocale(codes, available) {
-        for (var i = 0; i < codes.length; i++) {
+        for (var i = 0; i < codes.length; i += 1) {
             var parts = codes[i].toLocaleLowerCase().split('-');
-            for (var j = parts.length; j > 0; j--) {
+            for (var j = parts.length; j > 0; j -= 1) {
                 var simpleId = parts.slice(0, j).join('-');
                 if (available[simpleId]) {
                     return available[simpleId];
@@ -4187,7 +4129,7 @@ var FullCalendar = (function (exports) {
             codes: codes,
             week: week,
             simpleNumberFormat: new Intl.NumberFormat(codeArg),
-            options: merged
+            options: merged,
         };
     }
 
@@ -4200,11 +4142,10 @@ var FullCalendar = (function (exports) {
             return '';
         }
         return dateEnv.format(dateMeta.marker, formatter, {
-            forcedTzo: dateMeta.forcedTzo
+            forcedTzo: dateMeta.forcedTzo,
         });
     }
-    function formatRange(startInput, endInput, options // mixture of env and formatter settings
-    ) {
+    function formatRange(startInput, endInput, options) {
         var dateEnv = buildDateEnv(typeof options === 'object' && options ? options : {}); // pass in if non-null object
         var formatter = createFormatter(options);
         var startMeta = dateEnv.createMarkerMeta(startInput);
@@ -4216,7 +4157,7 @@ var FullCalendar = (function (exports) {
             forcedStartTzo: startMeta.forcedTzo,
             forcedEndTzo: endMeta.forcedTzo,
             isEndExclusive: options.isEndExclusive,
-            defaultSeparator: BASE_OPTION_DEFAULTS.defaultRangeSeparator
+            defaultSeparator: BASE_OPTION_DEFAULTS.defaultRangeSeparator,
         });
     }
     // TODO: more DRY and optimized
@@ -4231,7 +4172,7 @@ var FullCalendar = (function (exports) {
         daysOfWeek: [1, 2, 3, 4, 5],
         display: 'inverse-background',
         classNames: 'fc-non-business',
-        groupId: '_businessHours' // so multiple defs get grouped
+        groupId: '_businessHours',
     };
     /*
     TODO: pass around as EventDefHash!!!
@@ -4246,9 +4187,7 @@ var FullCalendar = (function (exports) {
         }
         else if (Array.isArray(input)) {
             // if specifying an array, every sub-definition NEEDS a day-of-week
-            rawDefs = input.filter(function (rawDef) {
-                return rawDef.daysOfWeek;
-            });
+            rawDefs = input.filter(function (rawDef) { return rawDef.daysOfWeek; });
         }
         else if (typeof input === 'object' && input) { // non-null object
             rawDefs = [input];
@@ -4256,9 +4195,7 @@ var FullCalendar = (function (exports) {
         else { // is probably false
             rawDefs = [];
         }
-        rawDefs = rawDefs.map(function (rawDef) {
-            return __assign(__assign({}, DEF_DEFAULTS), rawDef);
-        });
+        rawDefs = rawDefs.map(function (rawDef) { return (__assign(__assign({}, DEF_DEFAULTS), rawDef)); });
         return rawDefs;
     }
 
@@ -4274,7 +4211,7 @@ var FullCalendar = (function (exports) {
             left: Math.max(rect1.left, rect2.left),
             right: Math.min(rect1.right, rect2.right),
             top: Math.max(rect1.top, rect2.top),
-            bottom: Math.min(rect1.bottom, rect2.bottom)
+            bottom: Math.min(rect1.bottom, rect2.bottom),
         };
         if (res.left < res.right && res.top < res.bottom) {
             return res;
@@ -4286,31 +4223,58 @@ var FullCalendar = (function (exports) {
             left: rect.left + deltaX,
             right: rect.right + deltaX,
             top: rect.top + deltaY,
-            bottom: rect.bottom + deltaY
+            bottom: rect.bottom + deltaY,
         };
     }
     // Returns a new point that will have been moved to reside within the given rectangle
     function constrainPoint(point, rect) {
         return {
             left: Math.min(Math.max(point.left, rect.left), rect.right),
-            top: Math.min(Math.max(point.top, rect.top), rect.bottom)
+            top: Math.min(Math.max(point.top, rect.top), rect.bottom),
         };
     }
     // Returns a point that is the center of the given rectangle
     function getRectCenter(rect) {
         return {
             left: (rect.left + rect.right) / 2,
-            top: (rect.top + rect.bottom) / 2
+            top: (rect.top + rect.bottom) / 2,
         };
     }
     // Subtracts point2's coordinates from point1's coordinates, returning a delta
     function diffPoints(point1, point2) {
         return {
             left: point1.left - point2.left,
-            top: point1.top - point2.top
+            top: point1.top - point2.top,
         };
     }
 
+    var canVGrowWithinCell;
+    function getCanVGrowWithinCell() {
+        if (canVGrowWithinCell == null) {
+            canVGrowWithinCell = computeCanVGrowWithinCell();
+        }
+        return canVGrowWithinCell;
+    }
+    function computeCanVGrowWithinCell() {
+        // for SSR, because this function is call immediately at top-level
+        // TODO: just make this logic execute top-level, immediately, instead of doing lazily
+        if (typeof document === 'undefined') {
+            return true;
+        }
+        var el = document.createElement('div');
+        el.style.position = 'absolute';
+        el.style.top = '0px';
+        el.style.left = '0px';
+        el.innerHTML = '<table><tr><td><div></div></td></tr></table>';
+        el.querySelector('table').style.height = '100px';
+        el.querySelector('div').style.height = '100%';
+        document.body.appendChild(el);
+        var div = el.querySelector('div');
+        var possible = div.offsetHeight > 0;
+        document.body.removeChild(el);
+        return possible;
+    }
+
     var EMPTY_EVENT_STORE = createEmptyEventStore(); // for purecomponents. TODO: keep elsewhere
     var Splitter = /** @class */ (function () {
         function Splitter() {
@@ -4332,9 +4296,7 @@ var FullCalendar = (function (exports) {
             var eventDrags = this.splitEventDrag(props.eventDrag);
             var eventResizes = this.splitEventResize(props.eventResize);
             var splitProps = {};
-            this.eventUiBuilders = mapHash(keyInfos, function (info, key) {
-                return _this.eventUiBuilders[key] || memoize(buildEventUiForKey);
-            });
+            this.eventUiBuilders = mapHash(keyInfos, function (info, key) { return _this.eventUiBuilders[key] || memoize(buildEventUiForKey); });
             for (var key in keyInfos) {
                 var keyInfo = keyInfos[key];
                 var eventStore = eventStores[key] || EMPTY_EVENT_STORE;
@@ -4346,7 +4308,7 @@ var FullCalendar = (function (exports) {
                     eventUiBases: buildEventUi(props.eventUiBases[''], keyInfo.ui, individualUi[key]),
                     eventSelection: eventStore.instances[props.eventSelection] ? props.eventSelection : '',
                     eventDrag: eventDrags[key] || null,
-                    eventResize: eventResizes[key] || null
+                    eventResize: eventResizes[key] || null,
                 };
             }
             return splitProps;
@@ -4364,9 +4326,7 @@ var FullCalendar = (function (exports) {
         };
         Splitter.prototype._getKeysForEventDefs = function (eventStore) {
             var _this = this;
-            return mapHash(eventStore.defs, function (eventDef) {
-                return _this.getKeysForEventDef(eventDef);
-            });
+            return mapHash(eventStore.defs, function (eventDef) { return _this.getKeysForEventDef(eventDef); });
         };
         Splitter.prototype._splitEventStore = function (eventStore, defKeys) {
             var defs = eventStore.defs, instances = eventStore.instances;
@@ -4409,8 +4369,7 @@ var FullCalendar = (function (exports) {
         Splitter.prototype._splitInteraction = function (interaction) {
             var splitStates = {};
             if (interaction) {
-                var affectedStores_1 = this._splitEventStore(interaction.affectedEvents, this._getKeysForEventDefs(interaction.affectedEvents) // can't use cached. might be events from other calendar
-                );
+                var affectedStores_1 = this._splitEventStore(interaction.affectedEvents, this._getKeysForEventDefs(interaction.affectedEvents));
                 // can't rely on defKeys because event data is mutated
                 var mutatedKeysByDefId = this._getKeysForEventDefs(interaction.mutatedEvents);
                 var mutatedStores_1 = this._splitEventStore(interaction.mutatedEvents, mutatedKeysByDefId);
@@ -4419,7 +4378,7 @@ var FullCalendar = (function (exports) {
                         splitStates[key] = {
                             affectedEvents: affectedStores_1[key] || EMPTY_EVENT_STORE,
                             mutatedEvents: mutatedStores_1[key] || EMPTY_EVENT_STORE,
-                            isEvent: interaction.isEvent
+                            isEvent: interaction.isEvent,
                         };
                     }
                 };
@@ -4443,7 +4402,7 @@ var FullCalendar = (function (exports) {
             baseParts.push(eventUiForKey);
         }
         var stuff = {
-            '': combineEventUis(baseParts)
+            '': combineEventUis(baseParts),
         };
         if (individualUi) {
             __assign(stuff, individualUi);
@@ -4458,13 +4417,13 @@ var FullCalendar = (function (exports) {
             isOther: Boolean(dateProfile && !rangeContainsMarker(dateProfile.currentRange, date)),
             isToday: Boolean(todayRange && rangeContainsMarker(todayRange, date)),
             isPast: Boolean(nowDate ? (date < nowDate) : todayRange ? (date < todayRange.start) : false),
-            isFuture: Boolean(nowDate ? (date > nowDate) : todayRange ? (date >= todayRange.end) : false)
+            isFuture: Boolean(nowDate ? (date > nowDate) : todayRange ? (date >= todayRange.end) : false),
         };
     }
     function getDayClassNames(meta, theme) {
         var classNames = [
             'fc-day',
-            'fc-day-' + DAY_IDS[meta.dow]
+            "fc-day-" + DAY_IDS[meta.dow],
         ];
         if (meta.isDisabled) {
             classNames.push('fc-day-disabled');
@@ -4489,7 +4448,7 @@ var FullCalendar = (function (exports) {
     function getSlotClassNames(meta, theme) {
         var classNames = [
             'fc-slot',
-            'fc-slot-' + DAY_IDS[meta.dow]
+            "fc-slot-" + DAY_IDS[meta.dow],
         ];
         if (meta.isDisabled) {
             classNames.push('fc-slot-disabled');
@@ -4513,7 +4472,7 @@ var FullCalendar = (function (exports) {
         if (type === void 0) { type = 'day'; }
         return JSON.stringify({
             date: formatDayString(date),
-            type: type
+            type: type,
         });
     }
 
@@ -4525,7 +4484,6 @@ var FullCalendar = (function (exports) {
         return _isRtlScrollbarOnLeft;
     }
     function computeIsRtlScrollbarOnLeft() {
-        // TODO: use htmlToElement
         var outerEl = document.createElement('div');
         applyStyle(outerEl, {
             position: 'absolute',
@@ -4534,7 +4492,7 @@ var FullCalendar = (function (exports) {
             border: 0,
             padding: 0,
             overflow: 'scroll',
-            direction: 'rtl'
+            direction: 'rtl',
         });
         outerEl.innerHTML = '<div></div>';
         document.body.appendChild(outerEl);
@@ -4554,6 +4512,9 @@ var FullCalendar = (function (exports) {
     function computeScrollbarWidths() {
         var el = document.createElement('div');
         el.style.overflow = 'scroll';
+        el.style.position = 'absolute';
+        el.style.top = '-9999px';
+        el.style.left = '-9999px';
         document.body.appendChild(el);
         var res = computeScrollbarWidthsForEl(el);
         document.body.removeChild(el);
@@ -4563,7 +4524,7 @@ var FullCalendar = (function (exports) {
     function computeScrollbarWidthsForEl(el) {
         return {
             x: el.offsetHeight - el.clientHeight,
-            y: el.offsetWidth - el.clientWidth
+            y: el.offsetWidth - el.clientWidth,
         };
     }
 
@@ -4584,7 +4545,7 @@ var FullCalendar = (function (exports) {
             borderBottom: borderBottom,
             scrollbarBottom: scrollbarBottom,
             scrollbarLeft: 0,
-            scrollbarRight: 0
+            scrollbarRight: 0,
         };
         if (getIsRtlScrollbarOnLeft() && computedStyle.direction === 'rtl') { // is the scrollbar on the left side?
             res.scrollbarLeft = scrollbarLeftRight;
@@ -4608,7 +4569,7 @@ var FullCalendar = (function (exports) {
             left: outerRect.left + edges.borderLeft + edges.scrollbarLeft,
             right: outerRect.right - edges.borderRight - edges.scrollbarRight,
             top: outerRect.top + edges.borderTop,
-            bottom: outerRect.bottom - edges.borderBottom - edges.scrollbarBottom
+            bottom: outerRect.bottom - edges.borderBottom - edges.scrollbarBottom,
         };
         if (goWithinPadding) {
             res.left += edges.paddingLeft;
@@ -4624,7 +4585,7 @@ var FullCalendar = (function (exports) {
             left: rect.left + window.pageXOffset,
             top: rect.top + window.pageYOffset,
             right: rect.right + window.pageXOffset,
-            bottom: rect.bottom + window.pageYOffset
+            bottom: rect.bottom + window.pageYOffset,
         };
     }
     function computeHeightAndMargins(el) {
@@ -4662,14 +4623,14 @@ var FullCalendar = (function (exports) {
         var wrappedSuccess = function () {
             if (!isResolved) {
                 isResolved = true;
-                success.apply(this, arguments);
+                success.apply(this, arguments); // eslint-disable-line prefer-rest-params
             }
         };
         var wrappedFailure = function () {
             if (!isResolved) {
                 isResolved = true;
                 if (failure) {
-                    failure.apply(this, arguments);
+                    failure.apply(this, arguments); // eslint-disable-line prefer-rest-params
                 }
             }
         };
@@ -4722,9 +4683,7 @@ var FullCalendar = (function (exports) {
     function removeFromHash(hash, type, handler) {
         if (handler) {
             if (hash[type]) {
-                hash[type] = hash[type].filter(function (func) {
-                    return func !== handler;
-                });
+                hash[type] = hash[type].filter(function (func) { return func !== handler; });
             }
         }
         else {
@@ -4777,28 +4736,28 @@ var FullCalendar = (function (exports) {
         // Given a left offset (from document left), returns the index of the el that it horizontally intersects.
         // If no intersection is made, returns undefined.
         PositionCache.prototype.leftToIndex = function (leftPosition) {
-            var lefts = this.lefts;
-            var rights = this.rights;
+            var _a = this, lefts = _a.lefts, rights = _a.rights;
             var len = lefts.length;
             var i;
-            for (i = 0; i < len; i++) {
+            for (i = 0; i < len; i += 1) {
                 if (leftPosition >= lefts[i] && leftPosition < rights[i]) {
                     return i;
                 }
             }
+            return undefined; // TODO: better
         };
         // Given a top offset (from document top), returns the index of the el that it vertically intersects.
         // If no intersection is made, returns undefined.
         PositionCache.prototype.topToIndex = function (topPosition) {
-            var tops = this.tops;
-            var bottoms = this.bottoms;
+            var _a = this, tops = _a.tops, bottoms = _a.bottoms;
             var len = tops.length;
             var i;
-            for (i = 0; i < len; i++) {
+            for (i = 0; i < len; i += 1) {
                 if (topPosition >= tops[i] && topPosition < bottoms[i]) {
                     return i;
                 }
             }
+            return undefined; // TODO: better
         };
         // Gets the width of the element at the given index
         PositionCache.prototype.getWidth = function (leftIndex) {
@@ -4811,6 +4770,7 @@ var FullCalendar = (function (exports) {
         return PositionCache;
     }());
 
+    /* eslint max-classes-per-file: "off" */
     /*
     An object for getting/setting scroll-related information for an element.
     Internally, this is done very differently for window versus DOM element,
@@ -4949,7 +4909,7 @@ var FullCalendar = (function (exports) {
                 className = this.iconClasses[buttonName];
             }
             if (className) {
-                return this.baseIconClass + ' ' + className;
+                return this.baseIconClass + " " + className;
             }
             return '';
         };
@@ -4958,7 +4918,7 @@ var FullCalendar = (function (exports) {
             if (this.iconOverrideCustomButtonOption) {
                 className = customButtonProps[this.iconOverrideCustomButtonOption];
                 if (className) {
-                    return this.baseIconClass + ' ' + this.applyIconOverridePrefix(className);
+                    return this.baseIconClass + " " + this.applyIconOverridePrefix(className);
                 }
             }
             return '';
@@ -4970,7 +4930,7 @@ var FullCalendar = (function (exports) {
     Theme.prototype.baseIconClass = '';
     Theme.prototype.iconOverridePrefix = '';
 
-    /// <reference types="@fullcalendar/core-vdom" />
+    /// <reference types="@fullcalendar/core-preact" />
     if (typeof FullCalendarVDom === 'undefined') {
         throw new Error('Please import the top-level fullcalendar lib before attempting to import a plugin.');
     }
@@ -4981,6 +4941,7 @@ var FullCalendar = (function (exports) {
     var Fragment = FullCalendarVDom.Fragment;
     var createContext$1 = FullCalendarVDom.createContext;
     var flushToDom$1 = FullCalendarVDom.flushToDom;
+    var unmountComponentAtNode$1 = FullCalendarVDom.unmountComponentAtNode;
 
     var ScrollResponder = /** @class */ (function () {
         function ScrollResponder(execFunc, emitter, scrollTime) {
@@ -5008,7 +4969,7 @@ var FullCalendar = (function (exports) {
         };
         ScrollResponder.prototype.fireInitialScroll = function () {
             this.handleScrollRequest({
-                time: this.scrollTime
+                time: this.scrollTime,
             });
         };
         ScrollResponder.prototype.drain = function () {
@@ -5044,10 +5005,11 @@ var FullCalendar = (function (exports) {
                 return new ScrollResponder(execFunc, emitter, createDuration(viewOptions.scrollTime));
             },
             registerInteractiveComponent: registerInteractiveComponent,
-            unregisterInteractiveComponent: unregisterInteractiveComponent
+            unregisterInteractiveComponent: unregisterInteractiveComponent,
         };
     }
 
+    /* eslint max-classes-per-file: off */
     var PureComponent = /** @class */ (function (_super) {
         __extends(PureComponent, _super);
         function PureComponent() {
@@ -5055,6 +5017,7 @@ var FullCalendar = (function (exports) {
         }
         PureComponent.prototype.shouldComponentUpdate = function (nextProps, nextState) {
             if (this.debug) {
+                // eslint-disable-next-line no-console
                 console.log(getUnequalProps(nextProps, this.props), getUnequalProps(nextState, this.state));
             }
             return !compareObjs(this.props, nextProps, this.propEquality) ||
@@ -5103,6 +5066,8 @@ var FullCalendar = (function (exports) {
             case 'ADD_EVENTS': // already parsed, but not expanded
                 return addEvent(eventStore, action.eventStore, // new ones
                 dateProfile ? dateProfile.activeRange : null, context);
+            case 'RESET_EVENTS':
+                return action.eventStore;
             case 'MERGE_EVENTS': // already parsed and expanded
                 return mergeEventStores(eventStore, action.eventStore);
             case 'PREV': // TODO: how do we track all actions that affect dateProfile :(
@@ -5112,17 +5077,14 @@ var FullCalendar = (function (exports) {
                 if (dateProfile) {
                     return expandRecurring(eventStore, dateProfile.activeRange, context);
                 }
-                else {
-                    return eventStore;
-                }
+                return eventStore;
             case 'REMOVE_EVENTS':
                 return excludeSubEventStore(eventStore, action.eventStore);
             case 'REMOVE_EVENT_SOURCE':
                 return excludeEventsBySourceId(eventStore, action.sourceId);
             case 'REMOVE_ALL_EVENT_SOURCES':
-                return filterEventStoreDefs(eventStore, function (eventDef) {
-                    return !eventDef.sourceId; // only keep events with no source id
-                });
+                return filterEventStoreDefs(eventStore, function (eventDef) { return (!eventDef.sourceId // only keep events with no source id
+                ); });
             case 'REMOVE_ALL_EVENTS':
                 return createEmptyEventStore();
             default:
@@ -5185,27 +5147,21 @@ var FullCalendar = (function (exports) {
             if (def.allDay || def.recurringDef) {
                 return instance; // isn't dependent on timezone
             }
-            else {
-                return __assign(__assign({}, instance), { range: {
-                        start: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start, instance.forcedStartTzo)),
-                        end: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end, instance.forcedEndTzo))
-                    }, forcedStartTzo: newDateEnv.canComputeOffset ? null : instance.forcedStartTzo, forcedEndTzo: newDateEnv.canComputeOffset ? null : instance.forcedEndTzo });
-            }
+            return __assign(__assign({}, instance), { range: {
+                    start: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start, instance.forcedStartTzo)),
+                    end: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end, instance.forcedEndTzo)),
+                }, forcedStartTzo: newDateEnv.canComputeOffset ? null : instance.forcedStartTzo, forcedEndTzo: newDateEnv.canComputeOffset ? null : instance.forcedEndTzo });
         });
         return { defs: defs, instances: instances };
     }
     function excludeEventsBySourceId(eventStore, sourceId) {
-        return filterEventStoreDefs(eventStore, function (eventDef) {
-            return eventDef.sourceId !== sourceId;
-        });
+        return filterEventStoreDefs(eventStore, function (eventDef) { return eventDef.sourceId !== sourceId; });
     }
     // QUESTION: why not just return instances? do a general object-property-exclusion util
     function excludeInstances(eventStore, removals) {
         return {
             defs: eventStore.defs,
-            instances: filterHash(eventStore.instances, function (instance) {
-                return !removals[instance.instanceId];
-            })
+            instances: filterHash(eventStore.instances, function (instance) { return !removals[instance.instanceId]; }),
         };
     }
 
@@ -5242,12 +5198,12 @@ var FullCalendar = (function (exports) {
         var subjectInstances = subjectEventStore.instances;
         var subjectConfigs = compileEventUis(subjectDefs, interaction.isEvent ?
             state.eventUiBases :
-            { '': currentState.selectionConfig } // if not a real event, validate as a selection
-        );
+            { '': currentState.selectionConfig });
         if (filterConfig) {
             subjectConfigs = mapHash(subjectConfigs, filterConfig);
         }
-        var otherEventStore = excludeInstances(state.eventStore, interaction.affectedEvents.instances); // exclude the subject events. TODO: exclude defs too?
+        // exclude the subject events. TODO: exclude defs too?
+        var otherEventStore = excludeInstances(state.eventStore, interaction.affectedEvents.instances);
         var otherDefs = otherEventStore.defs;
         var otherInstances = otherEventStore.instances;
         var otherConfigs = compileEventUis(otherDefs, state.eventUiBases);
@@ -5276,8 +5232,7 @@ var FullCalendar = (function (exports) {
                         return false;
                     }
                     if (eventOverlapFunc && !eventOverlapFunc(new EventApi(context, otherDefs[otherInstance.defId], otherInstance), // still event
-                    new EventApi(context, subjectDef, subjectInstance) // moving event
-                    )) {
+                    new EventApi(context, subjectDef, subjectInstance))) {
                         return false;
                     }
                 }
@@ -5358,17 +5313,14 @@ var FullCalendar = (function (exports) {
     function constraintToRanges(constraint, subjectRange, // for expanding a recurring constraint, or expanding business hours
     otherEventStore, // for if constraint is an even group ID
     businessHoursUnexpanded, // for if constraint is 'businessHours'
-    context // for expanding businesshours
-    ) {
+    context) {
         if (constraint === 'businessHours') {
             return eventStoreToRanges(expandRecurring(businessHoursUnexpanded, subjectRange, context));
         }
-        else if (typeof constraint === 'string') { // an group ID
-            return eventStoreToRanges(filterEventStoreDefs(otherEventStore, function (eventDef) {
-                return eventDef.groupId === constraint;
-            }));
+        if (typeof constraint === 'string') { // an group ID
+            return eventStoreToRanges(filterEventStoreDefs(otherEventStore, function (eventDef) { return eventDef.groupId === constraint; }));
         }
-        else if (typeof constraint === 'object' && constraint) { // non-null object
+        if (typeof constraint === 'object' && constraint) { // non-null object
             return eventStoreToRanges(expandRecurring(constraint, subjectRange, context));
         }
         return []; // if it's false
@@ -5441,22 +5393,13 @@ var FullCalendar = (function (exports) {
         DateComponent.prototype.isValidSegDownEl = function (el) {
             return !this.props.eventDrag && // HACK
                 !this.props.eventResize && // HACK
-                !elementClosest(el, '.fc-event-mirror') &&
-                (this.isPopover() || !this.isInPopover(el));
-            // ^above line ensures we don't detect a seg interaction within a nested component.
-            // it's a HACK because it only supports a popover as the nested component.
+                !elementClosest(el, '.fc-event-mirror');
         };
         DateComponent.prototype.isValidDateDownEl = function (el) {
             return !elementClosest(el, '.fc-event:not(.fc-bg-event)') &&
                 !elementClosest(el, '.fc-daygrid-more-link') && // a "more.." link
                 !elementClosest(el, 'a[data-navlink]') && // a clickable nav link
-                !this.isInPopover(el);
-        };
-        DateComponent.prototype.isPopover = function () {
-            return false;
-        };
-        DateComponent.prototype.isInPopover = function (el) {
-            return Boolean(elementClosest(el, '.fc-popover'));
+                !elementClosest(el, '.fc-popover'); // hack
         };
         return DateComponent;
     }(BaseComponent));
@@ -5467,6 +5410,7 @@ var FullCalendar = (function (exports) {
             id: guid(),
             deps: input.deps || [],
             reducers: input.reducers || [],
+            isLoadingFuncs: input.isLoadingFuncs || [],
             contextInit: [].concat(input.contextInit || []),
             eventRefiners: input.eventRefiners || {},
             eventDefMemberAdders: input.eventDefMemberAdders || [],
@@ -5498,13 +5442,14 @@ var FullCalendar = (function (exports) {
             contentTypeHandlers: input.contentTypeHandlers || {},
             listenerRefiners: input.listenerRefiners || {},
             optionRefiners: input.optionRefiners || {},
-            propSetHandlers: input.propSetHandlers || {}
+            propSetHandlers: input.propSetHandlers || {},
         };
     }
     function buildPluginHooks(pluginDefs, globalDefs) {
         var isAdded = {};
         var hooks = {
             reducers: [],
+            isLoadingFuncs: [],
             contextInit: [],
             eventRefiners: {},
             eventDefMemberAdders: [],
@@ -5536,7 +5481,7 @@ var FullCalendar = (function (exports) {
             contentTypeHandlers: {},
             listenerRefiners: {},
             optionRefiners: {},
-            propSetHandlers: {}
+            propSetHandlers: {},
         };
         function addDefs(defs) {
             for (var _i = 0, defs_1 = defs; _i < defs_1.length; _i++) {
@@ -5570,6 +5515,7 @@ var FullCalendar = (function (exports) {
     function combineHooks(hooks0, hooks1) {
         return {
             reducers: hooks0.reducers.concat(hooks1.reducers),
+            isLoadingFuncs: hooks0.isLoadingFuncs.concat(hooks1.isLoadingFuncs),
             contextInit: hooks0.contextInit.concat(hooks1.contextInit),
             eventRefiners: __assign(__assign({}, hooks0.eventRefiners), hooks1.eventRefiners),
             eventDefMemberAdders: hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders),
@@ -5601,7 +5547,7 @@ var FullCalendar = (function (exports) {
             contentTypeHandlers: __assign(__assign({}, hooks0.contentTypeHandlers), hooks1.contentTypeHandlers),
             listenerRefiners: __assign(__assign({}, hooks0.listenerRefiners), hooks1.listenerRefiners),
             optionRefiners: __assign(__assign({}, hooks0.optionRefiners), hooks1.optionRefiners),
-            propSetHandlers: __assign(__assign({}, hooks0.propSetHandlers), hooks1.propSetHandlers)
+            propSetHandlers: __assign(__assign({}, hooks0.propSetHandlers), hooks1.propSetHandlers),
         };
     }
 
@@ -5617,7 +5563,7 @@ var FullCalendar = (function (exports) {
         tableCellShaded: 'fc-cell-shaded',
         buttonGroup: 'fc-button-group',
         button: 'fc-button fc-button-primary',
-        buttonActive: 'fc-button-active'
+        buttonActive: 'fc-button-active',
     };
     StandardTheme.prototype.baseIconClass = 'fc-icon';
     StandardTheme.prototype.iconClasses = {
@@ -5625,13 +5571,13 @@ var FullCalendar = (function (exports) {
         prev: 'fc-icon-chevron-left',
         next: 'fc-icon-chevron-right',
         prevYear: 'fc-icon-chevrons-left',
-        nextYear: 'fc-icon-chevrons-right'
+        nextYear: 'fc-icon-chevrons-right',
     };
     StandardTheme.prototype.rtlIconClasses = {
         prev: 'fc-icon-chevron-right',
         next: 'fc-icon-chevron-left',
         prevYear: 'fc-icon-chevrons-right',
-        nextYear: 'fc-icon-chevrons-left'
+        nextYear: 'fc-icon-chevrons-left',
     };
     StandardTheme.prototype.iconOverrideOption = 'buttonIcons'; // TODO: make TS-friendly
     StandardTheme.prototype.iconOverrideCustomButtonOption = 'icon';
@@ -5661,10 +5607,8 @@ var FullCalendar = (function (exports) {
     function buildViewDef(viewType, hash, defaultConfigs, overrideConfigs) {
         var defaultConfig = defaultConfigs[viewType];
         var overrideConfig = overrideConfigs[viewType];
-        var queryProp = function (name) {
-            return (defaultConfig && defaultConfig[name] !== null) ? defaultConfig[name] :
-                ((overrideConfig && overrideConfig[name] !== null) ? overrideConfig[name] : null);
-        };
+        var queryProp = function (name) { return ((defaultConfig && defaultConfig[name] !== null) ? defaultConfig[name] :
+            ((overrideConfig && overrideConfig[name] !== null) ? overrideConfig[name] : null)); };
         var theComponent = queryProp('component');
         var superType = queryProp('superType');
         var superDef = null;
@@ -5684,10 +5628,11 @@ var FullCalendar = (function (exports) {
             type: viewType,
             component: theComponent,
             defaults: __assign(__assign({}, (superDef ? superDef.defaults : {})), (defaultConfig ? defaultConfig.rawOptions : {})),
-            overrides: __assign(__assign({}, (superDef ? superDef.overrides : {})), (overrideConfig ? overrideConfig.rawOptions : {}))
+            overrides: __assign(__assign({}, (superDef ? superDef.overrides : {})), (overrideConfig ? overrideConfig.rawOptions : {})),
         };
     }
 
+    /* eslint max-classes-per-file: off */
     // NOTE: in JSX, you should always use this class with <HookProps> arg. otherwise, will default to any???
     var RenderHook = /** @class */ (function (_super) {
         __extends(RenderHook, _super);
@@ -5710,26 +5655,34 @@ var FullCalendar = (function (exports) {
         };
         return RenderHook;
     }(BaseComponent));
+    // TODO: rename to be about function, not default. use in above type
     // for forcing rerender of components that use the ContentHook
     var CustomContentRenderContext = createContext$1(0);
-    var ContentHook = /** @class */ (function (_super) {
-        __extends(ContentHook, _super);
-        function ContentHook() {
+    function ContentHook(props) {
+        return (createElement(CustomContentRenderContext.Consumer, null, function (renderId) { return (createElement(ContentHookInner, __assign({ renderId: renderId }, props))); }));
+    }
+    var ContentHookInner = /** @class */ (function (_super) {
+        __extends(ContentHookInner, _super);
+        function ContentHookInner() {
             var _this = _super !== null && _super.apply(this, arguments) || this;
             _this.innerElRef = createRef();
             return _this;
         }
-        ContentHook.prototype.render = function () {
-            var _this = this;
-            return (createElement(CustomContentRenderContext.Consumer, null, function () { return (_this.props.children(_this.innerElRef, _this.renderInnerContent())); }));
+        ContentHookInner.prototype.render = function () {
+            return this.props.children(this.innerElRef, this.renderInnerContent());
         };
-        ContentHook.prototype.componentDidMount = function () {
+        ContentHookInner.prototype.componentDidMount = function () {
             this.updateCustomContent();
         };
-        ContentHook.prototype.componentDidUpdate = function () {
+        ContentHookInner.prototype.componentDidUpdate = function () {
             this.updateCustomContent();
         };
-        ContentHook.prototype.renderInnerContent = function () {
+        ContentHookInner.prototype.componentWillUnmount = function () {
+            if (this.customContentInfo && this.customContentInfo.destroy) {
+                this.customContentInfo.destroy();
+            }
+        };
+        ContentHookInner.prototype.renderInnerContent = function () {
             var contentTypeHandlers = this.context.pluginHooks.contentTypeHandlers;
             var _a = this, props = _a.props, customContentInfo = _a.customContentInfo;
             var rawVal = props.content;
@@ -5746,11 +5699,8 @@ var FullCalendar = (function (exports) {
                     // look for a prop that would indicate a custom content handler is needed
                     for (var contentKey in contentTypeHandlers) {
                         if (innerContent[contentKey] !== undefined) {
-                            customContentInfo = this.customContentInfo = {
-                                contentKey: contentKey,
-                                contentVal: innerContent[contentKey],
-                                handler: contentTypeHandlers[contentKey]()
-                            };
+                            var stuff = contentTypeHandlers[contentKey]();
+                            customContentInfo = this.customContentInfo = __assign({ contentKey: contentKey, contentVal: innerContent[contentKey] }, stuff);
                             break;
                         }
                     }
@@ -5764,13 +5714,13 @@ var FullCalendar = (function (exports) {
             }
             return innerContentVDom;
         };
-        ContentHook.prototype.updateCustomContent = function () {
+        ContentHookInner.prototype.updateCustomContent = function () {
             if (this.customContentInfo) {
-                this.customContentInfo.handler(this.innerElRef.current || this.props.backupElRef.current, // the element to render into
+                this.customContentInfo.render(this.innerElRef.current || this.props.backupElRef.current, // the element to render into
                 this.customContentInfo.contentVal);
             }
         };
-        return ContentHook;
+        return ContentHookInner;
     }(BaseComponent));
     var MountHook = /** @class */ (function (_super) {
         __extends(MountHook, _super);
@@ -5789,11 +5739,15 @@ var FullCalendar = (function (exports) {
         };
         MountHook.prototype.componentDidMount = function () {
             var callback = this.props.didMount;
-            callback && callback(__assign(__assign({}, this.props.hookProps), { el: this.rootEl }));
+            if (callback) {
+                callback(__assign(__assign({}, this.props.hookProps), { el: this.rootEl }));
+            }
         };
         MountHook.prototype.componentWillUnmount = function () {
             var callback = this.props.willUnmount;
-            callback && callback(__assign(__assign({}, this.props.hookProps), { el: this.rootEl }));
+            if (callback) {
+                callback(__assign(__assign({}, this.props.hookProps), { el: this.rootEl }));
+            }
         };
         return MountHook;
     }(BaseComponent));
@@ -5820,9 +5774,7 @@ var FullCalendar = (function (exports) {
         if (typeof input === 'function') {
             return input(hookProps, createElement); // give the function the vdom-creation func
         }
-        else {
-            return input;
-        }
+        return input;
     }
 
     var ViewRoot = /** @class */ (function (_super) {
@@ -5857,25 +5809,21 @@ var FullCalendar = (function (exports) {
         return {
             superType: rawOptions.type,
             component: component,
-            rawOptions: rawOptions // includes type and component too :(
+            rawOptions: rawOptions,
         };
     }
     function createViewHookComponent(options) {
-        return function (viewProps) {
-            return (createElement(ViewContextType.Consumer, null, function (context) { return (createElement(ViewRoot, { viewSpec: context.viewSpec }, function (rootElRef, viewClassNames) {
-                var hookProps = __assign(__assign({}, viewProps), { nextDayThreshold: context.options.nextDayThreshold });
-                return (createElement(RenderHook, { hookProps: hookProps, classNames: options.classNames, content: options.content, didMount: options.didMount, willUnmount: options.willUnmount, elRef: rootElRef }, function (rootElRef, customClassNames, innerElRef, innerContent) { return (createElement("div", { className: viewClassNames.concat(customClassNames).join(' '), ref: rootElRef }, innerContent)); }));
-            })); }));
-        };
+        return function (viewProps) { return (createElement(ViewContextType.Consumer, null, function (context) { return (createElement(ViewRoot, { viewSpec: context.viewSpec }, function (viewElRef, viewClassNames) {
+            var hookProps = __assign(__assign({}, viewProps), { nextDayThreshold: context.options.nextDayThreshold });
+            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)); }));
+        })); })); };
     }
 
     function buildViewSpecs(defaultInputs, optionOverrides, dynamicOptionOverrides, localeDefaults) {
         var defaultConfigs = parseViewConfigs(defaultInputs);
         var overrideConfigs = parseViewConfigs(optionOverrides.views);
         var viewDefs = compileViewDefs(defaultConfigs, overrideConfigs);
-        return mapHash(viewDefs, function (viewDef) {
-            return buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults);
-        });
+        return mapHash(viewDefs, function (viewDef) { return buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults); });
     }
     function buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults) {
         var durationInput = viewDef.overrides.duration ||
@@ -5909,6 +5857,7 @@ var FullCalendar = (function (exports) {
             if (buttonTextMap[singleUnit] != null) {
                 return buttonTextMap[singleUnit];
             }
+            return null;
         };
         return {
             type: viewDef.type,
@@ -5924,7 +5873,7 @@ var FullCalendar = (function (exports) {
             buttonTextDefault: queryButtonText(localeDefaults) ||
                 viewDef.defaults.buttonText ||
                 queryButtonText(BASE_OPTION_DEFAULTS) ||
-                viewDef.type // fall back to given view name
+                viewDef.type,
         };
     }
     // hack to get memoization working
@@ -6013,8 +5962,7 @@ var FullCalendar = (function (exports) {
                 slotMaxTime: props.slotMaxTime,
                 isValid: isValid,
                 // how far the current date will move for a prev/next operation
-                dateIncrement: this.buildDateIncrement(currentInfo.duration)
-                // pass a fallback (might be null) ^
+                dateIncrement: this.buildDateIncrement(currentInfo.duration),
             };
         };
         // Builds an object with optional start/end properties.
@@ -6064,8 +6012,7 @@ var FullCalendar = (function (exports) {
         // slotMinTime or slotMaxTime causes the range to expand.
         DateProfileGenerator.prototype.adjustActiveRange = function (range) {
             var _a = this.props, dateEnv = _a.dateEnv, usesMinMaxTime = _a.usesMinMaxTime, slotMinTime = _a.slotMinTime, slotMaxTime = _a.slotMaxTime;
-            var start = range.start;
-            var end = range.end;
+            var start = range.start, end = range.end;
             if (usesMinMaxTime) {
                 // expand active range if slotMinTime is negative (why not when positive?)
                 if (asRoughDays(slotMinTime) < 0) {
@@ -6139,7 +6086,7 @@ var FullCalendar = (function (exports) {
             do {
                 end = addDays(end, 1);
                 if (!this.isHiddenDay(end)) {
-                    runningCount++;
+                    runningCount += 1;
                 }
             } while (runningCount < dayCount);
             return { start: start, end: end };
@@ -6172,15 +6119,13 @@ var FullCalendar = (function (exports) {
             if (dateIncrement) {
                 return dateIncrement;
             }
-            else if ((customAlignment = this.props.dateAlignment)) {
+            if ((customAlignment = this.props.dateAlignment)) {
                 return createDuration(1, customAlignment);
             }
-            else if (fallback) {
+            if (fallback) {
                 return fallback;
             }
-            else {
-                return createDuration({ days: 1 });
-            }
+            return createDuration({ days: 1 });
         };
         DateProfileGenerator.prototype.refineRange = function (rangeInput) {
             if (rangeInput) {
@@ -6203,9 +6148,9 @@ var FullCalendar = (function (exports) {
             if (this.props.weekends === false) {
                 hiddenDays.push(0, 6); // 0=sunday, 6=saturday
             }
-            for (i = 0; i < 7; i++) {
+            for (i = 0; i < 7; i += 1) {
                 if (!(isHiddenDayHash[i] = hiddenDays.indexOf(i) !== -1)) {
-                    dayCnt++;
+                    dayCnt += 1;
                 }
             }
             if (!dayCnt) {
@@ -6216,8 +6161,7 @@ var FullCalendar = (function (exports) {
         // Remove days from the beginning and end of the range that are computed as hidden.
         // If the whole range is trimmed off, returns null
         DateProfileGenerator.prototype.trimHiddenDays = function (range) {
-            var start = range.start;
-            var end = range.end;
+            var start = range.start, end = range.end;
             if (start) {
                 start = this.skipHiddenDays(start);
             }
@@ -6256,7 +6200,7 @@ var FullCalendar = (function (exports) {
     function reduceViewType(viewType, action) {
         switch (action.type) {
             case 'CHANGE_VIEW_TYPE':
-                return viewType = action.viewType;
+                viewType = action.viewType;
         }
         return viewType;
     }
@@ -6317,9 +6261,7 @@ var FullCalendar = (function (exports) {
                 if (dateProfile) {
                     return fetchDirtySources(eventSources, activeRange, context);
                 }
-                else {
-                    return eventSources;
-                }
+                return eventSources;
             case 'FETCH_EVENT_SOURCES':
                 return fetchSourcesByIds(eventSources, action.sourceIds ? // why no type?
                     arrayToHash(action.sourceIds) :
@@ -6337,14 +6279,13 @@ var FullCalendar = (function (exports) {
         var activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?
         return fetchSourcesByIds(eventSources, excludeStaticSources(eventSources, context), activeRange, context);
     }
-    function computeEventSourceLoadingLevel(eventSources) {
-        var cnt = 0;
+    function computeEventSourcesLoading(eventSources) {
         for (var sourceId in eventSources) {
             if (eventSources[sourceId].isFetching) {
-                cnt++;
+                return true;
             }
         }
-        return cnt;
+        return false;
     }
     function addSources(eventSourceHash, sources, fetchRange, context) {
         var hash = {};
@@ -6358,26 +6299,20 @@ var FullCalendar = (function (exports) {
         return __assign(__assign({}, eventSourceHash), hash);
     }
     function removeSource(eventSourceHash, sourceId) {
-        return filterHash(eventSourceHash, function (eventSource) {
-            return eventSource.sourceId !== sourceId;
-        });
+        return filterHash(eventSourceHash, function (eventSource) { return eventSource.sourceId !== sourceId; });
     }
     function fetchDirtySources(sourceHash, fetchRange, context) {
-        return fetchSourcesByIds(sourceHash, filterHash(sourceHash, function (eventSource) {
-            return isSourceDirty(eventSource, fetchRange, context);
-        }), fetchRange, context);
+        return fetchSourcesByIds(sourceHash, filterHash(sourceHash, function (eventSource) { return isSourceDirty(eventSource, fetchRange, context); }), fetchRange, context);
     }
     function isSourceDirty(eventSource, fetchRange, context) {
         if (!doesSourceNeedRange(eventSource, context)) {
             return !eventSource.latestFetchId;
         }
-        else {
-            return !context.options.lazyFetching ||
-                !eventSource.fetchRange ||
-                eventSource.isFetching || // always cancel outdated in-progress fetches
-                fetchRange.start < eventSource.fetchRange.start ||
-                fetchRange.end > eventSource.fetchRange.end;
-        }
+        return !context.options.lazyFetching ||
+            !eventSource.fetchRange ||
+            eventSource.isFetching || // always cancel outdated in-progress fetches
+            fetchRange.start < eventSource.fetchRange.start ||
+            fetchRange.end > eventSource.fetchRange.end;
     }
     function fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, context) {
         var nextSources = {};
@@ -6399,7 +6334,7 @@ var FullCalendar = (function (exports) {
         sourceDef.fetch({
             eventSource: eventSource,
             range: fetchRange,
-            context: context
+            context: context,
         }, function (res) {
             var rawEvents = res.rawEvents;
             if (options.eventSourceSuccess) {
@@ -6413,7 +6348,7 @@ var FullCalendar = (function (exports) {
                 sourceId: eventSource.sourceId,
                 fetchId: fetchId,
                 fetchRange: fetchRange,
-                rawEvents: rawEvents
+                rawEvents: rawEvents,
             });
         }, function (error) {
             console.warn(error.message, error);
@@ -6428,7 +6363,7 @@ var FullCalendar = (function (exports) {
                 sourceId: eventSource.sourceId,
                 fetchId: fetchId,
                 fetchRange: fetchRange,
-                error: error
+                error: error,
             });
         });
         return __assign(__assign({}, eventSource), { isFetching: true, latestFetchId: fetchId });
@@ -6438,15 +6373,12 @@ var FullCalendar = (function (exports) {
         var eventSource = sourceHash[sourceId];
         if (eventSource && // not already removed
             fetchId === eventSource.latestFetchId) {
-            return __assign(__assign({}, sourceHash), (_a = {}, _a[sourceId] = __assign(__assign({}, eventSource), { isFetching: false, fetchRange: fetchRange // also serves as a marker that at least one fetch has completed
-             }), _a));
+            return __assign(__assign({}, sourceHash), (_a = {}, _a[sourceId] = __assign(__assign({}, eventSource), { isFetching: false, fetchRange: fetchRange }), _a));
         }
         return sourceHash;
     }
     function excludeStaticSources(eventSources, context) {
-        return filterHash(eventSources, function (eventSource) {
-            return doesSourceNeedRange(eventSource, context);
-        });
+        return filterHash(eventSources, function (eventSource) { return doesSourceNeedRange(eventSource, context); });
     }
     function parseInitialSources(rawOptions, context) {
         var refiners = buildEventSourceRefiners(context);
@@ -6504,7 +6436,7 @@ var FullCalendar = (function (exports) {
                 return {
                     affectedEvents: newDrag.affectedEvents,
                     mutatedEvents: newDrag.mutatedEvents,
-                    isEvent: newDrag.isEvent
+                    isEvent: newDrag.isEvent,
                 };
             default:
                 return currentDrag;
@@ -6521,7 +6453,7 @@ var FullCalendar = (function (exports) {
                 return {
                     affectedEvents: newResize.affectedEvents,
                     mutatedEvents: newResize.mutatedEvents,
-                    isEvent: newResize.isEvent
+                    isEvent: newResize.isEvent,
                 };
             default:
                 return currentResize;
@@ -6534,63 +6466,57 @@ var FullCalendar = (function (exports) {
         var footerToolbar = calendarOptions.footerToolbar ? parseToolbar(calendarOptions.footerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi, viewsWithButtons) : null;
         return { headerToolbar: headerToolbar, footerToolbar: footerToolbar, viewsWithButtons: viewsWithButtons };
     }
-    function parseToolbar(sectionStrHash, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi, viewsWithButtons // dump side effects
-    ) {
+    function parseToolbar(sectionStrHash, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi, viewsWithButtons) {
         return mapHash(sectionStrHash, function (sectionStr) { return parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi, viewsWithButtons); });
     }
     /*
     BAD: querying icons and text here. should be done at render time
     */
-    function parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi, viewsWithButtons // dump side effects
-    ) {
+    function parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi, viewsWithButtons) {
         var isRtl = calendarOptions.direction === 'rtl';
         var calendarCustomButtons = calendarOptions.customButtons || {};
         var calendarButtonTextOverrides = calendarOptionOverrides.buttonText || {};
         var calendarButtonText = calendarOptions.buttonText || {};
         var sectionSubstrs = sectionStr ? sectionStr.split(' ') : [];
-        return sectionSubstrs.map(function (buttonGroupStr) {
-            return buttonGroupStr.split(',').map(function (buttonName) {
-                if (buttonName === 'title') {
-                    return { buttonName: buttonName };
-                }
-                else {
-                    var customButtonProps_1;
-                    var viewSpec = void 0;
-                    var buttonClick = void 0;
-                    var buttonIcon = void 0; // only one of these will be set
-                    var buttonText = void 0; // "
-                    if ((customButtonProps_1 = calendarCustomButtons[buttonName])) {
-                        buttonClick = function (ev) {
-                            if (customButtonProps_1.click) {
-                                customButtonProps_1.click.call(ev.target, ev); // TODO: correct to use `target`?
-                            }
-                        };
-                        (buttonIcon = theme.getCustomButtonIconClass(customButtonProps_1)) ||
-                            (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||
-                            (buttonText = customButtonProps_1.text);
-                    }
-                    else if ((viewSpec = viewSpecs[buttonName])) {
-                        viewsWithButtons.push(buttonName);
-                        buttonClick = function () {
-                            calendarApi.changeView(buttonName);
-                        };
-                        (buttonText = viewSpec.buttonTextOverride) ||
-                            (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||
-                            (buttonText = viewSpec.buttonTextDefault);
-                    }
-                    else if (calendarApi[buttonName]) { // a calendarApi method
-                        buttonClick = function () {
-                            calendarApi[buttonName]();
-                        };
-                        (buttonText = calendarButtonTextOverrides[buttonName]) ||
-                            (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||
-                            (buttonText = calendarButtonText[buttonName]);
-                        //            ^ everything else is considered default
+        return sectionSubstrs.map(function (buttonGroupStr) { return (buttonGroupStr.split(',').map(function (buttonName) {
+            if (buttonName === 'title') {
+                return { buttonName: buttonName };
+            }
+            var customButtonProps;
+            var viewSpec;
+            var buttonClick;
+            var buttonIcon; // only one of these will be set
+            var buttonText; // "
+            if ((customButtonProps = calendarCustomButtons[buttonName])) {
+                buttonClick = function (ev) {
+                    if (customButtonProps.click) {
+                        customButtonProps.click.call(ev.target, ev, ev.target);
                     }
-                    return { buttonName: buttonName, buttonClick: buttonClick, buttonIcon: buttonIcon, buttonText: buttonText };
-                }
-            });
-        });
+                };
+                (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) ||
+                    (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||
+                    (buttonText = customButtonProps.text);
+            }
+            else if ((viewSpec = viewSpecs[buttonName])) {
+                viewsWithButtons.push(buttonName);
+                buttonClick = function () {
+                    calendarApi.changeView(buttonName);
+                };
+                (buttonText = viewSpec.buttonTextOverride) ||
+                    (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||
+                    (buttonText = viewSpec.buttonTextDefault);
+            }
+            else if (calendarApi[buttonName]) { // a calendarApi method
+                buttonClick = function () {
+                    calendarApi[buttonName]();
+                };
+                (buttonText = calendarButtonTextOverrides[buttonName]) ||
+                    (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||
+                    (buttonText = calendarButtonText[buttonName]);
+                //            ^ everything else is considered default
+            }
+            return { buttonName: buttonName, buttonClick: buttonClick, buttonIcon: buttonIcon, buttonText: buttonText };
+        })); });
     }
 
     var eventSourceDef = {
@@ -6603,12 +6529,12 @@ var FullCalendar = (function (exports) {
         },
         fetch: function (arg, success) {
             success({
-                rawEvents: arg.eventSource.meta
+                rawEvents: arg.eventSource.meta,
             });
-        }
+        },
     };
     var arrayEventSourcePlugin = createPlugin({
-        eventSourceDefs: [eventSourceDef]
+        eventSourceDefs: [eventSourceDef],
     });
 
     var eventSourceDef$1 = {
@@ -6623,12 +6549,11 @@ var FullCalendar = (function (exports) {
             var func = arg.eventSource.meta;
             unpromisify(func.bind(null, buildRangeApiWithTimeZone(arg.range, dateEnv)), function (rawEvents) {
                 success({ rawEvents: rawEvents }); // needs an object response
-            }, failure // send errorObj directly to failure callback
-            );
-        }
+            }, failure);
+        },
     };
     var funcEventSourcePlugin = createPlugin({
-        eventSourceDefs: [eventSourceDef$1]
+        eventSourceDefs: [eventSourceDef$1],
     });
 
     function requestJson(method, url, params, successCallback, failureCallback) {
@@ -6680,7 +6605,7 @@ var FullCalendar = (function (exports) {
     function encodeParams(params) {
         var parts = [];
         for (var key in params) {
-            parts.push(encodeURIComponent(key) + '=' + encodeURIComponent(params[key]));
+            parts.push(encodeURIComponent(key) + "=" + encodeURIComponent(params[key]));
         }
         return parts.join('&');
     }
@@ -6690,19 +6615,20 @@ var FullCalendar = (function (exports) {
         extraParams: identity,
         startParam: String,
         endParam: String,
-        timeZoneParam: String
+        timeZoneParam: String,
     };
 
     var eventSourceDef$2 = {
         parseMeta: function (refined) {
-            if (refined.url) {
+            if (refined.url && (refined.format === 'json' || !refined.format)) {
                 return {
                     url: refined.url,
+                    format: 'json',
                     method: (refined.method || 'GET').toUpperCase(),
                     extraParams: refined.extraParams,
                     startParam: refined.startParam,
                     endParam: refined.endParam,
-                    timeZoneParam: refined.timeZoneParam
+                    timeZoneParam: refined.timeZoneParam,
                 };
             }
             return null;
@@ -6715,11 +6641,11 @@ var FullCalendar = (function (exports) {
             }, function (errorMessage, xhr) {
                 failure({ message: errorMessage, xhr: xhr });
             });
-        }
+        },
     };
     var jsonFeedEventSourcePlugin = createPlugin({
         eventSourceRefiners: JSON_FEED_EVENT_SOURCE_REFINERS,
-        eventSourceDefs: [eventSourceDef$2]
+        eventSourceDefs: [eventSourceDef$2],
     });
     function buildRequestParams(meta, range, context) {
         var dateEnv = context.dateEnv, options = context.options;
@@ -6764,7 +6690,7 @@ var FullCalendar = (function (exports) {
         endTime: createDuration,
         duration: createDuration,
         startRecur: identity,
-        endRecur: identity
+        endRecur: identity,
     };
 
     var recurring = {
@@ -6775,7 +6701,7 @@ var FullCalendar = (function (exports) {
                     startTime: refined.startTime || null,
                     endTime: refined.endTime || null,
                     startRecur: refined.startRecur ? dateEnv.createMarker(refined.startRecur) : null,
-                    endRecur: refined.endRecur ? dateEnv.createMarker(refined.endRecur) : null
+                    endRecur: refined.endRecur ? dateEnv.createMarker(refined.endRecur) : null,
                 };
                 var duration = void 0;
                 if (refined.duration) {
@@ -6787,7 +6713,7 @@ var FullCalendar = (function (exports) {
                 return {
                     allDayGuess: Boolean(!refined.startTime && !refined.endTime),
                     duration: duration,
-                    typeData: recurringData // doesn't need endTime anymore but oh well
+                    typeData: recurringData,
                 };
             }
             return null;
@@ -6797,14 +6723,12 @@ var FullCalendar = (function (exports) {
             if (clippedFramingRange) {
                 return expandRanges(typeData.daysOfWeek, typeData.startTime, clippedFramingRange, dateEnv);
             }
-            else {
-                return [];
-            }
-        }
+            return [];
+        },
     };
     var simpleRecurringEventsPlugin = createPlugin({
         recurringTypes: [recurring],
-        eventRefiners: SIMPLE_RECURRING_REFINERS
+        eventRefiners: SIMPLE_RECURRING_REFINERS,
     });
     function expandRanges(daysOfWeek, startTime, framingRange, dateEnv) {
         var dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null;
@@ -6835,8 +6759,8 @@ var FullCalendar = (function (exports) {
             events: function (events, context) {
                 handleEventSources([events], context);
             },
-            eventSources: handleEventSources
-        }
+            eventSources: handleEventSources,
+        },
     });
     /*
     BUG: if `event` was supplied, all previously-given `eventSources` will be wiped out
@@ -6847,7 +6771,7 @@ var FullCalendar = (function (exports) {
         for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) {
             var input = inputs_1[_i];
             var inputFound = false;
-            for (var i = 0; i < unfoundSources.length; i++) {
+            for (var i = 0; i < unfoundSources.length; i += 1) {
                 if (unfoundSources[i]._raw === input) {
                     unfoundSources.splice(i, 1); // delete
                     inputFound = true;
@@ -6862,7 +6786,7 @@ var FullCalendar = (function (exports) {
             var unfoundSource = unfoundSources_1[_a];
             context.dispatch({
                 type: 'REMOVE_EVENT_SOURCE',
-                sourceId: unfoundSource.sourceId
+                sourceId: unfoundSource.sourceId,
             });
         }
         for (var _b = 0, newInputs_1 = newInputs; _b < newInputs_1.length; _b++) {
@@ -6893,16 +6817,33 @@ var FullCalendar = (function (exports) {
         simpleRecurringEventsPlugin,
         changeHandlerPlugin,
         createPlugin({
+            isLoadingFuncs: [
+                function (state) { return computeEventSourcesLoading(state.eventSources); },
+            ],
             contentTypeHandlers: {
-                html: function () { return injectHtml; },
-                domNodes: function () { return injectDomNodes; }
+                html: function () { return ({ render: injectHtml }); },
+                domNodes: function () { return ({ render: injectDomNodes }); },
             },
             propSetHandlers: {
                 dateProfile: handleDateProfile,
-                eventStore: handleEventStore
-            }
-        })
+                eventStore: handleEventStore,
+            },
+        }),
     ];
+    function injectHtml(el, html) {
+        el.innerHTML = html;
+    }
+    function injectDomNodes(el, domNodes) {
+        var oldNodes = Array.prototype.slice.call(el.childNodes); // TODO: use array util
+        var newNodes = Array.prototype.slice.call(domNodes); // TODO: use array util
+        if (!isArraysEqual(oldNodes, newNodes)) {
+            for (var _i = 0, newNodes_1 = newNodes; _i < newNodes_1.length; _i++) {
+                var newNode = newNodes_1[_i];
+                el.appendChild(newNode);
+            }
+            oldNodes.forEach(removeElement);
+        }
+    }
 
     var DelayedRunner = /** @class */ (function () {
         function DelayedRunner(drainedOption) {
@@ -6939,7 +6880,8 @@ var FullCalendar = (function (exports) {
                     delete pauseDepths[scope];
                 }
                 else {
-                    var depth = --pauseDepths[scope];
+                    pauseDepths[scope] -= 1;
+                    var depth = pauseDepths[scope];
                     if (depth <= 0) {
                         delete pauseDepths[scope];
                     }
@@ -6978,6 +6920,7 @@ var FullCalendar = (function (exports) {
         };
         return DelayedRunner;
     }());
+
     var TaskRunner = /** @class */ (function () {
         function TaskRunner(runTaskOption, drainedOption) {
             this.runTaskOption = runTaskOption;
@@ -7032,7 +6975,7 @@ var FullCalendar = (function (exports) {
         }
         return dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat || buildTitleFormat(dateProfile)), {
             isEndExclusive: dateProfile.isRangeAllDay,
-            defaultSeparator: viewOptions.titleRangeSeparator
+            defaultSeparator: viewOptions.titleRangeSeparator,
         });
     }
     // Generates the format string that should be used to generate the title for the current date range.
@@ -7042,20 +6985,16 @@ var FullCalendar = (function (exports) {
         if (currentRangeUnit === 'year') {
             return { year: 'numeric' };
         }
-        else if (currentRangeUnit === 'month') {
+        if (currentRangeUnit === 'month') {
             return { year: 'numeric', month: 'long' }; // like "September 2014"
         }
-        else {
-            var days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end);
-            if (days !== null && days > 1) {
-                // multi-day range. shorter, like "Sep 9 - 10 2014"
-                return { year: 'numeric', month: 'short', day: 'numeric' };
-            }
-            else {
-                // one day. longer, like "September 9 2014"
-                return { year: 'numeric', month: 'long', day: 'numeric' };
-            }
+        var days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end);
+        if (days !== null && days > 1) {
+            // multi-day range. shorter, like "Sep 9 - 10 2014"
+            return { year: 'numeric', month: 'short', day: 'numeric' };
         }
+        // one day. longer, like "September 9 2014"
+        return { year: 'numeric', month: 'long', day: 'numeric' };
     }
 
     // in future refactor, do the redux-style function(state=initial) for initial-state
@@ -7086,9 +7025,7 @@ var FullCalendar = (function (exports) {
             this.currentViewOptionsInput = {};
             this.currentViewOptionsRefined = {};
             this.currentCalendarOptionsRefiners = {};
-            this.getCurrentData = function () {
-                return _this.data;
-            };
+            this.getCurrentData = function () { return _this.data; };
             this.dispatch = function (action) {
                 _this.actionRunner.request(action); // protects against recursive calls to _handleAction
             };
@@ -7115,7 +7052,7 @@ var FullCalendar = (function (exports) {
                 calendarApi: props.calendarApi,
                 dispatch: this.dispatch,
                 emitter: this.emitter,
-                getCurrentData: this.getCurrentData
+                getCurrentData: this.getCurrentData,
             };
             // needs to be after setThisContext
             for (var _i = 0, _a = optionsData.pluginHooks.contextInit; _i < _a.length; _i++) {
@@ -7132,21 +7069,20 @@ var FullCalendar = (function (exports) {
                 businessHours: this.parseContextBusinessHours(calendarContext),
                 eventSources: eventSources,
                 eventUiBases: {},
-                loadingLevel: computeEventSourceLoadingLevel(eventSources),
                 eventStore: createEmptyEventStore(),
                 renderableEventStore: createEmptyEventStore(),
                 dateSelection: null,
                 eventSelection: '',
                 eventDrag: null,
                 eventResize: null,
-                selectionConfig: this.buildViewUiProps(calendarContext).selectionConfig
+                selectionConfig: this.buildViewUiProps(calendarContext).selectionConfig,
             };
             var contextAndState = __assign(__assign({}, calendarContext), initialState);
             for (var _b = 0, _c = optionsData.pluginHooks.reducers; _b < _c.length; _b++) {
                 var reducer = _c[_b];
                 __assign(initialState, reducer(null, null, contextAndState));
             }
-            if (initialState.loadingLevel) {
+            if (computeIsLoading(initialState, calendarContext)) {
                 this.emitter.trigger('loading', true); // NOT DRY
             }
             this.state = initialState;
@@ -7158,7 +7094,7 @@ var FullCalendar = (function (exports) {
             props.optionOverrides = append
                 ? __assign(__assign({}, props.optionOverrides), optionOverrides) : optionOverrides;
             this.actionRunner.request({
-                type: 'NOTHING'
+                type: 'NOTHING',
             });
         };
         CalendarDataManager.prototype._handleAction = function (action) {
@@ -7179,10 +7115,9 @@ var FullCalendar = (function (exports) {
                 calendarApi: props.calendarApi,
                 dispatch: this.dispatch,
                 emitter: emitter,
-                getCurrentData: this.getCurrentData
+                getCurrentData: this.getCurrentData,
             };
-            var currentDate = state.currentDate;
-            var dateProfile = state.dateProfile;
+            var currentDate = state.currentDate, dateProfile = state.dateProfile;
             if (this.data && this.data.dateProfileGenerator !== currentViewData.dateProfileGenerator) { // hack
                 dateProfile = currentViewData.dateProfileGenerator.build(currentDate);
             }
@@ -7192,16 +7127,14 @@ var FullCalendar = (function (exports) {
                 currentDate = dateProfile.currentRange.start;
             }
             var eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendarContext);
-            var eventSourceLoadingLevel = computeEventSourceLoadingLevel(eventSources);
             var eventStore = reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendarContext);
-            var renderableEventStore = (eventSourceLoadingLevel && !currentViewData.options.progressiveEventRendering) ?
+            var isEventsLoading = computeEventSourcesLoading(eventSources); // BAD. also called in this func in computeIsLoading
+            var renderableEventStore = (isEventsLoading && !currentViewData.options.progressiveEventRendering) ?
                 (state.renderableEventStore || eventStore) : // try from previous state
                 eventStore;
             var _b = this.buildViewUiProps(calendarContext), eventUiSingleBase = _b.eventUiSingleBase, selectionConfig = _b.selectionConfig; // will memoize obj
             var eventUiBySource = this.buildEventUiBySource(eventSources);
             var eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource);
-            var prevLoadingLevel = state.loadingLevel || 0;
-            var loadingLevel = eventSourceLoadingLevel;
             var newState = {
                 dynamicOptionOverrides: dynamicOptionOverrides,
                 currentViewType: currentViewType,
@@ -7212,23 +7145,24 @@ var FullCalendar = (function (exports) {
                 renderableEventStore: renderableEventStore,
                 selectionConfig: selectionConfig,
                 eventUiBases: eventUiBases,
-                loadingLevel: loadingLevel,
                 businessHours: this.parseContextBusinessHours(calendarContext),
                 dateSelection: reduceDateSelection(state.dateSelection, action),
                 eventSelection: reduceSelectedEvent(state.eventSelection, action),
                 eventDrag: reduceEventDrag(state.eventDrag, action),
-                eventResize: reduceEventResize(state.eventResize, action)
+                eventResize: reduceEventResize(state.eventResize, action),
             };
             var contextAndState = __assign(__assign({}, calendarContext), newState);
             for (var _i = 0, _c = optionsData.pluginHooks.reducers; _i < _c.length; _i++) {
                 var reducer = _c[_i];
                 __assign(newState, reducer(state, action, contextAndState)); // give the OLD state, for old value
             }
+            var wasLoading = computeIsLoading(state, calendarContext);
+            var isLoading = computeIsLoading(newState, calendarContext);
             // TODO: use propSetHandlers in plugin system
-            if (!prevLoadingLevel && loadingLevel) {
+            if (!wasLoading && isLoading) {
                 emitter.trigger('loading', true);
             }
-            else if (prevLoadingLevel && !loadingLevel) {
+            else if (wasLoading && !isLoading) {
                 emitter.trigger('loading', false);
             }
             this.state = newState;
@@ -7277,7 +7211,7 @@ var FullCalendar = (function (exports) {
                 theme: theme,
                 toolbarConfig: toolbarConfig,
                 localeDefaults: localeDefaults,
-                availableRawLocales: availableLocaleData.map
+                availableRawLocales: availableLocaleData.map,
             };
         };
         // always called from behind a memoizer
@@ -7285,7 +7219,7 @@ var FullCalendar = (function (exports) {
             var _a = mergeRawOptions([
                 BASE_OPTION_DEFAULTS,
                 optionOverrides,
-                dynamicOptionOverrides
+                dynamicOptionOverrides,
             ]), locales = _a.locales, locale = _a.locale;
             var availableLocaleData = this.organizeRawLocales(locales);
             var availableRawLocales = availableLocaleData.map;
@@ -7297,7 +7231,7 @@ var FullCalendar = (function (exports) {
                 BASE_OPTION_DEFAULTS,
                 localeDefaults,
                 optionOverrides,
-                dynamicOptionOverrides
+                dynamicOptionOverrides,
             ]);
             var refined = {};
             var currentRaw = this.currentCalendarOptionsInput;
@@ -7306,7 +7240,9 @@ var FullCalendar = (function (exports) {
             for (var optionName in raw) {
                 if (optionName !== 'plugins') { // because plugins is special-cased
                     if (raw[optionName] === currentRaw[optionName] ||
-                        (COMPLEX_OPTION_COMPARATORS[optionName] && (optionName in currentRaw) && COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName]))) {
+                        (COMPLEX_OPTION_COMPARATORS[optionName] &&
+                            (optionName in currentRaw) &&
+                            COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName]))) {
                         refined[optionName] = currentRefined[optionName];
                     }
                     else if (refiners[optionName]) {
@@ -7328,7 +7264,7 @@ var FullCalendar = (function (exports) {
                 pluginHooks: pluginHooks,
                 availableLocaleData: availableLocaleData,
                 localeDefaults: localeDefaults,
-                extra: extra
+                extra: extra,
             };
         };
         CalendarDataManager.prototype._computeCurrentViewData = function (viewType, optionsData, optionOverrides, dynamicOptionOverrides) {
@@ -7357,7 +7293,7 @@ var FullCalendar = (function (exports) {
                 validRangeInput: refinedOptions.validRange,
                 visibleRangeInput: refinedOptions.visibleRange,
                 monthMode: refinedOptions.monthMode,
-                fixedWeekCount: refinedOptions.fixedWeekCount
+                fixedWeekCount: refinedOptions.fixedWeekCount,
             });
             var viewApi = this.buildViewApi(viewType, this.getCurrentData, optionsData.dateEnv);
             return { viewSpec: viewSpec, options: refinedOptions, dateProfileGenerator: dateProfileGenerator, viewApi: viewApi };
@@ -7369,7 +7305,7 @@ var FullCalendar = (function (exports) {
                 localeDefaults,
                 optionOverrides,
                 viewSpec.optionOverrides,
-                dynamicOptionOverrides
+                dynamicOptionOverrides,
             ]);
             var refiners = __assign(__assign(__assign(__assign(__assign(__assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), VIEW_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);
             var refined = {};
@@ -7403,7 +7339,7 @@ var FullCalendar = (function (exports) {
             return {
                 rawOptions: this.currentViewOptionsInput,
                 refinedOptions: this.currentViewOptionsRefined,
-                extra: extra
+                extra: extra,
             };
         };
         return CalendarDataManager;
@@ -7419,7 +7355,7 @@ var FullCalendar = (function (exports) {
             firstDay: firstDay,
             weekText: weekText,
             cmdFormatter: pluginHooks.cmdFormatter,
-            defaultSeparator: defaultSeparator
+            defaultSeparator: defaultSeparator,
         });
     }
     function buildTheme(options, pluginHooks) {
@@ -7434,9 +7370,7 @@ var FullCalendar = (function (exports) {
         return new ViewApi(type, getCurrentData, dateEnv);
     }
     function buildEventUiBySource(eventSources) {
-        return mapHash(eventSources, function (eventSource) {
-            return eventSource.ui;
-        });
+        return mapHash(eventSources, function (eventSource) { return eventSource.ui; });
     }
     function buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) {
         var eventUiBases = { '': eventUiSingleBase };
@@ -7462,16 +7396,24 @@ var FullCalendar = (function (exports) {
                 backgroundColor: options.eventBackgroundColor,
                 borderColor: options.eventBorderColor,
                 textColor: options.eventTextColor,
-                color: options.eventColor
-                // classNames: options.eventClassNames // render hook will handle this
+                color: options.eventColor,
             }, calendarContext),
             selectionConfig: createEventUi({
                 constraint: options.selectConstraint,
                 overlap: typeof options.selectOverlap === 'boolean' ? options.selectOverlap : undefined,
-                allow: options.selectAllow
-            }, calendarContext)
+                allow: options.selectAllow,
+            }, calendarContext),
         };
     }
+    function computeIsLoading(state, context) {
+        for (var _i = 0, _a = context.pluginHooks.isLoadingFuncs; _i < _a.length; _i++) {
+            var isLoadingFunc = _a[_i];
+            if (isLoadingFunc(state)) {
+                return true;
+            }
+        }
+        return false;
+    }
     function parseContextBusinessHours(calendarContext) {
         return parseBusinessHours(calendarContext.options.businessHours, calendarContext);
     }
@@ -7499,7 +7441,7 @@ var FullCalendar = (function (exports) {
             _this.dataManager = new CalendarDataManager({
                 optionOverrides: props.optionOverrides,
                 calendarApi: props.calendarApi,
-                onData: _this.handleData
+                onData: _this.handleData,
             });
             return _this;
         }
@@ -7543,7 +7485,7 @@ var FullCalendar = (function (exports) {
         return {
             component: component,
             el: input.el,
-            useEventCenter: input.useEventCenter != null ? input.useEventCenter : true
+            useEventCenter: input.useEventCenter != null ? input.useEventCenter : true,
         };
     }
     function interactionSettingsToStore(settings) {
@@ -7598,7 +7540,7 @@ var FullCalendar = (function (exports) {
         startTime: createDuration,
         duration: createDuration,
         create: Boolean,
-        sourceId: String
+        sourceId: String,
     };
     function parseDragMeta(raw) {
         var _a = refineProps(raw, DRAG_META_REFINERS), refined = _a.refined, extra = _a.extra;
@@ -7607,50 +7549,10 @@ var FullCalendar = (function (exports) {
             duration: refined.duration || null,
             create: refined.create != null ? refined.create : true,
             sourceId: refined.sourceId,
-            leftoverProps: extra
+            leftoverProps: extra,
         };
     }
 
-    var Toolbar = /** @class */ (function (_super) {
-        __extends(Toolbar, _super);
-        function Toolbar() {
-            return _super !== null && _super.apply(this, arguments) || this;
-        }
-        Toolbar.prototype.render = function () {
-            var _a = this.props, model = _a.model, extraClassName = _a.extraClassName;
-            var forceLtr = false;
-            var startContent, endContent;
-            var centerContent = model.center;
-            if (model.left) {
-                forceLtr = true;
-                startContent = model.left;
-            }
-            else {
-                startContent = model.start;
-            }
-            if (model.right) {
-                forceLtr = true;
-                endContent = model.right;
-            }
-            else {
-                endContent = model.end;
-            }
-            var classNames = [
-                extraClassName || '',
-                'fc-toolbar',
-                forceLtr ? 'fc-toolbar-ltr' : ''
-            ];
-            return (createElement("div", { className: classNames.join(' ') },
-                this.renderSection('start', startContent || []),
-                this.renderSection('center', centerContent || []),
-                this.renderSection('end', endContent || [])));
-        };
-        Toolbar.prototype.renderSection = function (key, widgetGroups) {
-            var props = this.props;
-            return (createElement(ToolbarSection, { key: key, widgetGroups: widgetGroups, title: props.title, activeButton: props.activeButton, isTodayEnabled: props.isTodayEnabled, isPrevEnabled: props.isPrevEnabled, isNextEnabled: props.isNextEnabled }));
-        };
-        return Toolbar;
-    }(BaseComponent));
     var ToolbarSection = /** @class */ (function (_super) {
         __extends(ToolbarSection, _super);
         function ToolbarSection() {
@@ -7671,55 +7573,129 @@ var FullCalendar = (function (exports) {
                 var buttonName = widget.buttonName, buttonClick = widget.buttonClick, buttonText = widget.buttonText, buttonIcon = widget.buttonIcon;
                 if (buttonName === 'title') {
                     isOnlyButtons = false;
-                    children.push(createElement("h2", { className: 'fc-toolbar-title' }, props.title));
+                    children.push(createElement("h2", { className: "fc-toolbar-title" }, props.title));
                 }
                 else {
                     var ariaAttrs = buttonIcon ? { 'aria-label': buttonName } : {};
-                    var buttonClasses = ['fc-' + buttonName + '-button', theme.getClass('button')];
+                    var buttonClasses = ["fc-" + buttonName + "-button", theme.getClass('button')];
                     if (buttonName === props.activeButton) {
                         buttonClasses.push(theme.getClass('buttonActive'));
                     }
                     var isDisabled = (!props.isTodayEnabled && buttonName === 'today') ||
                         (!props.isPrevEnabled && buttonName === 'prev') ||
                         (!props.isNextEnabled && buttonName === 'next');
-                    children.push(createElement("button", __assign({ disabled: isDisabled, className: buttonClasses.join(' '), onClick: buttonClick, type: 'button' }, ariaAttrs), buttonText || (buttonIcon ? createElement("span", { className: buttonIcon }) : '')));
+                    children.push(createElement("button", __assign({ disabled: isDisabled, className: buttonClasses.join(' '), onClick: buttonClick, type: "button" }, ariaAttrs), buttonText || (buttonIcon ? createElement("span", { className: buttonIcon }) : '')));
                 }
             }
             if (children.length > 1) {
                 var groupClassName = (isOnlyButtons && theme.getClass('buttonGroup')) || '';
                 return createElement.apply(void 0, __spreadArrays(['div', { className: groupClassName }], children));
             }
+            return children[0];
+        };
+        return ToolbarSection;
+    }(BaseComponent));
+
+    var Toolbar = /** @class */ (function (_super) {
+        __extends(Toolbar, _super);
+        function Toolbar() {
+            return _super !== null && _super.apply(this, arguments) || this;
+        }
+        Toolbar.prototype.render = function () {
+            var _a = this.props, model = _a.model, extraClassName = _a.extraClassName;
+            var forceLtr = false;
+            var startContent;
+            var endContent;
+            var centerContent = model.center;
+            if (model.left) {
+                forceLtr = true;
+                startContent = model.left;
+            }
+            else {
+                startContent = model.start;
+            }
+            if (model.right) {
+                forceLtr = true;
+                endContent = model.right;
+            }
             else {
-                return children[0];
+                endContent = model.end;
             }
+            var classNames = [
+                extraClassName || '',
+                'fc-toolbar',
+                forceLtr ? 'fc-toolbar-ltr' : '',
+            ];
+            return (createElement("div", { className: classNames.join(' ') },
+                this.renderSection('start', startContent || []),
+                this.renderSection('center', centerContent || []),
+                this.renderSection('end', endContent || [])));
         };
-        return ToolbarSection;
+        Toolbar.prototype.renderSection = function (key, widgetGroups) {
+            var props = this.props;
+            return (createElement(ToolbarSection, { key: key, widgetGroups: widgetGroups, title: props.title, activeButton: props.activeButton, isTodayEnabled: props.isTodayEnabled, isPrevEnabled: props.isPrevEnabled, isNextEnabled: props.isNextEnabled }));
+        };
+        return Toolbar;
     }(BaseComponent));
 
     // TODO: do function component?
     var ViewContainer = /** @class */ (function (_super) {
         __extends(ViewContainer, _super);
         function ViewContainer() {
-            return _super !== null && _super.apply(this, arguments) || this;
+            var _this = _super !== null && _super.apply(this, arguments) || this;
+            _this.state = {
+                availableWidth: null,
+            };
+            _this.handleEl = function (el) {
+                _this.el = el;
+                setRef(_this.props.elRef, el);
+                _this.updateAvailableWidth();
+            };
+            _this.handleResize = function () {
+                _this.updateAvailableWidth();
+            };
+            return _this;
         }
         ViewContainer.prototype.render = function () {
-            var props = this.props;
+            var _a = this, props = _a.props, state = _a.state;
             var aspectRatio = props.aspectRatio;
             var classNames = [
                 'fc-view-harness',
                 (aspectRatio || props.liquid || props.height)
                     ? 'fc-view-harness-active' // harness controls the height
-                    : 'fc-view-harness-passive' // let the view do the height
+                    : 'fc-view-harness-passive',
             ];
             var height = '';
             var paddingBottom = '';
             if (aspectRatio) {
-                paddingBottom = (1 / aspectRatio) * 100 + '%';
+                if (state.availableWidth !== null) {
+                    height = state.availableWidth / aspectRatio;
+                }
+                else {
+                    // while waiting to know availableWidth, we can't set height to *zero*
+                    // because will cause lots of unnecessary scrollbars within scrollgrid.
+                    // BETTER: don't start rendering ANYTHING yet until we know container width
+                    // NOTE: why not always use paddingBottom? Causes height oscillation (issue 5606)
+                    paddingBottom = (1 / aspectRatio) * 100 + "%";
+                }
             }
             else {
                 height = props.height || '';
             }
-            return (createElement("div", { ref: props.elRef, onClick: props.onClick, className: classNames.join(' '), style: { height: height, paddingBottom: paddingBottom } }, props.children));
+            return (createElement("div", { ref: this.handleEl, onClick: props.onClick, className: classNames.join(' '), style: { height: height, paddingBottom: paddingBottom } }, props.children));
+        };
+        ViewContainer.prototype.componentDidMount = function () {
+            this.context.addResizeHandler(this.handleResize);
+        };
+        ViewContainer.prototype.componentWillUnmount = function () {
+            this.context.removeResizeHandler(this.handleResize);
+        };
+        ViewContainer.prototype.updateAvailableWidth = function () {
+            if (this.el && // needed. but why?
+                this.props.aspectRatio // aspectRatio is the only height setting that needs availableWidth
+            ) {
+                this.setState({ availableWidth: this.el.offsetWidth });
+            }
         };
         return ViewContainer;
     }(BaseComponent));
@@ -7745,7 +7721,7 @@ var FullCalendar = (function (exports) {
                         el: segEl,
                         event: new EventApi(component.context, seg.eventRange.def, seg.eventRange.instance),
                         jsEvent: ev,
-                        view: context.viewApi
+                        view: context.viewApi,
                     });
                     if (url && !ev.defaultPrevented) {
                         window.location.href = url;
@@ -7801,7 +7777,7 @@ var FullCalendar = (function (exports) {
                     el: segEl,
                     event: new EventApi(context, seg.eventRange.def, seg.eventRange.instance),
                     jsEvent: ev,
-                    view: context.viewApi
+                    view: context.viewApi,
                 });
             }
         };
@@ -7825,12 +7801,10 @@ var FullCalendar = (function (exports) {
                 var settings = parseInteractionSettings(component, settingsInput);
                 var DEFAULT_INTERACTIONS = [
                     EventClicking,
-                    EventHovering
+                    EventHovering,
                 ];
                 var interactionClasses = DEFAULT_INTERACTIONS.concat(_this.props.pluginHooks.componentInteractions);
-                var interactions = interactionClasses.map(function (interactionClass) {
-                    return new interactionClass(settings);
-                });
+                var interactions = interactionClasses.map(function (TheInteractionClass) { return new TheInteractionClass(settings); });
                 _this.interactionsStore[component.uid] = interactions;
                 interactionSettingsStore[component.uid] = settings;
             };
@@ -7883,20 +7857,16 @@ var FullCalendar = (function (exports) {
             }
             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);
             return (createElement(ViewContextType.Provider, { value: viewContext },
-                toolbarConfig.headerToolbar &&
-                    createElement(Toolbar, __assign({ ref: this.headerRef, extraClassName: 'fc-header-toolbar', model: toolbarConfig.headerToolbar }, toolbarProps)),
+                toolbarConfig.headerToolbar && (createElement(Toolbar, __assign({ ref: this.headerRef, extraClassName: "fc-header-toolbar", model: toolbarConfig.headerToolbar }, toolbarProps))),
                 createElement(ViewContainer, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, onClick: this.handleNavLinkClick },
                     this.renderView(props),
                     this.buildAppendContent()),
-                toolbarConfig.footerToolbar &&
-                    createElement(Toolbar, __assign({ ref: this.footerRef, extraClassName: 'fc-footer-toolbar', model: toolbarConfig.footerToolbar }, toolbarProps))));
+                toolbarConfig.footerToolbar && (createElement(Toolbar, __assign({ ref: this.footerRef, extraClassName: "fc-footer-toolbar", model: toolbarConfig.footerToolbar }, toolbarProps)))));
         };
         CalendarContent.prototype.componentDidMount = function () {
             var props = this.props;
             this.calendarInteractions = props.pluginHooks.calendarInteractions
-                .map(function (calendarInteractionClass) {
-                return new calendarInteractionClass(props);
-            });
+                .map(function (CalendarInteractionClass) { return new CalendarInteractionClass(props); });
             window.addEventListener('resize', this.handleWindowResize);
             var propSetHandlers = props.pluginHooks.propSetHandlers;
             for (var propName in propSetHandlers) {
@@ -7957,7 +7927,7 @@ var FullCalendar = (function (exports) {
                 eventDrag: props.eventDrag,
                 eventResize: props.eventResize,
                 isHeightAuto: props.isHeightAuto,
-                forPrint: props.forPrint
+                forPrint: props.forPrint,
             };
             var transformers = this.buildViewPropTransformers(pluginHooks.viewPropsTransformers);
             for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) {
@@ -7979,36 +7949,13 @@ var FullCalendar = (function (exports) {
             activeButton: viewSpec.type,
             isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now),
             isPrevEnabled: prevInfo.isValid,
-            isNextEnabled: nextInfo.isValid
+            isNextEnabled: nextInfo.isValid,
         };
     }
     // Plugin
     // -----------------------------------------------------------------------------------------------------------------
     function buildViewPropTransformers(theClasses) {
-        return theClasses.map(function (theClass) {
-            return new theClass();
-        });
-    }
-
-    var canVGrowWithinCell;
-    function getCanVGrowWithinCell() {
-        if (canVGrowWithinCell == null) {
-            canVGrowWithinCell = computeCanVGrowWithinCell();
-        }
-        return canVGrowWithinCell;
-    }
-    function computeCanVGrowWithinCell() {
-        // TODO: abstraction for creating these temporary detection-based els
-        var el = document.createElement('div');
-        el.style.position = 'absolute'; // for not interfering with current layout
-        el.style.top = '0';
-        el.style.left = '0';
-        el.innerHTML = '<table style="height:100px"><tr><td><div style="height:100%"></div></td></tr></table>';
-        document.body.appendChild(el);
-        var div = el.querySelector('div');
-        var possible = div.offsetHeight > 0;
-        document.body.removeChild(el);
-        return possible;
+        return theClasses.map(function (TheClass) { return new TheClass(); });
     }
 
     var CalendarRoot = /** @class */ (function (_super) {
@@ -8016,7 +7963,7 @@ var FullCalendar = (function (exports) {
         function CalendarRoot() {
             var _this = _super !== null && _super.apply(this, arguments) || this;
             _this.state = {
-                forPrint: false
+                forPrint: false,
             };
             _this.handleBeforePrint = function () {
                 _this.setState({ forPrint: true });
@@ -8035,8 +7982,8 @@ var FullCalendar = (function (exports) {
             var classNames = [
                 'fc',
                 forPrint ? 'fc-media-print' : 'fc-media-screen',
-                'fc-direction-' + options.direction,
-                props.theme.getClass('root')
+                "fc-direction-" + options.direction,
+                props.theme.getClass('root'),
             ];
             if (!getCanVGrowWithinCell()) {
                 classNames.push('fc-liquid-hack');
@@ -8063,15 +8010,17 @@ var FullCalendar = (function (exports) {
         if (!datesRepDistinctDays || dayCnt > 10) {
             return createFormatter({ weekday: 'short' }); // "Sat"
         }
-        else if (dayCnt > 1) {
+        if (dayCnt > 1) {
             return createFormatter({ weekday: 'short', month: 'numeric', day: 'numeric', omitCommas: true }); // "Sat 11/12"
         }
-        else {
-            return createFormatter({ weekday: 'long' }); // "Saturday"
-        }
+        return createFormatter({ weekday: 'long' }); // "Saturday"
     }
 
     var CLASS_NAME = 'fc-col-header-cell'; // do the cushion too? no
+    function renderInner(hookProps) {
+        return hookProps.text;
+    }
+
     var TableDateCell = /** @class */ (function (_super) {
         __extends(TableDateCell, _super);
         function TableDateCell() {
@@ -8090,14 +8039,14 @@ var FullCalendar = (function (exports) {
                 : {};
             var hookProps = __assign(__assign(__assign({ date: dateEnv.toDate(date), view: viewApi }, props.extraHookProps), { text: text }), dayMeta);
             return (createElement(RenderHook, { hookProps: hookProps, classNames: options.dayHeaderClassNames, content: options.dayHeaderContent, defaultContent: renderInner, 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),
-                createElement("div", { className: 'fc-scrollgrid-sync-inner' }, !dayMeta.isDisabled &&
-                    createElement("a", __assign({ ref: innerElRef, className: [
-                            'fc-col-header-cell-cushion',
-                            props.isSticky ? 'fc-sticky' : ''
-                        ].join(' ') }, navLinkAttrs), innerContent)))); }));
+                createElement("div", { className: "fc-scrollgrid-sync-inner" }, !dayMeta.isDisabled && (createElement("a", __assign({ ref: innerElRef, className: [
+                        'fc-col-header-cell-cushion',
+                        props.isSticky ? 'fc-sticky' : '',
+                    ].join(' ') }, navLinkAttrs), innerContent))))); }));
         };
         return TableDateCell;
     }(BaseComponent));
+
     var TableDowCell = /** @class */ (function (_super) {
         __extends(TableDowCell, _super);
         function TableDowCell() {
@@ -8113,24 +8062,21 @@ var FullCalendar = (function (exports) {
                 isFuture: false,
                 isPast: false,
                 isToday: false,
-                isOther: false
+                isOther: false,
             };
             var classNames = [CLASS_NAME].concat(getDayClassNames(dateMeta, theme), props.extraClassNames || []);
             var text = dateEnv.format(date, props.dayHeaderFormat);
             var hookProps = __assign(__assign(__assign(__assign({ // TODO: make this public?
                 date: date }, dateMeta), { view: viewApi }), props.extraHookProps), { text: text });
             return (createElement(RenderHook, { hookProps: hookProps, classNames: options.dayHeaderClassNames, content: options.dayHeaderContent, defaultContent: renderInner, 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),
-                createElement("div", { className: 'fc-scrollgrid-sync-inner' },
+                createElement("div", { className: "fc-scrollgrid-sync-inner" },
                     createElement("a", { className: [
                             'fc-col-header-cell-cushion',
-                            props.isSticky ? 'fc-sticky' : ''
+                            props.isSticky ? 'fc-sticky' : '',
                         ].join(' '), ref: innerElRef }, innerContent)))); }));
         };
         return TableDowCell;
     }(BaseComponent));
-    function renderInner(hookProps) {
-        return hookProps.text;
-    }
 
     var NowTimer = /** @class */ (function (_super) {
         __extends(NowTimer, _super);
@@ -8163,10 +8109,13 @@ var FullCalendar = (function (exports) {
             var currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit);
             var nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit));
             var waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf();
+            // there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342)
+            // ensure no longer than a day
+            waitMs = Math.min(1000 * 60 * 60 * 24, waitMs);
             return {
                 currentState: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) },
                 nextState: { nowDate: nextUnitStart, todayRange: buildDayRange(nextUnitStart) },
-                waitMs: waitMs
+                waitMs: waitMs,
             };
         };
         NowTimer.prototype.setTimeout = function () {
@@ -8203,11 +8152,9 @@ var FullCalendar = (function (exports) {
             var context = this.context;
             var _a = this.props, dates = _a.dates, dateProfile = _a.dateProfile, datesRepDistinctDays = _a.datesRepDistinctDays, renderIntro = _a.renderIntro;
             var dayHeaderFormat = this.createDayHeaderFormatter(context.options.dayHeaderFormat, datesRepDistinctDays, dates.length);
-            return (createElement(NowTimer, { unit: 'day' }, function (nowDate, todayRange) { return (createElement("tr", null,
-                renderIntro && renderIntro(),
-                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 })); }))); }));
+            return (createElement(NowTimer, { unit: "day" }, function (nowDate, todayRange) { return (createElement("tr", null,
+                renderIntro && renderIntro('day'),
+                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 }))); }))); }));
         };
         return DayHeader;
     }(BaseComponent));
@@ -8227,7 +8174,7 @@ var FullCalendar = (function (exports) {
                     indices.push(dayIndex + 0.5); // mark that it's between indices
                 }
                 else {
-                    dayIndex++;
+                    dayIndex += 1;
                     indices.push(dayIndex);
                     dates.push(date);
                 }
@@ -8250,12 +8197,10 @@ var FullCalendar = (function (exports) {
                     firstIndex: clippedFirstIndex,
                     lastIndex: clippedLastIndex,
                     isStart: firstIndex === clippedFirstIndex,
-                    isEnd: lastIndex === clippedLastIndex
+                    isEnd: lastIndex === clippedLastIndex,
                 };
             }
-            else {
-                return null;
-            }
+            return null;
         };
         // Given a date, returns its chronolocial cell-index from the first cell of the grid.
         // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.
@@ -8268,12 +8213,10 @@ var FullCalendar = (function (exports) {
             if (dayOffset < 0) {
                 return indices[0] - 1;
             }
-            else if (dayOffset >= indices.length) {
+            if (dayOffset >= indices.length) {
                 return indices[indices.length - 1] + 1;
             }
-            else {
-                return indices[dayOffset];
-            }
+            return indices[dayOffset];
         };
         return DaySeriesModel;
     }());
@@ -8287,7 +8230,7 @@ var FullCalendar = (function (exports) {
             if (breakOnWeeks) {
                 // count columns until the day-of-week repeats
                 firstDay = dates[0].getUTCDay();
-                for (daysPerRow = 1; daysPerRow < dates.length; daysPerRow++) {
+                for (daysPerRow = 1; daysPerRow < dates.length; daysPerRow += 1) {
                     if (dates[daysPerRow].getUTCDay() === firstDay) {
                         break;
                     }
@@ -8306,9 +8249,9 @@ var FullCalendar = (function (exports) {
         }
         DayTableModel.prototype.buildCells = function () {
             var rows = [];
-            for (var row = 0; row < this.rowCnt; row++) {
+            for (var row = 0; row < this.rowCnt; row += 1) {
                 var cells = [];
-                for (var col = 0; col < this.colCnt; col++) {
+                for (var col = 0; col < this.colCnt; col += 1) {
                     cells.push(this.buildCell(row, col));
                 }
                 rows.push(cells);
@@ -8319,12 +8262,12 @@ var FullCalendar = (function (exports) {
             var date = this.daySeries.dates[row * this.colCnt + col];
             return {
                 key: date.toISOString(),
-                date: date
+                date: date,
             };
         };
         DayTableModel.prototype.buildHeaderDates = function () {
             var dates = [];
-            for (var col = 0; col < this.colCnt; col++) {
+            for (var col = 0; col < this.colCnt; col += 1) {
                 dates.push(this.cells[0][col].date);
             }
             return dates;
@@ -8344,7 +8287,7 @@ var FullCalendar = (function (exports) {
                         firstCol: index % colCnt,
                         lastCol: (nextIndex - 1) % colCnt,
                         isStart: seriesSeg.isStart && index === firstIndex,
-                        isEnd: seriesSeg.isEnd && (nextIndex - 1) === lastIndex
+                        isEnd: seriesSeg.isEnd && (nextIndex - 1) === lastIndex,
                     });
                     index = nextIndex;
                 }
@@ -8377,7 +8320,7 @@ var FullCalendar = (function (exports) {
                 bgEventSegs: eventSegs.bg,
                 eventDrag: this.sliceEventDrag.apply(this, __spreadArrays([props.eventDrag, eventUiBases, dateProfile, nextDayThreshold], extraArgs)),
                 eventResize: this.sliceEventResize.apply(this, __spreadArrays([props.eventResize, eventUiBases, dateProfile, nextDayThreshold], extraArgs)),
-                eventSelection: props.eventSelection
+                eventSelection: props.eventSelection,
             }; // TODO: give interactionSegs?
         };
         Slicer.prototype.sliceNowDate = function (// does not memoize
@@ -8412,12 +8355,10 @@ var FullCalendar = (function (exports) {
                 var rangeRes = sliceEventStore(eventStore, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);
                 return {
                     bg: this.sliceEventRanges(rangeRes.bg, extraArgs),
-                    fg: this.sliceEventRanges(rangeRes.fg, extraArgs)
+                    fg: this.sliceEventRanges(rangeRes.fg, extraArgs),
                 };
             }
-            else {
-                return { bg: [], fg: [] };
-            }
+            return { bg: [], fg: [] };
         };
         Slicer.prototype._sliceInteraction = function (interaction, eventUiBases, dateProfile, nextDayThreshold) {
             var extraArgs = [];
@@ -8431,7 +8372,7 @@ var FullCalendar = (function (exports) {
             return {
                 segs: this.sliceEventRanges(rangeRes.fg, extraArgs),
                 affectedInstances: interaction.affectedEvents.instances,
-                isEvent: interaction.isEvent
+                isEvent: interaction.isEvent,
             };
         };
         Slicer.prototype._sliceDateSpan = function (dateSpan, eventUiBases, context) {
@@ -8470,7 +8411,7 @@ var FullCalendar = (function (exports) {
             if (this.forceDayIfListItem && eventRange.ui.display === 'list-item') {
                 dateRange = {
                     start: dateRange.start,
-                    end: addDays(dateRange.start, 1)
+                    end: addDays(dateRange.start, 1),
                 };
             }
             var segs = this.sliceRange.apply(this, __spreadArrays([dateRange], extraArgs));
@@ -8496,7 +8437,7 @@ var FullCalendar = (function (exports) {
         }
         return {
             start: addMs(range.start, dateProfile.slotMinTime.milliseconds),
-            end: addMs(range.end, dateProfile.slotMaxTime.milliseconds - 864e5) // 864e5 = ms in a day
+            end: addMs(range.end, dateProfile.slotMaxTime.milliseconds - 864e5),
         };
     }
 
@@ -8533,7 +8474,7 @@ var FullCalendar = (function (exports) {
                     marginLeft: (!isAbsolute && -(props.overcomeLeft || 0)) || '',
                     marginRight: (!isAbsolute && -(props.overcomeRight || 0)) || '',
                     marginBottom: (!isAbsolute && -(props.overcomeBottom || 0)) || '',
-                    maxHeight: props.maxHeight || ''
+                    maxHeight: props.maxHeight || '',
                 } }, props.children));
         };
         Scroller.prototype.needsXScrolling = function () {
@@ -8546,7 +8487,7 @@ var FullCalendar = (function (exports) {
             var el = this.el;
             var realClientWidth = this.el.getBoundingClientRect().width - this.getYScrollbarWidth();
             var children = el.children;
-            for (var i = 0; i < children.length; i++) {
+            for (var i = 0; i < children.length; i += 1) {
                 var childEl = children[i];
                 if (childEl.getBoundingClientRect().width > realClientWidth) {
                     return true;
@@ -8564,7 +8505,7 @@ var FullCalendar = (function (exports) {
             var el = this.el;
             var realClientHeight = this.el.getBoundingClientRect().height - this.getXScrollbarWidth();
             var children = el.children;
-            for (var i = 0; i < children.length; i++) {
+            for (var i = 0; i < children.length; i += 1) {
                 var childEl = children[i];
                 if (childEl.getBoundingClientRect().height > realClientHeight) {
                     return true;
@@ -8576,17 +8517,13 @@ var FullCalendar = (function (exports) {
             if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {
                 return 0;
             }
-            else {
-                return this.el.offsetHeight - this.el.clientHeight; // only works because we guarantee no borders. TODO: add to CSS with important?
-            }
+            return this.el.offsetHeight - this.el.clientHeight; // only works because we guarantee no borders. TODO: add to CSS with important?
         };
         Scroller.prototype.getYScrollbarWidth = function () {
             if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {
                 return 0;
             }
-            else {
-                return this.el.offsetWidth - this.el.clientWidth; // only works because we guarantee no borders. TODO: add to CSS with important?
-            }
+            return this.el.offsetWidth - this.el.clientWidth; // only works because we guarantee no borders. TODO: add to CSS with important?
         };
         return Scroller;
     }(BaseComponent));
@@ -8607,15 +8544,19 @@ var FullCalendar = (function (exports) {
                 var removed = false;
                 var added = false;
                 if (val !== null) {
-                    removed = (key in currentMap); // for bug... ACTUALLY: can probably do away with this now that callers don't share numeric indices anymore
+                    // for bug... ACTUALLY: can probably do away with this now that callers don't share numeric indices anymore
+                    removed = (key in currentMap);
                     currentMap[key] = val;
                     depths[key] = (depths[key] || 0) + 1;
                     added = true;
                 }
-                else if (--depths[key] === 0) {
-                    delete currentMap[key];
-                    delete _this.callbackMap[key];
-                    removed = true;
+                else {
+                    depths[key] -= 1;
+                    if (!depths[key]) {
+                        delete currentMap[key];
+                        delete _this.callbackMap[key];
+                        removed = true;
+                    }
                 }
                 if (_this.masterCallback) {
                     if (removed) {
@@ -8673,13 +8614,13 @@ var FullCalendar = (function (exports) {
             createElement('table', {
                 className: [
                     chunkConfig.tableClassName,
-                    sectionConfig.syncRowHeights ? 'fc-scrollgrid-sync-table' : ''
+                    sectionConfig.syncRowHeights ? 'fc-scrollgrid-sync-table' : '',
                 ].join(' '),
                 style: {
                     minWidth: arg.tableMinWidth,
                     width: arg.clientWidth,
-                    height: expandRows ? arg.clientHeight : '' // css `height` on a <table> serves as a min-height
-                }
+                    height: expandRows ? arg.clientHeight : '',
+                },
             }, arg.tableColGroupNode, createElement('tbody', {}, typeof chunkConfig.rowContent === 'function' ? chunkConfig.rowContent(arg) : chunkConfig.rowContent));
         return content;
     }
@@ -8696,10 +8637,10 @@ var FullCalendar = (function (exports) {
         for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {
             var colProps = cols_1[_i];
             var span = colProps.span || 1;
-            for (var i = 0; i < span; i++) {
+            for (var i = 0; i < span; i += 1) {
                 colNodes.push(createElement("col", { style: {
                         width: colProps.width === 'shrink' ? sanitizeShrinkWidth(shrinkWidth) : (colProps.width || ''),
-                        minWidth: colProps.minWidth || ''
+                        minWidth: colProps.minWidth || '',
                     } }));
             }
         }
@@ -8722,7 +8663,7 @@ var FullCalendar = (function (exports) {
     function getScrollGridClassNames(liquid, context) {
         var classNames = [
             'fc-scrollgrid',
-            context.theme.getClass('table')
+            context.theme.getClass('table'),
         ];
         if (liquid) {
             classNames.push('fc-scrollgrid-liquid');
@@ -8732,7 +8673,8 @@ var FullCalendar = (function (exports) {
     function getSectionClassNames(sectionConfig, wholeTableVGrow) {
         var classNames = [
             'fc-scrollgrid-section',
-            sectionConfig.className // used?
+            "fc-scrollgrid-section-" + sectionConfig.type,
+            sectionConfig.className,
         ];
         if (wholeTableVGrow && sectionConfig.liquid && sectionConfig.maxHeight == null) {
             classNames.push('fc-scrollgrid-section-liquid');
@@ -8743,9 +8685,9 @@ var FullCalendar = (function (exports) {
         return classNames;
     }
     function renderScrollShim(arg) {
-        return (createElement("div", { className: 'fc-scrollgrid-sticky-shim', style: {
+        return (createElement("div", { className: "fc-scrollgrid-sticky-shim", style: {
                 width: arg.clientWidth,
-                minWidth: arg.tableMinWidth
+                minWidth: arg.tableMinWidth,
             } }));
     }
     function getStickyHeaderDates(options) {
@@ -8768,14 +8710,15 @@ var FullCalendar = (function (exports) {
         function SimpleScrollGrid() {
             var _this = _super !== null && _super.apply(this, arguments) || this;
             _this.processCols = memoize(function (a) { return a; }, isColPropsEqual); // so we get same `cols` props every time
-            _this.renderMicroColGroup = memoize(renderMicroColGroup); // yucky to memoize VNodes, but much more efficient for consumers
+            // yucky to memoize VNodes, but much more efficient for consumers
+            _this.renderMicroColGroup = memoize(renderMicroColGroup);
             _this.scrollerRefs = new RefMap();
             _this.scrollerElRefs = new RefMap(_this._handleScrollerEl.bind(_this));
             _this.state = {
                 shrinkWidth: null,
                 forceYScrollbars: false,
                 scrollerClientWidths: {},
-                scrollerClientHeights: {}
+                scrollerClientHeights: {},
             };
             // TODO: can do a really simple print-view. dont need to join rows
             _this.handleSizing = function () {
@@ -8797,29 +8740,34 @@ var FullCalendar = (function (exports) {
             var bodySectionNodes = [];
             var footSectionNodes = [];
             while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {
-                headSectionNodes.push(this.renderSection(currentConfig, configI, microColGroupNode));
-                configI++;
+                headSectionNodes.push(this.renderSection(currentConfig, microColGroupNode));
+                configI += 1;
             }
             while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {
-                bodySectionNodes.push(this.renderSection(currentConfig, configI, microColGroupNode));
-                configI++;
+                bodySectionNodes.push(this.renderSection(currentConfig, microColGroupNode));
+                configI += 1;
             }
             while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {
-                footSectionNodes.push(this.renderSection(currentConfig, configI, microColGroupNode));
-                configI++;
-            }
-            return (createElement("table", { className: classNames.join(' '), style: { height: props.height } },
-                Boolean(headSectionNodes.length) && createElement.apply(void 0, __spreadArrays(['thead', {}], headSectionNodes)),
-                Boolean(bodySectionNodes.length) && createElement.apply(void 0, __spreadArrays(['tbody', {}], bodySectionNodes)),
-                Boolean(footSectionNodes.length) && createElement.apply(void 0, __spreadArrays(['tfoot', {}], footSectionNodes))));
-        };
-        SimpleScrollGrid.prototype.renderSection = function (sectionConfig, sectionI, microColGroupNode) {
+                footSectionNodes.push(this.renderSection(currentConfig, microColGroupNode));
+                configI += 1;
+            }
+            // firefox bug: when setting height on table and there is a thead or tfoot,
+            // the necessary height:100% on the liquid-height body section forces the *whole* table to be taller. (bug #5524)
+            // use getCanVGrowWithinCell as a way to detect table-stupid firefox.
+            // if so, use a simpler dom structure, jam everything into a lone tbody.
+            var isBuggy = !getCanVGrowWithinCell();
+            return createElement('table', {
+                className: classNames.join(' '),
+                style: { height: props.height },
+            }, Boolean(!isBuggy && headSectionNodes.length) && createElement.apply(void 0, __spreadArrays(['thead', {}], headSectionNodes)), Boolean(!isBuggy && bodySectionNodes.length) && createElement.apply(void 0, __spreadArrays(['tbody', {}], bodySectionNodes)), Boolean(!isBuggy && footSectionNodes.length) && createElement.apply(void 0, __spreadArrays(['tfoot', {}], footSectionNodes)), isBuggy && createElement.apply(void 0, __spreadArrays(['tbody', {}], headSectionNodes, bodySectionNodes, footSectionNodes)));
+        };
+        SimpleScrollGrid.prototype.renderSection = function (sectionConfig, microColGroupNode) {
             if ('outerContent' in sectionConfig) {
                 return (createElement(Fragment, { key: sectionConfig.key }, sectionConfig.outerContent));
             }
-            return (createElement("tr", { key: sectionConfig.key, className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, this.renderChunkTd(sectionConfig, sectionI, microColGroupNode, sectionConfig.chunk)));
+            return (createElement("tr", { key: sectionConfig.key, className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, this.renderChunkTd(sectionConfig, microColGroupNode, sectionConfig.chunk)));
         };
-        SimpleScrollGrid.prototype.renderChunkTd = function (sectionConfig, sectionI, microColGroupNode, chunkConfig) {
+        SimpleScrollGrid.prototype.renderChunkTd = function (sectionConfig, microColGroupNode, chunkConfig) {
             if ('outerContent' in chunkConfig) {
                 return chunkConfig.outerContent;
             }
@@ -8833,24 +8781,27 @@ var FullCalendar = (function (exports) {
                 forceYScrollbars ? 'scroll' :
                     !needsYScrolling ? 'hidden' :
                         'auto';
+            var sectionKey = sectionConfig.key;
             var content = renderChunkContent(sectionConfig, chunkConfig, {
                 tableColGroupNode: microColGroupNode,
                 tableMinWidth: '',
-                clientWidth: scrollerClientWidths[sectionI] !== undefined ? scrollerClientWidths[sectionI] : null,
-                clientHeight: scrollerClientHeights[sectionI] !== undefined ? scrollerClientHeights[sectionI] : null,
+                clientWidth: scrollerClientWidths[sectionKey] !== undefined ? scrollerClientWidths[sectionKey] : null,
+                clientHeight: scrollerClientHeights[sectionKey] !== undefined ? scrollerClientHeights[sectionKey] : null,
                 expandRows: sectionConfig.expandRows,
                 syncRowHeights: false,
                 rowSyncHeights: [],
-                reportRowHeightChange: function () { }
+                reportRowHeightChange: function () { },
             });
             return (createElement("td", { ref: chunkConfig.elRef },
-                createElement("div", { className: 'fc-scroller-harness' + (isLiquid ? ' fc-scroller-harness-liquid' : '') },
-                    createElement(Scroller, { ref: this.scrollerRefs.createRef(sectionI), elRef: this.scrollerElRefs.createRef(sectionI), overflowY: overflowY, overflowX: !props.liquid ? 'visible' : 'hidden' /* natural height? */, maxHeight: sectionConfig.maxHeight, liquid: isLiquid, liquidIsAbsolute: true /* because its within a harness */ }, content))));
+                createElement("div", { className: "fc-scroller-harness" + (isLiquid ? ' fc-scroller-harness-liquid' : '') },
+                    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
+                        : true }, content))));
         };
         SimpleScrollGrid.prototype._handleScrollerEl = function (scrollerEl, key) {
-            var sectionI = parseInt(key, 10);
-            var chunkConfig = this.props.sections[sectionI].chunk;
-            setRef(chunkConfig.scrollerElRef, scrollerEl);
+            var section = getSectionByKey(this.props.sections, key);
+            if (section) {
+                setRef(section.chunk.scrollerElRef, scrollerEl);
+            }
         };
         SimpleScrollGrid.prototype.componentDidMount = function () {
             this.handleSizing();
@@ -8870,27 +8821,27 @@ var FullCalendar = (function (exports) {
         };
         SimpleScrollGrid.prototype.computeScrollerDims = function () {
             var scrollbarWidth = getScrollbarWidths();
-            var sectionCnt = this.props.sections.length;
             var _a = this, scrollerRefs = _a.scrollerRefs, scrollerElRefs = _a.scrollerElRefs;
             var forceYScrollbars = false;
             var scrollerClientWidths = {};
             var scrollerClientHeights = {};
-            for (var sectionI = 0; sectionI < sectionCnt; sectionI++) { // along edge
-                var scroller = scrollerRefs.currentMap[sectionI];
+            for (var sectionKey in scrollerRefs.currentMap) {
+                var scroller = scrollerRefs.currentMap[sectionKey];
                 if (scroller && scroller.needsYScrolling()) {
                     forceYScrollbars = true;
                     break;
                 }
             }
-            for (var sectionI = 0; sectionI < sectionCnt; sectionI++) { // along edge
-                var scrollerEl = scrollerElRefs.currentMap[sectionI];
+            for (var _i = 0, _b = this.props.sections; _i < _b.length; _i++) {
+                var section = _b[_i];
+                var sectionKey = section.key;
+                var scrollerEl = scrollerElRefs.currentMap[sectionKey];
                 if (scrollerEl) {
                     var harnessEl = scrollerEl.parentNode; // TODO: weird way to get this. need harness b/c doesn't include table borders
-                    scrollerClientWidths[sectionI] = Math.floor(harnessEl.getBoundingClientRect().width - (forceYScrollbars
+                    scrollerClientWidths[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().width - (forceYScrollbars
                         ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future
                         : 0));
-                    scrollerClientHeights[sectionI] = Math.floor(harnessEl.getBoundingClientRect().height // never has horizontal scrollbars
-                    );
+                    scrollerClientHeights[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().height);
                 }
             }
             return { forceYScrollbars: forceYScrollbars, scrollerClientWidths: scrollerClientWidths, scrollerClientHeights: scrollerClientHeights };
@@ -8899,8 +8850,17 @@ var FullCalendar = (function (exports) {
     }(BaseComponent));
     SimpleScrollGrid.addStateEquality({
         scrollerClientWidths: isPropsEqual,
-        scrollerClientHeights: isPropsEqual
+        scrollerClientHeights: isPropsEqual,
     });
+    function getSectionByKey(sections, key) {
+        for (var _i = 0, sections_1 = sections; _i < sections_1.length; _i++) {
+            var section = sections_1[_i];
+            if (section.key === key) {
+                return section;
+            }
+        }
+        return null;
+    }
 
     var EventRoot = /** @class */ (function (_super) {
         __extends(EventRoot, _super);
@@ -8933,7 +8893,7 @@ var FullCalendar = (function (exports) {
                 isToday: Boolean(props.isToday),
                 isSelected: Boolean(props.isSelected),
                 isDragging: Boolean(props.isDragging),
-                isResizing: Boolean(props.isResizing)
+                isResizing: Boolean(props.isResizing),
             };
             var standardClassNames = getEventClassNames(hookProps).concat(ui.classNames);
             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); }));
@@ -8966,22 +8926,21 @@ var FullCalendar = (function (exports) {
             var timeText = buildSegTimeText(seg, timeFormat, context, props.defaultDisplayEventTime, props.defaultDisplayEventEnd);
             return (createElement(EventRoot, { seg: seg, timeText: timeText, disableDragging: props.disableDragging, disableResizing: props.disableResizing, defaultContent: props.defaultContent || renderInnerContent, 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: {
                     borderColor: hookProps.borderColor,
-                    backgroundColor: hookProps.backgroundColor
+                    backgroundColor: hookProps.backgroundColor,
                 }, ref: rootElRef }, getSegAnchorAttrs(seg)),
-                createElement("div", { className: 'fc-event-main', ref: innerElRef, style: { color: hookProps.textColor } }, innerContent),
+                createElement("div", { className: "fc-event-main", ref: innerElRef, style: { color: hookProps.textColor } }, innerContent),
                 hookProps.isStartResizable &&
-                    createElement("div", { className: 'fc-event-resizer fc-event-resizer-start' }),
+                    createElement("div", { className: "fc-event-resizer fc-event-resizer-start" }),
                 hookProps.isEndResizable &&
-                    createElement("div", { className: 'fc-event-resizer fc-event-resizer-end' }))); }));
+                    createElement("div", { className: "fc-event-resizer fc-event-resizer-end" }))); }));
         };
         return StandardEvent;
     }(BaseComponent));
     function renderInnerContent(innerProps) {
-        return (createElement("div", { className: 'fc-event-main-frame' },
-            innerProps.timeText &&
-                createElement("div", { className: 'fc-event-time' }, innerProps.timeText),
-            createElement("div", { className: 'fc-event-title-container' },
-                createElement("div", { className: 'fc-event-title fc-sticky' }, innerProps.event.title || createElement(Fragment, null, "\u00A0")))));
+        return (createElement("div", { className: "fc-event-main-frame" },
+            innerProps.timeText && (createElement("div", { className: "fc-event-time" }, innerProps.timeText)),
+            createElement("div", { className: "fc-event-title-container" },
+                createElement("div", { className: "fc-event-title fc-sticky" }, innerProps.event.title || createElement(Fragment, null, "\u00A0")))));
     }
     function getSegAnchorAttrs(seg) {
         var url = seg.eventRange.def.url;
@@ -8993,17 +8952,44 @@ var FullCalendar = (function (exports) {
         var hookProps = {
             isAxis: props.isAxis,
             date: context.dateEnv.toDate(props.date),
-            view: context.viewApi
+            view: context.viewApi,
         };
         return (createElement(RenderHook, { hookProps: hookProps, classNames: options.nowIndicatorClassNames, content: options.nowIndicatorContent, didMount: options.nowIndicatorDidMount, willUnmount: options.nowIndicatorWillUnmount }, props.children));
     })); };
 
     var DAY_NUM_FORMAT = createFormatter({ day: 'numeric' });
+    var DayCellContent = /** @class */ (function (_super) {
+        __extends(DayCellContent, _super);
+        function DayCellContent() {
+            return _super !== null && _super.apply(this, arguments) || this;
+        }
+        DayCellContent.prototype.render = function () {
+            var _a = this, props = _a.props, context = _a.context;
+            var options = context.options;
+            var hookProps = refineDayCellHookProps({
+                date: props.date,
+                dateProfile: props.dateProfile,
+                todayRange: props.todayRange,
+                showDayNumber: props.showDayNumber,
+                extraProps: props.extraHookProps,
+                viewApi: context.viewApi,
+                dateEnv: context.dateEnv,
+            });
+            return (createElement(ContentHook, { hookProps: hookProps, content: options.dayCellContent, defaultContent: props.defaultContent }, props.children));
+        };
+        return DayCellContent;
+    }(BaseComponent));
+    function refineDayCellHookProps(raw) {
+        var date = raw.date, dateEnv = raw.dateEnv;
+        var dayMeta = getDateMeta(date, raw.todayRange, null, raw.dateProfile);
+        return __assign(__assign(__assign({ date: dateEnv.toDate(date), view: raw.viewApi }, dayMeta), { dayNumberText: raw.showDayNumber ? dateEnv.format(date, DAY_NUM_FORMAT) : '' }), raw.extraProps);
+    }
+
     var DayCellRoot = /** @class */ (function (_super) {
         __extends(DayCellRoot, _super);
         function DayCellRoot() {
             var _this = _super !== null && _super.apply(this, arguments) || this;
-            _this.refineHookProps = memoizeObjArg(refineHookProps);
+            _this.refineHookProps = memoizeObjArg(refineDayCellHookProps);
             _this.normalizeClassNames = buildClassNameNormalizer();
             return _this;
         }
@@ -9017,54 +9003,28 @@ var FullCalendar = (function (exports) {
                 showDayNumber: props.showDayNumber,
                 extraProps: props.extraHookProps,
                 viewApi: context.viewApi,
-                dateEnv: context.dateEnv
+                dateEnv: context.dateEnv,
             });
             var classNames = getDayClassNames(hookProps, context.theme).concat(hookProps.isDisabled
                 ? [] // don't use custom classNames if disabled
                 : this.normalizeClassNames(options.dayCellClassNames, hookProps));
             var dataAttrs = hookProps.isDisabled ? {} : {
-                'data-date': formatDayString(props.date)
+                'data-date': formatDayString(props.date),
             };
             return (createElement(MountHook, { hookProps: hookProps, didMount: options.dayCellDidMount, willUnmount: options.dayCellWillUnmount, elRef: props.elRef }, function (rootElRef) { return props.children(rootElRef, classNames, dataAttrs, hookProps.isDisabled); }));
         };
         return DayCellRoot;
     }(BaseComponent));
-    var DayCellContent = /** @class */ (function (_super) {
-        __extends(DayCellContent, _super);
-        function DayCellContent() {
-            return _super !== null && _super.apply(this, arguments) || this;
-        }
-        DayCellContent.prototype.render = function () {
-            var _a = this, props = _a.props, context = _a.context;
-            var options = context.options;
-            var hookProps = refineHookProps({
-                date: props.date,
-                dateProfile: props.dateProfile,
-                todayRange: props.todayRange,
-                showDayNumber: props.showDayNumber,
-                extraProps: props.extraHookProps,
-                viewApi: context.viewApi,
-                dateEnv: context.dateEnv
-            });
-            return (createElement(ContentHook, { hookProps: hookProps, content: options.dayCellContent, defaultContent: props.defaultContent }, props.children));
-        };
-        return DayCellContent;
-    }(BaseComponent));
-    function refineHookProps(raw) {
-        var date = raw.date, dateEnv = raw.dateEnv;
-        var dayMeta = getDateMeta(date, raw.todayRange, null, raw.dateProfile);
-        return __assign(__assign(__assign({ date: dateEnv.toDate(date), view: raw.viewApi }, dayMeta), { dayNumberText: raw.showDayNumber ? dateEnv.format(date, DAY_NUM_FORMAT) : '' }), raw.extraProps);
-    }
 
     function renderFill(fillType) {
         return (createElement("div", { className: "fc-" + fillType }));
     }
-    var BgEvent = function (props) { return (createElement(EventRoot, { defaultContent: renderInnerContent$1, seg: props.seg /* uselesss i think */, timeText: '' /* weird */, 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: {
-            backgroundColor: hookProps.backgroundColor
+    var BgEvent = function (props) { return (createElement(EventRoot, { defaultContent: renderInnerContent$1, 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: {
+            backgroundColor: hookProps.backgroundColor,
         } }, innerContent)); })); };
     function renderInnerContent$1(props) {
         var title = props.event.title;
-        return title && (createElement("div", { className: 'fc-event-title' }, props.event.title));
+        return title && (createElement("div", { className: "fc-event-title" }, props.event.title));
     }
 
     var WeekNumberRoot = function (props) { return (createElement(ViewContextType.Consumer, null, function (context) {
@@ -9082,7 +9042,7 @@ var FullCalendar = (function (exports) {
 
     // exports
     // --------------------------------------------------------------------------------------------------
-    var version = '<%= version %>'; // important to type it, so .d.ts has generic string
+    var version = '5.5.1'; // important to type it, so .d.ts has generic string
 
     var Calendar = /** @class */ (function (_super) {
         __extends(Calendar, _super);
@@ -9118,7 +9078,7 @@ var FullCalendar = (function (exports) {
                 }
                 else if (_this.isRendered) {
                     _this.isRendered = false;
-                    render(null, _this.el);
+                    unmountComponentAtNode$1(_this.el);
                     _this.setClassNames([]);
                     _this.setHeight('');
                 }
@@ -9130,7 +9090,7 @@ var FullCalendar = (function (exports) {
                 optionOverrides: optionOverrides,
                 calendarApi: _this,
                 onAction: _this.handleAction,
-                onData: _this.handleData
+                onData: _this.handleData,
             });
             return _this;
         }
@@ -9141,13 +9101,17 @@ var FullCalendar = (function (exports) {
             configurable: true
         });
         Calendar.prototype.render = function () {
-            if (!this.isRendering) {
+            var wasRendering = this.isRendering;
+            if (!wasRendering) {
                 this.isRendering = true;
             }
             else {
-                this.customContentRenderId++;
+                this.customContentRenderId += 1;
             }
             this.renderRunner.request();
+            if (wasRendering) {
+                this.updateSize();
+            }
         };
         Calendar.prototype.destroy = function () {
             if (this.isRendering) {
@@ -9214,7 +9178,6 @@ var FullCalendar = (function (exports) {
         function PointerDragging(containerEl) {
             var _this = this;
             this.subjectEl = null;
-            this.downEl = null;
             // options that can be directly assigned by caller
             this.selector = ''; // will cause subjectEl in all emitted events to be this element
             this.handleSelector = '';
@@ -9260,17 +9223,16 @@ var FullCalendar = (function (exports) {
                     _this.initScrollWatch(pev);
                     // unlike mouse, need to attach to target, not document
                     // https://stackoverflow.com/a/45760014
-                    var target = ev.target;
+                    var targetEl = ev.target;
                     if (!_this.shouldIgnoreMove) {
-                        target.addEventListener('touchmove', _this.handleTouchMove);
+                        targetEl.addEventListener('touchmove', _this.handleTouchMove);
                     }
-                    target.addEventListener('touchend', _this.handleTouchEnd);
-                    target.addEventListener('touchcancel', _this.handleTouchEnd); // treat it as a touch end
+                    targetEl.addEventListener('touchend', _this.handleTouchEnd);
+                    targetEl.addEventListener('touchcancel', _this.handleTouchEnd); // treat it as a touch end
                     // attach a handler to get called when ANY scroll action happens on the page.
                     // this was impossible to do with normal on/off because 'scroll' doesn't bubble.
                     // http://stackoverflow.com/a/32954565/96342
-                    window.addEventListener('scroll', _this.handleTouchScroll, true // useCapture
-                    );
+                    window.addEventListener('scroll', _this.handleTouchScroll, true);
                 }
             };
             this.handleTouchMove = function (ev) {
@@ -9280,10 +9242,10 @@ var FullCalendar = (function (exports) {
             };
             this.handleTouchEnd = function (ev) {
                 if (_this.isDragging) { // done to guard against touchend followed by touchcancel
-                    var target = ev.target;
-                    target.removeEventListener('touchmove', _this.handleTouchMove);
-                    target.removeEventListener('touchend', _this.handleTouchEnd);
-                    target.removeEventListener('touchcancel', _this.handleTouchEnd);
+                    var targetEl = ev.target;
+                    targetEl.removeEventListener('touchmove', _this.handleTouchMove);
+                    targetEl.removeEventListener('touchend', _this.handleTouchEnd);
+                    targetEl.removeEventListener('touchcancel', _this.handleTouchEnd);
                     window.removeEventListener('scroll', _this.handleTouchScroll, true); // useCaptured=true
                     _this.emitter.trigger('pointerup', _this.createEventFromTouch(ev));
                     _this.cleanup(); // call last so that pointerup has access to props
@@ -9305,7 +9267,7 @@ var FullCalendar = (function (exports) {
                         pageX: pageX,
                         pageY: pageY,
                         deltaX: pageX - _this.origPageX,
-                        deltaY: pageY - _this.origPageY
+                        deltaY: pageY - _this.origPageY,
                     });
                 }
             };
@@ -9326,7 +9288,6 @@ var FullCalendar = (function (exports) {
             if (subjectEl &&
                 (!this.handleSelector || elementClosest(downEl, this.handleSelector))) {
                 this.subjectEl = subjectEl;
-                this.downEl = downEl;
                 this.isDragging = true; // do this first so cancelTouchScroll will work
                 this.wasTouchScroll = false;
                 return true;
@@ -9337,7 +9298,6 @@ var FullCalendar = (function (exports) {
             isWindowTouchMoveCancelled = false;
             this.isDragging = false;
             this.subjectEl = null;
-            this.downEl = null;
             // keep wasTouchScroll around for later access
             this.destroyScrollWatch();
         };
@@ -9345,9 +9305,7 @@ var FullCalendar = (function (exports) {
             if (this.selector) {
                 return elementClosest(ev.target, this.selector);
             }
-            else {
-                return this.containerEl;
-            }
+            return this.containerEl;
         };
         PointerDragging.prototype.shouldIgnoreMouse = function () {
             return ignoreMouseDepth || this.isTouchDragging;
@@ -9400,7 +9358,7 @@ var FullCalendar = (function (exports) {
                 pageX: ev.pageX,
                 pageY: ev.pageY,
                 deltaX: deltaX,
-                deltaY: deltaY
+                deltaY: deltaY,
             };
         };
         PointerDragging.prototype.createEventFromTouch = function (ev, isFirst) {
@@ -9435,7 +9393,7 @@ var FullCalendar = (function (exports) {
                 pageX: pageX,
                 pageY: pageY,
                 deltaX: deltaX,
-                deltaY: deltaY
+                deltaY: deltaY,
             };
         };
         return PointerDragging;
@@ -9447,20 +9405,22 @@ var FullCalendar = (function (exports) {
     // Ignoring fake mouse events generated by touch
     // ----------------------------------------------------------------------------------------------------
     function startIgnoringMouse() {
-        ignoreMouseDepth++;
+        ignoreMouseDepth += 1;
         setTimeout(function () {
-            ignoreMouseDepth--;
+            ignoreMouseDepth -= 1;
         }, config.touchMouseIgnoreWait);
     }
     // We want to attach touchmove as early as possible for Safari
     // ----------------------------------------------------------------------------------------------------
     function listenerCreated() {
-        if (!(listenerCnt++)) {
+        listenerCnt += 1;
+        if (listenerCnt === 1) {
             window.addEventListener('touchmove', onWindowTouchMove, { passive: false });
         }
     }
     function listenerDestroyed() {
-        if (!(--listenerCnt)) {
+        listenerCnt -= 1;
+        if (!listenerCnt) {
             window.removeEventListener('touchmove', onWindowTouchMove, { passive: false });
         }
     }
@@ -9511,13 +9471,11 @@ var FullCalendar = (function (exports) {
                     this.updateElPosition(); // because was not updating the position while invisible
                 }
             }
-            else {
-                if (this.isVisible) {
-                    if (this.mirrorEl) {
-                        this.mirrorEl.style.display = 'none';
-                    }
-                    this.isVisible = bool;
+            else if (this.isVisible) {
+                if (this.mirrorEl) {
+                    this.mirrorEl.style.display = 'none';
                 }
+                this.isVisible = bool;
             }
         };
         // always async
@@ -9547,7 +9505,7 @@ var FullCalendar = (function (exports) {
                     'left ' + revertDuration + 'ms';
             applyStyle(mirrorEl, {
                 left: finalSourceElRect.left,
-                top: finalSourceElRect.top
+                top: finalSourceElRect.top,
             });
             whenTransitionDone(mirrorEl, function () {
                 mirrorEl.style.transition = '';
@@ -9565,7 +9523,7 @@ var FullCalendar = (function (exports) {
             if (this.sourceEl && this.isVisible) {
                 applyStyle(this.getMirrorEl(), {
                     left: this.sourceElRect.left + this.deltaX,
-                    top: this.sourceElRect.top + this.deltaY
+                    top: this.sourceElRect.top + this.deltaY,
                 });
             }
         };
@@ -9587,7 +9545,7 @@ var FullCalendar = (function (exports) {
                     height: sourceElRect.bottom - sourceElRect.top,
                     right: 'auto',
                     bottom: 'auto',
-                    margin: 0
+                    margin: 0,
                 });
                 this.parentNode.appendChild(mirrorEl);
             }
@@ -9672,6 +9630,7 @@ var FullCalendar = (function (exports) {
         };
         return ScrollGeomCache;
     }(ScrollController));
+
     var ElementScrollGeomCache = /** @class */ (function (_super) {
         __extends(ElementScrollGeomCache, _super);
         function ElementScrollGeomCache(el, doesListening) {
@@ -9685,6 +9644,7 @@ var FullCalendar = (function (exports) {
         };
         return ElementScrollGeomCache;
     }(ScrollGeomCache));
+
     var WindowScrollGeomCache = /** @class */ (function (_super) {
         __extends(WindowScrollGeomCache, _super);
         function WindowScrollGeomCache(doesListening) {
@@ -9698,7 +9658,7 @@ var FullCalendar = (function (exports) {
                 left: this.scrollLeft,
                 right: this.scrollLeft + this.clientWidth,
                 top: this.scrollTop,
-                bottom: this.scrollTop + this.clientHeight
+                bottom: this.scrollTop + this.clientHeight,
             };
         };
         // the window is the only scroll object that changes it's rectangle relative
@@ -9808,7 +9768,7 @@ var FullCalendar = (function (exports) {
             var edgeThreshold = this.edgeThreshold;
             var invDistance = edgeThreshold - edge.distance;
             var velocity = // the closer to the edge, the faster we scroll
-             (invDistance * invDistance) / (edgeThreshold * edgeThreshold) * // quadratic
+             ((invDistance * invDistance) / (edgeThreshold * edgeThreshold)) * // quadratic
                 this.maxVelocity * seconds;
             var sign = 1;
             switch (edge.name) {
@@ -9864,9 +9824,7 @@ var FullCalendar = (function (exports) {
                 if (el === window) {
                     return new WindowScrollGeomCache(false); // false = don't listen to user-generated scrolls
                 }
-                else {
-                    return new ElementScrollGeomCache(el, false); // false = don't listen to user-generated scrolls
-                }
+                return new ElementScrollGeomCache(el, false); // false = don't listen to user-generated scrolls
             });
         };
         AutoScroller.prototype.queryScrollEls = function () {
@@ -10023,8 +9981,7 @@ var FullCalendar = (function (exports) {
         FeaturefulElementDragging.prototype.tryStopDrag = function (ev) {
             // .stop() is ALWAYS asynchronous, which we NEED because we want all pointerup events
             // that come from the document to fire beforehand. much more convenient this way.
-            this.mirror.stop(this.mirrorNeedsRevert, this.stopDrag.bind(this, ev) // bound with args
-            );
+            this.mirror.stop(this.mirrorNeedsRevert, this.stopDrag.bind(this, ev));
         };
         FeaturefulElementDragging.prototype.stopDrag = function (ev) {
             this.isDragging = false;
@@ -10058,9 +10015,7 @@ var FullCalendar = (function (exports) {
         function OffsetTracker(el) {
             this.origRect = computeRect(el);
             // will work fine for divs that have overflow:hidden
-            this.scrollCaches = getClippingParents(el).map(function (el) {
-                return new ElementScrollGeomCache(el, true); // listen=true
-            });
+            this.scrollCaches = getClippingParents(el).map(function (scrollEl) { return new ElementScrollGeomCache(scrollEl, true); });
         }
         OffsetTracker.prototype.destroy = function () {
             for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) {
@@ -10135,7 +10090,8 @@ var FullCalendar = (function (exports) {
                 _this.processFirstCoord(ev);
                 if (_this.initialHit || !_this.requireInitial) {
                     dragging.setIgnoreMove(false);
-                    _this.emitter.trigger('pointerdown', ev); // TODO: fire this before computing processFirstCoord, so listeners can cancel. this gets fired by almost every handler :(
+                    // TODO: fire this before computing processFirstCoord, so listeners can cancel. this gets fired by almost every handler :(
+                    _this.emitter.trigger('pointerdown', ev);
                 }
                 else {
                     dragging.setIgnoreMove(true);
@@ -10278,7 +10234,7 @@ var FullCalendar = (function (exports) {
         return {
             date: dateEnv.toDate(span.range.start),
             dateStr: dateEnv.formatIso(span.range.start, { omitTime: span.allDay }),
-            allDay: span.allDay
+            allDay: span.allDay,
         };
     }
 
@@ -10290,10 +10246,11 @@ var FullCalendar = (function (exports) {
         __extends(DateClicking, _super);
         function DateClicking(settings) {
             var _this = _super.call(this, settings) || this;
-            _this.handlePointerDown = function (ev) {
+            _this.handlePointerDown = function (pev) {
                 var dragging = _this.dragging;
+                var downEl = pev.origEvent.target;
                 // do this in pointerdown (not dragend) because DOM might be mutated by the time dragend is fired
-                dragging.setIgnoreMove(!_this.component.isValidDateDownEl(dragging.pointer.downEl));
+                dragging.setIgnoreMove(!_this.component.isValidDateDownEl(downEl));
             };
             // won't even fire if moving was ignored
             _this.handleDragEnd = function (ev) {
@@ -10411,7 +10368,7 @@ var FullCalendar = (function (exports) {
             dateSpan0.range.start,
             dateSpan0.range.end,
             dateSpan1.range.start,
-            dateSpan1.range.end
+            dateSpan1.range.end,
         ];
         ms.sort(compareNumbers);
         var props = {};
@@ -10421,7 +10378,7 @@ var FullCalendar = (function (exports) {
             if (res === false) {
                 return null;
             }
-            else if (res) {
+            if (res) {
                 __assign(props, res);
             }
         }
@@ -10460,7 +10417,12 @@ var FullCalendar = (function (exports) {
                     (ev.isTouch && eventInstanceId !== component.props.eventSelection) ?
                         getComponentTouchDelay$1(component) :
                         null;
-                mirror.parentNode = elementClosest(origTarget, '.fc');
+                if (options.fixedMirrorParent) {
+                    mirror.parentNode = options.fixedMirrorParent;
+                }
+                else {
+                    mirror.parentNode = elementClosest(origTarget, '.fc');
+                }
                 mirror.revertDuration = options.dragRevertDuration;
                 var isValid = component.isValidSegDownEl(origTarget) &&
                     !elementClosest(origTarget, '.fc-event-resizer'); // NOT on a resizer
@@ -10490,7 +10452,7 @@ var FullCalendar = (function (exports) {
                         el: _this.subjectEl,
                         event: new EventApi(initialContext, eventRange.def, eventRange.instance),
                         jsEvent: ev.origEvent,
-                        view: initialContext.viewApi
+                        view: initialContext.viewApi,
                     });
                 }
             };
@@ -10509,14 +10471,14 @@ var FullCalendar = (function (exports) {
                 var interaction = {
                     affectedEvents: relevantEvents,
                     mutatedEvents: createEmptyEventStore(),
-                    isEvent: true
+                    isEvent: true,
                 };
                 if (hit) {
                     var receivingComponent = hit.component;
                     receivingContext = receivingComponent.context;
                     var receivingOptions = receivingContext.options;
                     if (initialContext === receivingContext ||
-                        receivingOptions.editable && receivingOptions.droppable) {
+                        (receivingOptions.editable && receivingOptions.droppable)) {
                         mutation = computeEventMutation(initialHit, hit, receivingContext.getCurrentData().pluginHooks.eventDragMutationMassagers);
                         if (mutation) {
                             mutatedRelevantEvents = applyMutationToEventStore(relevantEvents, receivingContext.getCurrentData().eventUiBases, mutation, receivingContext);
@@ -10576,7 +10538,7 @@ var FullCalendar = (function (exports) {
                         el: _this.subjectEl,
                         event: eventApi,
                         jsEvent: ev.origEvent,
-                        view: initialView
+                        view: initialView,
                     });
                     if (validMutation) {
                         // dropped within same calendar
@@ -10584,7 +10546,7 @@ var FullCalendar = (function (exports) {
                             var updatedEventApi = new EventApi(initialContext_1, mutatedRelevantEvents_1.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents_1.instances[eventInstance.instanceId] : null);
                             initialContext_1.dispatch({
                                 type: 'MERGE_EVENTS',
-                                eventStore: mutatedRelevantEvents_1
+                                eventStore: mutatedRelevantEvents_1,
                             });
                             var eventChangeArg = {
                                 oldEvent: eventApi,
@@ -10593,9 +10555,9 @@ var FullCalendar = (function (exports) {
                                 revert: function () {
                                     initialContext_1.dispatch({
                                         type: 'MERGE_EVENTS',
-                                        eventStore: relevantEvents_1 // the pre-change data
+                                        eventStore: relevantEvents_1,
                                     });
-                                }
+                                },
                             };
                             var transformed = {};
                             for (var _i = 0, _b = initialContext_1.getCurrentData().pluginHooks.eventDropTransformers; _i < _b.length; _i++) {
@@ -10607,54 +10569,48 @@ var FullCalendar = (function (exports) {
                             // dropped in different calendar
                         }
                         else if (receivingContext_1) {
-                            initialContext_1.emitter.trigger('eventLeave', {
-                                draggedEl: ev.subjectEl,
-                                event: eventApi,
-                                view: initialView
-                            });
-                            initialContext_1.dispatch({
-                                type: 'REMOVE_EVENTS',
-                                eventStore: relevantEvents_1
-                            });
-                            initialContext_1.emitter.trigger('eventRemove', {
+                            var eventRemoveArg = {
                                 event: eventApi,
                                 relatedEvents: buildEventApis(relevantEvents_1, initialContext_1, eventInstance),
                                 revert: function () {
                                     initialContext_1.dispatch({
                                         type: 'MERGE_EVENTS',
-                                        eventStore: relevantEvents_1
+                                        eventStore: relevantEvents_1,
                                     });
-                                }
+                                },
+                            };
+                            initialContext_1.emitter.trigger('eventLeave', __assign(__assign({}, eventRemoveArg), { draggedEl: ev.subjectEl, view: initialView }));
+                            initialContext_1.dispatch({
+                                type: 'REMOVE_EVENTS',
+                                eventStore: relevantEvents_1,
                             });
+                            initialContext_1.emitter.trigger('eventRemove', eventRemoveArg);
                             var addedEventDef = mutatedRelevantEvents_1.defs[eventDef.defId];
                             var addedEventInstance = mutatedRelevantEvents_1.instances[eventInstance.instanceId];
                             var addedEventApi = new EventApi(receivingContext_1, addedEventDef, addedEventInstance);
                             receivingContext_1.dispatch({
                                 type: 'MERGE_EVENTS',
-                                eventStore: mutatedRelevantEvents_1
+                                eventStore: mutatedRelevantEvents_1,
                             });
-                            receivingContext_1.emitter.trigger('eventAdd', {
+                            var eventAddArg = {
                                 event: addedEventApi,
                                 relatedEvents: buildEventApis(mutatedRelevantEvents_1, receivingContext_1, addedEventInstance),
                                 revert: function () {
                                     receivingContext_1.dispatch({
                                         type: 'REMOVE_EVENTS',
-                                        eventStore: mutatedRelevantEvents_1
+                                        eventStore: mutatedRelevantEvents_1,
                                     });
-                                }
-                            });
+                                },
+                            };
+                            receivingContext_1.emitter.trigger('eventAdd', eventAddArg);
                             if (ev.isTouch) {
                                 receivingContext_1.dispatch({
                                     type: 'SELECT_EVENT',
-                                    eventInstanceId: eventInstance.instanceId
+                                    eventInstanceId: eventInstance.instanceId,
                                 });
                             }
                             receivingContext_1.emitter.trigger('drop', __assign(__assign({}, buildDatePointApiWithContext(finalHit.dateSpan, receivingContext_1)), { draggedEl: ev.subjectEl, jsEvent: ev.origEvent, view: finalHit.component.context.viewApi }));
-                            receivingContext_1.emitter.trigger('eventReceive', {
-                                draggedEl: ev.subjectEl,
-                                event: addedEventApi,
-                                view: finalHit.component.context.viewApi
-                            });
+                            receivingContext_1.emitter.trigger('eventReceive', __assign(__assign({}, eventAddArg), { draggedEl: ev.subjectEl, view: finalHit.component.context.viewApi }));
                         }
                     }
                     else {
@@ -10695,8 +10651,8 @@ var FullCalendar = (function (exports) {
                         state: {
                             affectedEvents: state.affectedEvents,
                             mutatedEvents: createEmptyEventStore(),
-                            isEvent: true
-                        }
+                            isEvent: true,
+                        },
                     });
                     // completely clear the old calendar if it wasn't the initial
                 }
@@ -10756,7 +10712,7 @@ var FullCalendar = (function (exports) {
         }
         var mutation = {
             datesDelta: delta,
-            standardProps: standardProps
+            standardProps: standardProps,
         };
         for (var _i = 0, massagers_1 = massagers; _i < massagers_1.length; _i++) {
             var massager = massagers_1[_i];
@@ -10806,7 +10762,7 @@ var FullCalendar = (function (exports) {
                     el: segEl,
                     event: new EventApi(context, eventRange.def, eventRange.instance),
                     jsEvent: ev.origEvent,
-                    view: context.viewApi
+                    view: context.viewApi,
                 });
             };
             _this.handleHitUpdate = function (hit, isFinal, ev) {
@@ -10820,7 +10776,7 @@ var FullCalendar = (function (exports) {
                 var interaction = {
                     affectedEvents: relevantEvents,
                     mutatedEvents: createEmptyEventStore(),
-                    isEvent: true
+                    isEvent: true,
                 };
                 if (hit) {
                     mutation = computeMutation(initialHit, hit, ev.subjectEl.classList.contains('fc-event-resizer-start'), eventInstance.range, context.pluginHooks.eventResizeJoinTransforms);
@@ -10838,7 +10794,7 @@ var FullCalendar = (function (exports) {
                 if (mutatedRelevantEvents) {
                     context.dispatch({
                         type: 'SET_EVENT_RESIZE',
-                        state: interaction
+                        state: interaction,
                     });
                 }
                 else {
@@ -10869,13 +10825,13 @@ var FullCalendar = (function (exports) {
                     el: _this.draggingSegEl,
                     event: eventApi,
                     jsEvent: ev.origEvent,
-                    view: context.viewApi
+                    view: context.viewApi,
                 });
                 if (_this.validMutation) {
                     var updatedEventApi = new EventApi(context, mutatedRelevantEvents.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null);
                     context.dispatch({
                         type: 'MERGE_EVENTS',
-                        eventStore: mutatedRelevantEvents
+                        eventStore: mutatedRelevantEvents,
                     });
                     var eventChangeArg = {
                         oldEvent: eventApi,
@@ -10884,9 +10840,9 @@ var FullCalendar = (function (exports) {
                         revert: function () {
                             context.dispatch({
                                 type: 'MERGE_EVENTS',
-                                eventStore: relevantEvents // the pre-change events
+                                eventStore: relevantEvents,
                             });
-                        }
+                        },
                     };
                     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 }));
                     context.emitter.trigger('eventChange', eventChangeArg);
@@ -10932,7 +10888,7 @@ var FullCalendar = (function (exports) {
             if (res === false) {
                 return null;
             }
-            else if (res) {
+            if (res) {
                 __assign(props, res);
             }
         }
@@ -10942,11 +10898,9 @@ var FullCalendar = (function (exports) {
                 return props;
             }
         }
-        else {
-            if (dateEnv.add(instanceRange.end, delta) > instanceRange.start) {
-                props.endDelta = delta;
-                return props;
-            }
+        else if (dateEnv.add(instanceRange.end, delta) > instanceRange.start) {
+            props.endDelta = delta;
+            return props;
         }
         return null;
     }
@@ -10956,11 +10910,19 @@ var FullCalendar = (function (exports) {
             var _this = this;
             this.context = context;
             this.isRecentPointerDateSelect = false; // wish we could use a selector to detect date selection, but uses hit system
+            this.matchesCancel = false;
+            this.matchesEvent = false;
             this.onSelect = function (selectInfo) {
                 if (selectInfo.jsEvent) {
                     _this.isRecentPointerDateSelect = true;
                 }
             };
+            this.onDocumentPointerDown = function (pev) {
+                var unselectCancel = _this.context.options.unselectCancel;
+                var downEl = pev.origEvent.target;
+                _this.matchesCancel = !!elementClosest(downEl, unselectCancel);
+                _this.matchesEvent = !!elementClosest(downEl, EventDragging.SELECTOR); // interaction started on an event?
+            };
             this.onDocumentPointerUp = function (pev) {
                 var context = _this.context;
                 var documentPointer = _this.documentPointer;
@@ -10971,13 +10933,12 @@ var FullCalendar = (function (exports) {
                         !_this.isRecentPointerDateSelect // a new pointer-initiated date selection since last onDocumentPointerUp?
                     ) {
                         var unselectAuto = context.options.unselectAuto;
-                        var unselectCancel = context.options.unselectCancel;
-                        if (unselectAuto && (!unselectAuto || !elementClosest(documentPointer.downEl, unselectCancel))) {
+                        if (unselectAuto && (!unselectAuto || !_this.matchesCancel)) {
                             context.calendarApi.unselect(pev);
                         }
                     }
                     if (calendarState.eventSelection && // an existing event selected?
-                        !elementClosest(documentPointer.downEl, EventDragging.SELECTOR) // interaction DIDN'T start on an event
+                        !_this.matchesEvent // interaction DIDN'T start on an event
                     ) {
                         context.dispatch({ type: 'UNSELECT_EVENT' });
                     }
@@ -10987,6 +10948,7 @@ var FullCalendar = (function (exports) {
             var documentPointer = this.documentPointer = new PointerDragging(document);
             documentPointer.shouldIgnoreMove = true;
             documentPointer.shouldWatchScroll = false;
+            documentPointer.emitter.on('pointerdown', this.onDocumentPointerDown);
             documentPointer.emitter.on('pointerup', this.onDocumentPointerUp);
             /*
             TODO: better way to know about whether there was a selection with the pointer
@@ -11000,6 +10962,9 @@ var FullCalendar = (function (exports) {
         return UnselectAuto;
     }());
 
+    var OPTION_REFINERS = {
+        fixedMirrorParent: identity,
+    };
     var LISTENER_REFINERS = {
         dateClick: identity,
         eventDragStart: identity,
@@ -11010,7 +10975,7 @@ var FullCalendar = (function (exports) {
         eventResize: identity,
         drop: identity,
         eventReceive: identity,
-        eventLeave: identity
+        eventLeave: identity,
     };
 
     /*
@@ -11036,7 +11001,7 @@ var FullCalendar = (function (exports) {
                 var interaction = {
                     affectedEvents: createEmptyEventStore(),
                     mutatedEvents: createEmptyEventStore(),
-                    isEvent: _this.dragMeta.create
+                    isEvent: _this.dragMeta.create,
                 };
                 if (hit) {
                     receivingContext = hit.component.context;
@@ -11075,21 +11040,29 @@ var FullCalendar = (function (exports) {
                     var dragMeta = _this.dragMeta;
                     receivingContext.emitter.trigger('drop', __assign(__assign({}, buildDatePointApiWithContext(finalHit.dateSpan, receivingContext)), { draggedEl: pev.subjectEl, jsEvent: pev.origEvent, view: finalView }));
                     if (dragMeta.create) {
+                        var addingEvents_1 = eventTupleToStore(droppableEvent);
                         receivingContext.dispatch({
                             type: 'MERGE_EVENTS',
-                            eventStore: eventTupleToStore(droppableEvent)
+                            eventStore: addingEvents_1,
                         });
                         if (pev.isTouch) {
                             receivingContext.dispatch({
                                 type: 'SELECT_EVENT',
-                                eventInstanceId: droppableEvent.instance.instanceId
+                                eventInstanceId: droppableEvent.instance.instanceId,
                             });
                         }
                         // signal that an external event landed
                         receivingContext.emitter.trigger('eventReceive', {
-                            draggedEl: pev.subjectEl,
                             event: new EventApi(receivingContext, droppableEvent.def, droppableEvent.instance),
-                            view: finalView
+                            relatedEvents: [],
+                            revert: function () {
+                                receivingContext.dispatch({
+                                    type: 'REMOVE_EVENTS',
+                                    eventStore: addingEvents_1,
+                                });
+                            },
+                            draggedEl: pev.subjectEl,
+                            view: finalView,
                         });
                     }
                 }
@@ -11107,12 +11080,10 @@ var FullCalendar = (function (exports) {
             if (typeof this.suppliedDragMeta === 'object') {
                 return parseDragMeta(this.suppliedDragMeta);
             }
-            else if (typeof this.suppliedDragMeta === 'function') {
+            if (typeof this.suppliedDragMeta === 'function') {
                 return parseDragMeta(this.suppliedDragMeta(subjectEl));
             }
-            else {
-                return getDragMetaFromEl(subjectEl);
-            }
+            return getDragMetaFromEl(subjectEl);
         };
         ExternalElementDragging.prototype.displayDrag = function (nextContext, state) {
             var prevContext = this.receivingContext;
@@ -11133,7 +11104,7 @@ var FullCalendar = (function (exports) {
             if (typeof dropAccept === 'function') {
                 return dropAccept.call(receivingContext.calendarApi, el);
             }
-            else if (typeof dropAccept === 'string' && dropAccept) {
+            if (typeof dropAccept === 'string' && dropAccept) {
                 return Boolean(elementMatches(el, dropAccept));
             }
             return true;
@@ -11218,7 +11189,7 @@ var FullCalendar = (function (exports) {
             }
             dragging.emitter.on('pointerdown', this.handlePointerDown);
             dragging.emitter.on('dragstart', this.handleDragStart);
-            new ExternalElementDragging(dragging, settings.eventData);
+            new ExternalElementDragging(dragging, settings.eventData); // eslint-disable-line no-new
         }
         ExternalDraggable.prototype.destroy = function () {
             this.dragging.destroy();
@@ -11319,7 +11290,7 @@ var FullCalendar = (function (exports) {
             if (typeof settings.mirrorSelector === 'string') {
                 dragging.mirrorSelector = settings.mirrorSelector;
             }
-            new ExternalElementDragging(dragging, settings.eventData);
+            new ExternalElementDragging(dragging, settings.eventData); // eslint-disable-line no-new
         }
         ThirdPartyDraggable.prototype.destroy = function () {
             this.dragging.destroy();
@@ -11331,7 +11302,8 @@ var FullCalendar = (function (exports) {
         componentInteractions: [DateClicking, DateSelecting, EventDragging, EventResizing],
         calendarInteractions: [UnselectAuto],
         elementDraggingImpl: FeaturefulElementDragging,
-        listenerRefiners: LISTENER_REFINERS
+        optionRefiners: OPTION_REFINERS,
+        listenerRefiners: LISTENER_REFINERS,
     });
 
     /* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells.
@@ -11357,15 +11329,15 @@ var FullCalendar = (function (exports) {
                     chunk: {
                         elRef: this.headerElRef,
                         tableClassName: 'fc-col-header',
-                        rowContent: headerRowContent
-                    }
+                        rowContent: headerRowContent,
+                    },
                 });
             }
             sections.push({
                 type: 'body',
                 key: 'body',
                 liquid: true,
-                chunk: { content: bodyContent }
+                chunk: { content: bodyContent },
             });
             return (createElement(ViewRoot, { viewSpec: context.viewSpec }, function (rootElRef, classNames) { return (createElement("div", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') },
                 createElement(SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, cols: [] /* TODO: make optional? */, sections: sections }))); }));
@@ -11388,8 +11360,8 @@ var FullCalendar = (function (exports) {
                             key: 'main',
                             elRef: this.headerElRef,
                             tableClassName: 'fc-col-header',
-                            rowContent: headerRowContent
-                        }]
+                            rowContent: headerRowContent,
+                        }],
                 });
             }
             sections.push({
@@ -11398,8 +11370,8 @@ var FullCalendar = (function (exports) {
                 liquid: true,
                 chunks: [{
                         key: 'main',
-                        content: bodyContent
-                    }]
+                        content: bodyContent,
+                    }],
             });
             if (stickyFooterScrollbar) {
                 sections.push({
@@ -11408,8 +11380,8 @@ var FullCalendar = (function (exports) {
                     isSticky: true,
                     chunks: [{
                             key: 'main',
-                            content: renderScrollShim
-                        }]
+                            content: renderScrollShim,
+                        }],
                 });
             }
             return (createElement(ViewRoot, { viewSpec: context.viewSpec }, function (rootElRef, classNames) { return (createElement("div", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') },
@@ -11420,7 +11392,7 @@ var FullCalendar = (function (exports) {
 
     function splitSegsByRow(segs, rowCnt) {
         var byRow = [];
-        for (var i = 0; i < rowCnt; i++) {
+        for (var i = 0; i < rowCnt; i += 1) {
             byRow[i] = [];
         }
         for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) {
@@ -11431,7 +11403,7 @@ var FullCalendar = (function (exports) {
     }
     function splitSegsByFirstCol(segs, colCnt) {
         var byCol = [];
-        for (var i = 0; i < colCnt; i++) {
+        for (var i = 0; i < colCnt; i += 1) {
             byCol[i] = [];
         }
         for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) {
@@ -11443,16 +11415,16 @@ var FullCalendar = (function (exports) {
     function splitInteractionByRow(ui, rowCnt) {
         var byRow = [];
         if (!ui) {
-            for (var i = 0; i < rowCnt; i++) {
+            for (var i = 0; i < rowCnt; i += 1) {
                 byRow[i] = null;
             }
         }
         else {
-            for (var i = 0; i < rowCnt; i++) {
+            for (var i = 0; i < rowCnt; i += 1) {
                 byRow[i] = {
                     affectedInstances: ui.affectedInstances,
                     isEvent: ui.isEvent,
-                    segs: []
+                    segs: [],
                 };
             }
             for (var _i = 0, _a = ui.segs; _i < _a.length; _i++) {
@@ -11463,6 +11435,25 @@ var FullCalendar = (function (exports) {
         return byRow;
     }
 
+    var TableCellTop = /** @class */ (function (_super) {
+        __extends(TableCellTop, _super);
+        function TableCellTop() {
+            return _super !== null && _super.apply(this, arguments) || this;
+        }
+        TableCellTop.prototype.render = function () {
+            var props = this.props;
+            var navLinkAttrs = this.context.options.navLinks
+                ? { 'data-navlink': buildNavLinkData(props.date), tabIndex: 0 }
+                : {};
+            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 },
+                createElement("a", __assign({ className: "fc-daygrid-day-number" }, navLinkAttrs), innerContent || createElement(Fragment, null, "\u00A0"))))); }));
+        };
+        return TableCellTop;
+    }(BaseComponent));
+    function renderTopInner(props) {
+        return props.dayNumberText;
+    }
+
     var DEFAULT_WEEK_NUM_FORMAT = createFormatter({ week: 'narrow' });
     var TableCell = /** @class */ (function (_super) {
         __extends(TableCell, _super);
@@ -11483,7 +11474,7 @@ var FullCalendar = (function (exports) {
                         hiddenSegs: hiddenSegs,
                         moreCnt: props.moreCnt,
                         dayEl: _this.rootEl,
-                        ev: ev
+                        ev: ev,
                     });
                 }
             };
@@ -11497,60 +11488,43 @@ var FullCalendar = (function (exports) {
             var hookProps = {
                 num: props.moreCnt,
                 text: props.buildMoreLinkText(props.moreCnt),
-                view: viewApi
+                view: viewApi,
             };
             var navLinkAttrs = options.navLinks
                 ? { 'data-navlink': buildNavLinkData(date, 'week'), tabIndex: 0 }
                 : {};
-            return (createElement(DayCellRoot, { date: date, dateProfile: dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, elRef: this.handleRootEl }, function (rootElRef, classNames, rootDataAttrs, isDisabled) { return (createElement("td", __assign({ ref: rootElRef, className: ['fc-daygrid-day'].concat(classNames, props.extraClassNames || []).join(' ') }, rootDataAttrs, props.extraDataAttrs),
-                createElement("div", { className: 'fc-daygrid-day-frame fc-scrollgrid-sync-inner', ref: props.innerElRef /* different from hook system! RENAME */ },
-                    props.showWeekNumber &&
-                        createElement(WeekNumberRoot, { date: date, defaultFormat: DEFAULT_WEEK_NUM_FORMAT }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("a", __assign({ ref: rootElRef, className: ['fc-daygrid-week-number'].concat(classNames).join(' ') }, navLinkAttrs), innerContent)); }),
-                    !isDisabled &&
-                        createElement(TableCellTop, { date: date, dateProfile: dateProfile, showDayNumber: props.showDayNumber, todayRange: props.todayRange, extraHookProps: props.extraHookProps }),
-                    createElement("div", { className: 'fc-daygrid-day-events', ref: props.fgContentElRef, style: { paddingBottom: props.fgPaddingBottom } },
+            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),
+                createElement("div", { className: "fc-daygrid-day-frame fc-scrollgrid-sync-inner", ref: props.innerElRef /* different from hook system! RENAME */ },
+                    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)); })),
+                    !isDisabled && (createElement(TableCellTop, { date: date, dateProfile: dateProfile, showDayNumber: props.showDayNumber, forceDayTop: props.forceDayTop, todayRange: props.todayRange, extraHookProps: props.extraHookProps })),
+                    createElement("div", { className: "fc-daygrid-day-events", ref: props.fgContentElRef, style: { paddingBottom: props.fgPaddingBottom } },
                         props.fgContent,
-                        Boolean(props.moreCnt) &&
-                            createElement("div", { className: 'fc-daygrid-day-bottom', style: { marginTop: props.moreMarginTop } },
-                                createElement(RenderHook, { hookProps: hookProps, classNames: options.moreLinkClassNames, content: options.moreLinkContent, defaultContent: renderMoreLinkInner, didMount: options.moreLinkDidMount, willUnmount: options.moreLinkWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("a", { onClick: _this.handleMoreLinkClick, ref: rootElRef, className: ['fc-daygrid-more-link'].concat(classNames).join(' ') }, innerContent)); }))),
-                    createElement("div", { className: 'fc-daygrid-day-bg' }, props.bgContent)))); }));
+                        Boolean(props.moreCnt) && (createElement("div", { className: "fc-daygrid-day-bottom", style: { marginTop: props.moreMarginTop } },
+                            createElement(RenderHook, { hookProps: hookProps, classNames: options.moreLinkClassNames, content: options.moreLinkContent, defaultContent: renderMoreLinkInner, didMount: options.moreLinkDidMount, willUnmount: options.moreLinkWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("a", { ref: rootElRef, className: ['fc-daygrid-more-link'].concat(classNames).join(' '), onClick: _this.handleMoreLinkClick }, innerContent)); })))),
+                    createElement("div", { className: "fc-daygrid-day-bg" }, props.bgContent)))); }));
         };
         return TableCell;
     }(DateComponent));
-    function renderTopInner(props) {
-        return props.dayNumberText;
-    }
+    TableCell.addPropsEquality({
+        onMoreClick: true,
+    });
     function renderMoreLinkInner(props) {
         return props.text;
     }
-    var TableCellTop = /** @class */ (function (_super) {
-        __extends(TableCellTop, _super);
-        function TableCellTop() {
-            return _super !== null && _super.apply(this, arguments) || this;
-        }
-        TableCellTop.prototype.render = function () {
-            var props = this.props;
-            var navLinkAttrs = this.context.options.navLinks
-                ? { 'data-navlink': buildNavLinkData(props.date), tabIndex: 0 }
-                : {};
-            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 &&
-                createElement("div", { className: 'fc-daygrid-day-top', ref: innerElRef },
-                    createElement("a", __assign({ className: 'fc-daygrid-day-number' }, navLinkAttrs), innerContent))); }));
-        };
-        return TableCellTop;
-    }(BaseComponent));
 
     var DEFAULT_TABLE_EVENT_TIME_FORMAT = createFormatter({
         hour: 'numeric',
         minute: '2-digit',
         omitZeroMinute: true,
-        meridiem: 'narrow'
+        meridiem: 'narrow',
     });
     function hasListItemDisplay(seg) {
         var display = seg.eventRange.ui.display;
         return display === 'list-item' || (display === 'auto' &&
             !seg.eventRange.def.allDay &&
-            seg.firstCol === seg.lastCol // can't be multi-day
+            seg.firstCol === seg.lastCol && // can't be multi-day
+            seg.isStart && // "
+            seg.isEnd // "
         );
     }
 
@@ -11570,10 +11544,9 @@ var FullCalendar = (function (exports) {
     }(BaseComponent));
     function renderInnerContent$2(innerProps) {
         return (createElement(Fragment, null,
-            createElement("div", { className: 'fc-daygrid-event-dot', style: { borderColor: innerProps.borderColor || innerProps.backgroundColor } }),
-            innerProps.timeText &&
-                createElement("div", { className: 'fc-event-time' }, innerProps.timeText),
-            createElement("div", { className: 'fc-event-title' }, innerProps.event.title || createElement(Fragment, null, "\u00A0"))));
+            createElement("div", { className: "fc-daygrid-event-dot", style: { borderColor: innerProps.borderColor || innerProps.backgroundColor } }),
+            innerProps.timeText && (createElement("div", { className: "fc-event-time" }, innerProps.timeText)),
+            createElement("div", { className: "fc-event-title" }, innerProps.event.title || createElement(Fragment, null, "\u00A0"))));
     }
     function getSegAnchorAttrs$1(seg) {
         var url = seg.eventRange.def.url;
@@ -11601,7 +11574,7 @@ var FullCalendar = (function (exports) {
         var segMarginTops = {}; // simetimes populated for each seg
         var moreTops = {};
         var paddingBottoms = {}; // for each cell's inner-wrapper div
-        for (var i = 0; i < colCnt; i++) {
+        for (var i = 0; i < colCnt; i += 1) {
             colPlacements.push([]);
             moreCnts.push(0);
         }
@@ -11622,10 +11595,10 @@ var FullCalendar = (function (exports) {
             limitByMaxRows(moreCnts, segIsHidden, colPlacements, dayMaxEventRows); // populates moreCnts/segIsHidden
         }
         // computes segTops/segMarginTops/moreTops/paddingBottoms
-        for (var col = 0; col < colCnt; col++) {
+        for (var col = 0; col < colCnt; col += 1) {
             var placements = colPlacements[col];
             var currentNonAbsBottom = 0;
-            var runningAbsHeight = 0;
+            var currentAbsHeight = 0;
             for (var _a = 0, placements_1 = placements; _a < placements_1.length; _a++) {
                 var placement = placements_1[_a];
                 var seg = placement.seg;
@@ -11634,26 +11607,26 @@ var FullCalendar = (function (exports) {
                     if (seg.firstCol === seg.lastCol && seg.isStart && seg.isEnd) { // TODO: simpler way? NOT DRY
                         segMarginTops[seg.eventRange.instance.instanceId] =
                             placement.top - currentNonAbsBottom; // from previous seg bottom
-                        runningAbsHeight = 0;
+                        currentAbsHeight = 0;
                         currentNonAbsBottom = placement.bottom;
                     }
                     else { // multi-col event, abs positioned
-                        runningAbsHeight += placement.bottom - placement.top;
+                        currentAbsHeight = placement.bottom - currentNonAbsBottom;
                     }
                 }
             }
-            if (runningAbsHeight) {
+            if (currentAbsHeight) {
                 if (moreCnts[col]) {
-                    moreTops[col] = runningAbsHeight;
+                    moreTops[col] = currentAbsHeight;
                 }
                 else {
-                    paddingBottoms[col] = runningAbsHeight;
+                    paddingBottoms[col] = currentAbsHeight;
                 }
             }
         }
         function placeSeg(seg, segHeight) {
             if (!tryPlaceSegAt(seg, segHeight, 0)) {
-                for (var col = seg.firstCol; col <= seg.lastCol; col++) {
+                for (var col = seg.firstCol; col <= seg.lastCol; col += 1) {
                     for (var _i = 0, _a = colPlacements[col]; _i < _a.length; _i++) { // will repeat multi-day segs!!!!!!! bad!!!!!!
                         var placement = _a[_i];
                         if (tryPlaceSegAt(seg, segHeight, placement.bottom)) {
@@ -11665,27 +11638,25 @@ var FullCalendar = (function (exports) {
         }
         function tryPlaceSegAt(seg, segHeight, top) {
             if (canPlaceSegAt(seg, segHeight, top)) {
-                for (var col = seg.firstCol; col <= seg.lastCol; col++) {
+                for (var col = seg.firstCol; col <= seg.lastCol; col += 1) {
                     var placements = colPlacements[col];
                     var insertionIndex = 0;
                     while (insertionIndex < placements.length &&
                         top >= placements[insertionIndex].top) {
-                        insertionIndex++;
+                        insertionIndex += 1;
                     }
                     placements.splice(insertionIndex, 0, {
                         seg: seg,
                         top: top,
-                        bottom: top + segHeight
+                        bottom: top + segHeight,
                     });
                 }
                 return true;
             }
-            else {
-                return false;
-            }
+            return false;
         }
         function canPlaceSegAt(seg, segHeight, top) {
-            for (var col = seg.firstCol; col <= seg.lastCol; col++) {
+            for (var col = seg.firstCol; col <= seg.lastCol; col += 1) {
                 for (var _i = 0, _a = colPlacements[col]; _i < _a.length; _i++) {
                     var placement = _a[_i];
                     if (top < placement.bottom && top + segHeight > placement.top) { // collide?
@@ -11703,9 +11674,9 @@ var FullCalendar = (function (exports) {
         }
         var segsByFirstCol = colPlacements.map(extractFirstColSegs); // operates on the sorted cols
         var segsByEachCol = colPlacements.map(function (placements, col) {
-            var segs = extractAllColSegs(placements);
-            segs = resliceDaySegs(segs, cellModels[col].date, col);
-            return segs;
+            var segsForCols = extractAllColSegs(placements);
+            segsForCols = resliceDaySegs(segsForCols, cellModels[col].date, col);
+            return segsForCols;
         });
         return {
             segsByFirstCol: segsByFirstCol,
@@ -11715,7 +11686,7 @@ var FullCalendar = (function (exports) {
             segMarginTops: segMarginTops,
             moreCnts: moreCnts,
             moreTops: moreTops,
-            paddingBottoms: paddingBottoms
+            paddingBottoms: paddingBottoms,
         };
     }
     function extractFirstColSegs(oneColPlacements, col) {
@@ -11737,32 +11708,26 @@ var FullCalendar = (function (exports) {
         return segs;
     }
     function limitByMaxHeight(hiddenCnts, segIsHidden, colPlacements, maxContentHeight) {
-        limitEvents(hiddenCnts, segIsHidden, colPlacements, true, function (placement) {
-            return placement.bottom <= maxContentHeight;
-        });
+        limitEvents(hiddenCnts, segIsHidden, colPlacements, true, function (placement) { return placement.bottom <= maxContentHeight; });
     }
     function limitByMaxEvents(hiddenCnts, segIsHidden, colPlacements, dayMaxEvents) {
-        limitEvents(hiddenCnts, segIsHidden, colPlacements, false, function (placement, levelIndex) {
-            return levelIndex < dayMaxEvents;
-        });
+        limitEvents(hiddenCnts, segIsHidden, colPlacements, false, function (placement, levelIndex) { return levelIndex < dayMaxEvents; });
     }
     function limitByMaxRows(hiddenCnts, segIsHidden, colPlacements, dayMaxEventRows) {
-        limitEvents(hiddenCnts, segIsHidden, colPlacements, true, function (placement, levelIndex) {
-            return levelIndex < dayMaxEventRows;
-        });
+        limitEvents(hiddenCnts, segIsHidden, colPlacements, true, function (placement, levelIndex) { return levelIndex < dayMaxEventRows; });
     }
     /*
     populates the given hiddenCnts/segIsHidden, which are supplied empty.
     TODO: return them instead
     */
-    function limitEvents(hiddenCnts, segIsHidden, colPlacements, moreLinkConsumesLevel, isPlacementInBounds) {
+    function limitEvents(hiddenCnts, segIsHidden, colPlacements, _moreLinkConsumesLevel, isPlacementInBounds) {
         var colCnt = hiddenCnts.length;
         var segIsVisible = {}; // TODO: instead, use segIsHidden with true/false?
         var visibleColPlacements = []; // will mirror colPlacements
-        for (var col = 0; col < colCnt; col++) {
+        for (var col = 0; col < colCnt; col += 1) {
             visibleColPlacements.push([]);
         }
-        for (var col = 0; col < colCnt; col++) {
+        for (var col = 0; col < colCnt; col += 1) {
             var placements = colPlacements[col];
             var level = 0;
             for (var _i = 0, placements_2 = placements; _i < placements_2.length; _i++) {
@@ -11771,11 +11736,11 @@ var FullCalendar = (function (exports) {
                     recordVisible(placement);
                 }
                 else {
-                    recordHidden(placement);
+                    recordHidden(placement, level, _moreLinkConsumesLevel);
                 }
                 // only considered a level if the seg had height
                 if (placement.top !== placement.bottom) {
-                    level++;
+                    level += 1;
                 }
             }
         }
@@ -11784,22 +11749,32 @@ var FullCalendar = (function (exports) {
             var instanceId = seg.eventRange.instance.instanceId;
             if (!segIsVisible[instanceId]) {
                 segIsVisible[instanceId] = true;
-                for (var col = seg.firstCol; col <= seg.lastCol; col++) {
-                    visibleColPlacements[col].push(placement);
+                for (var col = seg.firstCol; col <= seg.lastCol; col += 1) {
+                    var destPlacements = visibleColPlacements[col];
+                    var newPosition = 0;
+                    // insert while keeping top sorted in each column
+                    while (newPosition < destPlacements.length &&
+                        placement.top >= destPlacements[newPosition].top) {
+                        newPosition += 1;
+                    }
+                    destPlacements.splice(newPosition, 0, placement);
                 }
             }
         }
-        function recordHidden(placement) {
+        function recordHidden(placement, currentLevel, moreLinkConsumesLevel) {
             var seg = placement.seg;
             var instanceId = seg.eventRange.instance.instanceId;
             if (!segIsHidden[instanceId]) {
                 segIsHidden[instanceId] = true;
-                for (var col = seg.firstCol; col <= seg.lastCol; col++) {
-                    var hiddenCnt = ++hiddenCnts[col];
-                    if (moreLinkConsumesLevel && hiddenCnt === 1) {
-                        var lastVisiblePlacement = visibleColPlacements[col].pop();
-                        if (lastVisiblePlacement) {
-                            recordHidden(lastVisiblePlacement);
+                for (var col = seg.firstCol; col <= seg.lastCol; col += 1) {
+                    hiddenCnts[col] += 1;
+                    var hiddenCnt = hiddenCnts[col];
+                    if (moreLinkConsumesLevel && hiddenCnt === 1 && currentLevel > 0) {
+                        var doomedLevel = currentLevel - 1;
+                        while (visibleColPlacements[col].length > doomedLevel) {
+                            recordHidden(visibleColPlacements[col].pop(), // removes
+                            visibleColPlacements[col].length, // will execute after the pop. will be the index of the removed placement
+                            false);
                         }
                     }
                 }
@@ -11822,7 +11797,7 @@ var FullCalendar = (function (exports) {
                         def: eventRange.def,
                         ui: __assign(__assign({}, eventRange.ui), { durationEditable: false }),
                         instance: eventRange.instance,
-                        range: slicedRange
+                        range: slicedRange,
                     }, isStart: seg.isStart && slicedRange.start.valueOf() === origRange.start.valueOf(), isEnd: seg.isEnd && slicedRange.end.valueOf() === origRange.end.valueOf() }));
             }
         }
@@ -11841,7 +11816,7 @@ var FullCalendar = (function (exports) {
             _this.state = {
                 framePositions: null,
                 maxContentHeight: null,
-                segHeights: {}
+                segHeights: {},
             };
             return _this;
         }
@@ -11863,10 +11838,10 @@ var FullCalendar = (function (exports) {
                 props.cells.map(function (cell, col) {
                     var normalFgNodes = _this.renderFgSegs(segsByFirstCol[col], segIsHidden, segTops, segMarginTops, selectedInstanceHash, props.todayRange);
                     var mirrorFgNodes = _this.renderFgSegs(mirrorSegsByCol[col], {}, segTops, // use same tops as real rendering
-                    {}, {}, props.todayRange, Boolean(props.eventDrag), Boolean(props.eventResize), false // date-selecting (because mirror is never drawn for date selection)
-                    );
-                    var showWeekNumber = props.showWeekNumbers && col === 0;
-                    return (createElement(TableCell, { key: cell.key, elRef: _this.cellElRefs.createRef(cell.key), innerElRef: _this.frameElRefs.createRef(cell.key) /* FF <td> problem, but okay to use for left/right. TODO: rename prop */, dateProfile: props.dateProfile, date: cell.date, showDayNumber: props.showDayNumbers || showWeekNumber /* for spacing, we need to force day-numbers if week numbers */, showWeekNumber: showWeekNumber, todayRange: props.todayRange, extraHookProps: cell.extraHookProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, moreCnt: moreCnts[col], buildMoreLinkText: props.buildMoreLinkText, onMoreClick: props.onMoreClick, segIsHidden: segIsHidden, moreMarginTop: moreTops[col] /* rename */, segsByEachCol: segsByEachCol[col], fgPaddingBottom: paddingBottoms[col], fgContentElRef: _this.fgElRefs.createRef(cell.key), fgContent: ( // Fragment scopes the keys
+                    {}, {}, props.todayRange, Boolean(props.eventDrag), Boolean(props.eventResize), false);
+                    return (createElement(TableCell, { key: cell.key, elRef: _this.cellElRefs.createRef(cell.key), innerElRef: _this.frameElRefs.createRef(cell.key) /* FF <td> 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, extraHookProps: cell.extraHookProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, moreCnt: moreCnts[col], buildMoreLinkText: props.buildMoreLinkText, onMoreClick: function (arg) {
+                            props.onMoreClick(__assign(__assign({}, arg), { fromCol: col }));
+                        }, segIsHidden: segIsHidden, moreMarginTop: moreTops[col] /* rename */, segsByEachCol: segsByEachCol[col], fgPaddingBottom: paddingBottoms[col], fgContentElRef: _this.fgElRefs.createRef(cell.key), fgContent: ( // Fragment scopes the keys
                         createElement(Fragment, null,
                             createElement(Fragment, null, normalFgNodes),
                             createElement(Fragment, null, mirrorFgNodes))), bgContent: ( // Fragment scopes the keys
@@ -11888,21 +11863,17 @@ var FullCalendar = (function (exports) {
             if (props.eventDrag && props.eventDrag.segs.length) { // messy check
                 return props.eventDrag.segs;
             }
-            else if (props.eventResize && props.eventResize.segs.length) { // messy check
+            if (props.eventResize && props.eventResize.segs.length) { // messy check
                 return props.eventResize.segs;
             }
-            else {
-                return props.dateSelectionSegs;
-            }
+            return props.dateSelectionSegs;
         };
         TableRow.prototype.getMirrorSegs = function () {
             var props = this.props;
             if (props.eventResize && props.eventResize.segs.length) { // messy check
                 return props.eventResize.segs;
             }
-            else {
-                return [];
-            }
+            return [];
         };
         TableRow.prototype.renderFgSegs = function (segs, segIsHidden, // does NOT mean display:hidden
         segTops, segMarginTops, selectedInstanceHash, todayRange, isDragging, isResizing, isDateSelecting) {
@@ -11918,7 +11889,8 @@ var FullCalendar = (function (exports) {
                     var isMirror = isDragging || isResizing || isDateSelecting;
                     var isSelected = selectedInstanceHash[instanceId];
                     var isInvisible = segIsHidden[instanceId] || isSelected;
-                    var isAbsolute = segIsHidden[instanceId] || isMirror || seg.firstCol !== seg.lastCol || !seg.isStart || !seg.isEnd; // TODO: simpler way? NOT DRY
+                    // TODO: simpler way? NOT DRY
+                    var isAbsolute = segIsHidden[instanceId] || isMirror || seg.firstCol !== seg.lastCol || !seg.isStart || !seg.isEnd;
                     var marginTop = void 0;
                     var top_1 = void 0;
                     var left = void 0;
@@ -11940,15 +11912,15 @@ var FullCalendar = (function (exports) {
                     /*
                     known bug: events that are force to be list-item but span multiple days still take up space in later columns
                     */
-                    nodes.push(createElement("div", { className: 'fc-daygrid-event-harness' + (isAbsolute ? ' fc-daygrid-event-harness-abs' : ''), key: instanceId, ref: isMirror ? null : this.segHarnessRefs.createRef(instanceId + ':' + seg.firstCol) /* in print mode when in mult cols, could collide */, style: {
+                    nodes.push(createElement("div", { className: 'fc-daygrid-event-harness' + (isAbsolute ? ' fc-daygrid-event-harness-abs' : ''), key: instanceId, 
+                        // in print mode when in mult cols, could collide
+                        ref: isMirror ? null : this.segHarnessRefs.createRef(instanceId + ':' + seg.firstCol), style: {
                             visibility: isInvisible ? 'hidden' : '',
                             marginTop: marginTop || '',
                             top: top_1 || '',
                             left: left || '',
-                            right: right || ''
-                        } }, 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)))));
+                            right: right || '',
+                        } }, 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))))));
                 }
             }
             return nodes;
@@ -11963,12 +11935,12 @@ var FullCalendar = (function (exports) {
                     var seg = segs_2[_i];
                     var leftRightCss = isRtl ? {
                         right: 0,
-                        left: framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol]
+                        left: framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol],
                     } : {
                         left: 0,
                         right: framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol],
                     };
-                    nodes.push(createElement("div", { key: buildEventRangeKey(seg.eventRange), className: 'fc-daygrid-bg-harness', style: leftRightCss }, fillType === 'bg-event' ?
+                    nodes.push(createElement("div", { key: buildEventRangeKey(seg.eventRange), className: "fc-daygrid-bg-harness", style: leftRightCss }, fillType === 'bg-event' ?
                         createElement(BgEvent, __assign({ seg: seg }, getSegMeta(seg, todayRange))) :
                         renderFill(fillType)));
                 }
@@ -11984,14 +11956,14 @@ var FullCalendar = (function (exports) {
                         var originEl = this.rootElRef.current;
                         this.setState({
                             framePositions: new PositionCache(originEl, frameEls, true, // isHorizontal
-                            false)
+                            false),
                         });
                     }
                 }
                 var limitByContentHeight = props.dayMaxEvents === true || props.dayMaxEventRows === true;
                 this.setState({
                     segHeights: this.computeSegHeights(),
-                    maxContentHeight: limitByContentHeight ? this.computeMaxContentHeight() : null
+                    maxContentHeight: limitByContentHeight ? this.computeMaxContentHeight() : null,
                 });
             }
         };
@@ -12010,8 +11982,11 @@ var FullCalendar = (function (exports) {
         };
         return TableRow;
     }(DateComponent));
+    TableRow.addPropsEquality({
+        onMoreClick: true,
+    });
     TableRow.addStateEquality({
-        segHeights: isPropsEqual
+        segHeights: isPropsEqual,
     });
 
     var PADDING_FROM_VIEWPORT = 10;
@@ -12051,11 +12026,11 @@ var FullCalendar = (function (exports) {
             var props = this.props;
             var classNames = [
                 'fc-popover',
-                theme.getClass('popover')
+                theme.getClass('popover'),
             ].concat(props.extraClassNames || []);
             return (createElement("div", __assign({ className: classNames.join(' ') }, props.extraAttrs, { ref: this.handleRootEl }),
                 createElement("div", { className: 'fc-popover-header ' + theme.getClass('popoverHeader') },
-                    createElement("span", { className: 'fc-popover-title' }, props.title),
+                    createElement("span", { className: "fc-popover-title" }, props.title),
                     createElement("span", { className: 'fc-popover-close ' + theme.getIconClass('close'), onClick: this.handleCloseClick })),
                 createElement("div", { className: 'fc-popover-body ' + theme.getClass('popoverContent') }, props.children)));
         };
@@ -12103,18 +12078,7 @@ var FullCalendar = (function (exports) {
         __extends(MorePopover, _super);
         function MorePopover() {
             var _this = _super !== null && _super.apply(this, arguments) || this;
-            _this.handlePopoverEl = function (popoverEl) {
-                _this.popoverEl = popoverEl;
-                if (popoverEl) {
-                    _this.context.registerInteractiveComponent(_this, {
-                        el: popoverEl,
-                        useEventCenter: false
-                    });
-                }
-                else {
-                    _this.context.unregisterInteractiveComponent(_this);
-                }
-            };
+            _this.rootElRef = createRef();
             return _this;
         }
         MorePopover.prototype.render = function () {
@@ -12122,40 +12086,47 @@ var FullCalendar = (function (exports) {
             var props = this.props;
             var date = props.date, hiddenInstances = props.hiddenInstances, todayRange = props.todayRange, dateProfile = props.dateProfile, selectedInstanceId = props.selectedInstanceId;
             var title = dateEnv.format(date, options.dayPopoverFormat);
-            return (createElement(DayCellRoot, { date: date, dateProfile: dateProfile, todayRange: todayRange, elRef: this.handlePopoverEl }, function (rootElRef, dayClassNames, dataAttrs) { return (createElement(Popover, { elRef: rootElRef, title: title, extraClassNames: ['fc-more-popover'].concat(dayClassNames), extraAttrs: dataAttrs, onClose: props.onCloseClick, alignmentEl: props.alignmentEl, topAlignmentEl: props.topAlignmentEl },
+            return (createElement(DayCellRoot, { date: date, dateProfile: dateProfile, todayRange: todayRange, elRef: this.rootElRef }, function (rootElRef, dayClassNames, dataAttrs) { return (createElement(Popover, { elRef: rootElRef, title: title, extraClassNames: ['fc-more-popover'].concat(dayClassNames), extraAttrs: dataAttrs, onClose: props.onCloseClick, alignmentEl: props.alignmentEl, topAlignmentEl: props.topAlignmentEl },
                 createElement(DayCellContent, { date: date, dateProfile: dateProfile, todayRange: todayRange }, function (innerElRef, innerContent) { return (innerContent &&
-                    createElement("div", { className: 'fc-more-popover-misc', ref: innerElRef }, innerContent)); }),
+                    createElement("div", { className: "fc-more-popover-misc", ref: innerElRef }, innerContent)); }),
                 props.segs.map(function (seg) {
                     var instanceId = seg.eventRange.instance.instanceId;
-                    return (createElement("div", { className: 'fc-daygrid-event-harness', key: instanceId, style: {
-                            visibility: hiddenInstances[instanceId] ? 'hidden' : ''
-                        } }, hasListItemDisplay(seg) ?
-                        createElement(TableListItemEvent, __assign({ seg: seg, isDragging: false, isSelected: instanceId === selectedInstanceId, defaultDisplayEventEnd: false }, getSegMeta(seg, todayRange))) :
-                        createElement(TableBlockEvent, __assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === selectedInstanceId, defaultDisplayEventEnd: false }, getSegMeta(seg, todayRange)))));
+                    return (createElement("div", { className: "fc-daygrid-event-harness", key: instanceId, style: {
+                            visibility: hiddenInstances[instanceId] ? 'hidden' : '',
+                        } }, hasListItemDisplay(seg) ? (createElement(TableListItemEvent, __assign({ seg: seg, isDragging: false, isSelected: instanceId === selectedInstanceId, defaultDisplayEventEnd: false }, getSegMeta(seg, todayRange)))) : (createElement(TableBlockEvent, __assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === selectedInstanceId, defaultDisplayEventEnd: false }, getSegMeta(seg, todayRange))))));
                 }))); }));
         };
-        MorePopover.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) {
+        MorePopover.prototype.positionToHit = function (positionLeft, positionTop, originEl) {
+            var rootEl = this.rootElRef.current;
+            if (!originEl || !rootEl) { // why?
+                return null;
+            }
+            var originRect = originEl.getBoundingClientRect();
+            var elRect = rootEl.getBoundingClientRect();
+            var newOriginLeft = elRect.left - originRect.left;
+            var newOriginTop = elRect.top - originRect.top;
+            var localLeft = positionLeft - newOriginLeft;
+            var localTop = positionTop - newOriginTop;
             var date = this.props.date;
-            if (positionLeft < elWidth && positionTop < elHeight) {
+            if ( // ugly way to detect intersection
+            localLeft >= 0 && localLeft < elRect.width &&
+                localTop >= 0 && localTop < elRect.height) {
                 return {
-                    component: this,
                     dateSpan: {
                         allDay: true,
-                        range: { start: date, end: addDays(date, 1) }
+                        range: { start: date, end: addDays(date, 1) },
                     },
-                    dayEl: this.popoverEl,
-                    rect: {
-                        left: 0,
-                        top: 0,
-                        right: elWidth,
-                        bottom: elHeight
+                    dayEl: rootEl,
+                    relativeRect: {
+                        left: newOriginLeft,
+                        top: newOriginTop,
+                        right: elRect.width,
+                        bottom: elRect.height,
                     },
-                    layer: 1
+                    layer: 1,
                 };
             }
-        };
-        MorePopover.prototype.isPopover = function () {
-            return true; // gross
+            return null;
         };
         return MorePopover;
     }(DateComponent));
@@ -12171,14 +12142,16 @@ var FullCalendar = (function (exports) {
             _this.splitEventDrag = memoize(splitInteractionByRow);
             _this.splitEventResize = memoize(splitInteractionByRow);
             _this.buildBuildMoreLinkText = memoize(buildBuildMoreLinkText);
+            _this.morePopoverRef = createRef();
             _this.rowRefs = new RefMap();
             _this.state = {
-                morePopoverState: null
+                morePopoverState: null,
             };
             _this.handleRootEl = function (rootEl) {
                 _this.rootEl = rootEl;
                 setRef(_this.props.elRef, rootEl);
             };
+            // TODO: bad names "more link click" versus "more click"
             _this.handleMoreLinkClick = function (arg) {
                 var context = _this.context;
                 var dateEnv = context.dateEnv;
@@ -12190,7 +12163,7 @@ var FullCalendar = (function (exports) {
                         start: dateEnv.toDate(range.start),
                         end: dateEnv.toDate(range.end),
                         isStart: seg.isStart,
-                        isEnd: seg.isEnd
+                        isEnd: seg.isEnd,
                     };
                 }
                 if (typeof clickOption === 'function') {
@@ -12200,12 +12173,12 @@ var FullCalendar = (function (exports) {
                         allSegs: arg.allSegs.map(segForPublic),
                         hiddenSegs: arg.hiddenSegs.map(segForPublic),
                         jsEvent: arg.ev,
-                        view: context.viewApi
+                        view: context.viewApi,
                     }); // hack to handle void
                 }
                 if (!clickOption || clickOption === 'popover') {
                     _this.setState({
-                        morePopoverState: __assign(__assign({}, arg), { currentFgEventSegs: _this.props.fgEventSegs })
+                        morePopoverState: __assign(__assign({}, arg), { currentFgEventSegs: _this.props.fgEventSegs, fromRow: arg.fromRow, fromCol: arg.fromCol }),
                     });
                 }
                 else if (typeof clickOption === 'string') { // a view name
@@ -12214,7 +12187,7 @@ var FullCalendar = (function (exports) {
             };
             _this.handleMorePopoverClose = function () {
                 _this.setState({
-                    morePopoverState: null
+                    morePopoverState: null,
                 });
             };
             return _this;
@@ -12243,42 +12216,48 @@ var FullCalendar = (function (exports) {
             var classNames = [
                 'fc-daygrid-body',
                 limitViaBalanced ? 'fc-daygrid-body-balanced' : 'fc-daygrid-body-unbalanced',
-                expandRows ? '' : 'fc-daygrid-body-natural' // will height of one row depend on the others?
+                expandRows ? '' : 'fc-daygrid-body-natural',
             ];
             return (createElement("div", { className: classNames.join(' '), ref: this.handleRootEl, style: {
                     // these props are important to give this wrapper correct dimensions for interactions
                     // TODO: if we set it here, can we avoid giving to inner tables?
                     width: props.clientWidth,
-                    minWidth: props.tableMinWidth
+                    minWidth: props.tableMinWidth,
                 } },
-                createElement(NowTimer, { unit: 'day' }, function (nowDate, todayRange) { return (createElement(Fragment, null,
-                    createElement("table", { className: 'fc-scrollgrid-sync-table', style: {
+                createElement(NowTimer, { unit: "day" }, function (nowDate, todayRange) { return (createElement(Fragment, null,
+                    createElement("table", { className: "fc-scrollgrid-sync-table", style: {
                             width: props.clientWidth,
                             minWidth: props.tableMinWidth,
-                            height: expandRows ? props.clientHeight : ''
+                            height: expandRows ? props.clientHeight : '',
                         } },
                         props.colGroupNode,
                         createElement("tbody", null, props.cells.map(function (cells, row) { return (createElement(TableRow, { ref: _this.rowRefs.createRef(row), key: cells.length
                                 ? cells[0].date.toISOString() /* best? or put key on cell? or use diff formatter? */
                                 : row // in case there are no cells (like when resource view is loading)
-                            , 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, buildMoreLinkText: buildMoreLinkText, onMoreClick: _this.handleMoreLinkClick })); }))),
-                    (!props.forPrint && morePopoverState && morePopoverState.currentFgEventSegs === props.fgEventSegs) && // clear popover on event mod
-                        createElement(MorePopover, { date: morePopoverState.date, dateProfile: dateProfile, segs: morePopoverState.allSegs, alignmentEl: morePopoverState.dayEl, topAlignmentEl: rowCnt === 1 ? props.headerAlignElRef.current : null, onCloseClick: _this.handleMorePopoverClose, selectedInstanceId: props.eventSelection, hiddenInstances: // yuck
-                            (props.eventDrag ? props.eventDrag.affectedInstances : null) ||
-                                (props.eventResize ? props.eventResize.affectedInstances : null) ||
-                                {}, todayRange: todayRange }))); })));
+                            , 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, buildMoreLinkText: buildMoreLinkText, onMoreClick: function (arg) {
+                                _this.handleMoreLinkClick(__assign(__assign({}, arg), { fromRow: row }));
+                            } })); }))),
+                    (!props.forPrint && morePopoverState && morePopoverState.currentFgEventSegs === props.fgEventSegs) && (createElement(MorePopover, { ref: _this.morePopoverRef, date: morePopoverState.date, dateProfile: dateProfile, segs: morePopoverState.allSegs, alignmentEl: morePopoverState.dayEl, topAlignmentEl: rowCnt === 1 ? props.headerAlignElRef.current : null, onCloseClick: _this.handleMorePopoverClose, selectedInstanceId: props.eventSelection, hiddenInstances: // yuck
+                        (props.eventDrag ? props.eventDrag.affectedInstances : null) ||
+                            (props.eventResize ? props.eventResize.affectedInstances : null) ||
+                            {}, todayRange: todayRange })))); })));
         };
         // Hit System
         // ----------------------------------------------------------------------------------------------------
         Table.prototype.prepareHits = function () {
             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
-            false, true // vertical
-            );
+            false, true);
             this.colPositions = new PositionCache(this.rootEl, this.rowRefs.currentMap[0].getCellEls(), // cell els in first row
             true, // horizontal
             false);
         };
         Table.prototype.positionToHit = function (leftPosition, topPosition) {
+            var morePopover = this.morePopoverRef.current;
+            var morePopoverHit = morePopover ? morePopover.positionToHit(leftPosition, topPosition, this.rootEl) : null;
+            var morePopoverState = this.state.morePopoverState;
+            if (morePopoverHit) {
+                return __assign({ row: morePopoverState.fromRow, col: morePopoverState.fromCol }, morePopoverHit);
+            }
             var _a = this, colPositions = _a.colPositions, rowPositions = _a.rowPositions;
             var col = colPositions.leftToIndex(leftPosition);
             var row = rowPositions.topToIndex(topPosition);
@@ -12288,17 +12267,18 @@ var FullCalendar = (function (exports) {
                     col: col,
                     dateSpan: {
                         range: this.getCellRange(row, col),
-                        allDay: true
+                        allDay: true,
                     },
                     dayEl: this.getCellEl(row, col),
                     relativeRect: {
                         left: colPositions.lefts[col],
                         right: colPositions.rights[col],
                         top: rowPositions.tops[row],
-                        bottom: rowPositions.bottoms[row]
-                    }
+                        bottom: rowPositions.bottoms[row],
+                    },
                 };
             }
+            return null;
         };
         Table.prototype.getCellEl = function (row, col) {
             return this.rowRefs.currentMap[row].getCellEls()[col]; // TODO: not optimal
@@ -12314,16 +12294,25 @@ var FullCalendar = (function (exports) {
         if (typeof moreLinkTextInput === 'function') {
             return moreLinkTextInput;
         }
-        else {
-            return function (num) {
-                return "+" + num + " " + moreLinkTextInput;
-            };
-        }
+        return function (num) { return "+" + num + " " + moreLinkTextInput; };
     }
     function isSegAllDay(seg) {
         return seg.eventRange.def.allDay;
     }
 
+    var DayTableSlicer = /** @class */ (function (_super) {
+        __extends(DayTableSlicer, _super);
+        function DayTableSlicer() {
+            var _this = _super !== null && _super.apply(this, arguments) || this;
+            _this.forceDayIfListItem = true;
+            return _this;
+        }
+        DayTableSlicer.prototype.sliceRange = function (dateRange, dayTableModel) {
+            return dayTableModel.sliceRange(dateRange);
+        };
+        return DayTableSlicer;
+    }(Slicer));
+
     var DayTable = /** @class */ (function (_super) {
         __extends(DayTable, _super);
         function DayTable() {
@@ -12358,26 +12347,15 @@ var FullCalendar = (function (exports) {
                         left: rawHit.relativeRect.left,
                         right: rawHit.relativeRect.right,
                         top: rawHit.relativeRect.top,
-                        bottom: rawHit.relativeRect.bottom
+                        bottom: rawHit.relativeRect.bottom,
                     },
-                    layer: 0
+                    layer: 0,
                 };
             }
+            return null;
         };
         return DayTable;
     }(DateComponent));
-    var DayTableSlicer = /** @class */ (function (_super) {
-        __extends(DayTableSlicer, _super);
-        function DayTableSlicer() {
-            var _this = _super !== null && _super.apply(this, arguments) || this;
-            _this.forceDayIfListItem = true;
-            return _this;
-        }
-        DayTableSlicer.prototype.sliceRange = function (dateRange, dayTableModel) {
-            return dayTableModel.sliceRange(dateRange);
-        };
-        return DayTableSlicer;
-    }(Slicer));
 
     var DayTableView = /** @class */ (function (_super) {
         __extends(DayTableView, _super);
@@ -12393,8 +12371,7 @@ var FullCalendar = (function (exports) {
             var _a = this.context, options = _a.options, dateProfileGenerator = _a.dateProfileGenerator;
             var props = this.props;
             var dayTableModel = this.buildDayTableModel(props.dateProfile, dateProfileGenerator);
-            var headerContent = options.dayHeaders &&
-                createElement(DayHeader, { ref: this.headerRef, dateProfile: props.dateProfile, dates: dayTableModel.headerDates, datesRepDistinctDays: dayTableModel.rowCnt === 1 });
+            var headerContent = options.dayHeaders && (createElement(DayHeader, { ref: this.headerRef, dateProfile: props.dateProfile, dates: dayTableModel.headerDates, datesRepDistinctDays: dayTableModel.rowCnt === 1 }));
             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 })); };
             return options.dayMinWidth
                 ? this.renderHScrollLayout(headerContent, bodyContent, dayTableModel.colCnt, options.dayMinWidth)
@@ -12440,7 +12417,7 @@ var FullCalendar = (function (exports) {
         return TableDateProfileGenerator;
     }(DateProfileGenerator));
 
-    var OPTION_REFINERS = {
+    var OPTION_REFINERS$1 = {
         moreLinkClick: identity,
         moreLinkClassNames: identity,
         moreLinkContent: identity,
@@ -12450,27 +12427,27 @@ var FullCalendar = (function (exports) {
 
     var dayGridPlugin = createPlugin({
         initialView: 'dayGridMonth',
-        optionRefiners: OPTION_REFINERS,
+        optionRefiners: OPTION_REFINERS$1,
         views: {
             dayGrid: {
                 component: DayTableView,
-                dateProfileGeneratorClass: TableDateProfileGenerator
+                dateProfileGeneratorClass: TableDateProfileGenerator,
             },
             dayGridDay: {
                 type: 'dayGrid',
-                duration: { days: 1 }
+                duration: { days: 1 },
             },
             dayGridWeek: {
                 type: 'dayGrid',
-                duration: { weeks: 1 }
+                duration: { weeks: 1 },
             },
             dayGridMonth: {
                 type: 'dayGrid',
                 duration: { months: 1 },
                 monthMode: true,
-                fixedWeekCount: true
-            }
-        }
+                fixedWeekCount: true,
+            },
+        },
     });
 
     var AllDaySplitter = /** @class */ (function (_super) {
@@ -12481,244 +12458,75 @@ var FullCalendar = (function (exports) {
         AllDaySplitter.prototype.getKeyInfo = function () {
             return {
                 allDay: {},
-                timed: {}
+                timed: {},
             };
         };
         AllDaySplitter.prototype.getKeysForDateSpan = function (dateSpan) {
             if (dateSpan.allDay) {
                 return ['allDay'];
             }
-            else {
-                return ['timed'];
-            }
+            return ['timed'];
         };
         AllDaySplitter.prototype.getKeysForEventDef = function (eventDef) {
             if (!eventDef.allDay) {
                 return ['timed'];
             }
-            else if (hasBgRendering(eventDef)) {
+            if (hasBgRendering(eventDef)) {
                 return ['timed', 'allDay'];
             }
-            else {
-                return ['allDay'];
-            }
+            return ['allDay'];
         };
         return AllDaySplitter;
     }(Splitter));
 
-    var TimeColsSlatsCoords = /** @class */ (function () {
-        function TimeColsSlatsCoords(positions, dateProfile, slatMetas) {
-            this.positions = positions;
-            this.dateProfile = dateProfile;
-            this.slatMetas = slatMetas;
-        }
-        TimeColsSlatsCoords.prototype.safeComputeTop = function (date) {
-            var dateProfile = this.dateProfile;
-            if (rangeContainsMarker(dateProfile.currentRange, date)) {
-                var startOfDayDate = startOfDay(date);
-                var timeMs = date.valueOf() - startOfDayDate.valueOf();
-                if (timeMs >= asRoughMs(dateProfile.slotMinTime) &&
-                    timeMs < asRoughMs(dateProfile.slotMaxTime)) {
-                    return this.computeTimeTop(createDuration(timeMs));
-                }
-            }
-        };
-        // Computes the top coordinate, relative to the bounds of the grid, of the given date.
-        // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight.
-        TimeColsSlatsCoords.prototype.computeDateTop = function (when, startOfDayDate) {
-            if (!startOfDayDate) {
-                startOfDayDate = startOfDay(when);
+    var DEFAULT_SLAT_LABEL_FORMAT = createFormatter({
+        hour: 'numeric',
+        minute: '2-digit',
+        omitZeroMinute: true,
+        meridiem: 'short',
+    });
+    function TimeColsAxisCell(props) {
+        var classNames = [
+            'fc-timegrid-slot',
+            'fc-timegrid-slot-label',
+            props.isLabeled ? 'fc-scrollgrid-shrink' : 'fc-timegrid-slot-minor',
+        ];
+        return (createElement(ViewContextType.Consumer, null, function (context) {
+            if (!props.isLabeled) {
+                return (createElement("td", { className: classNames.join(' '), "data-time": props.isoTimeStr }));
             }
-            return this.computeTimeTop(createDuration(when.valueOf() - startOfDayDate.valueOf()));
-        };
-        // Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration).
-        // This is a makeshify way to compute the time-top. Assumes all slatMetas dates are uniform.
-        // Eventually allow computation with arbirary slat dates.
-        TimeColsSlatsCoords.prototype.computeTimeTop = function (duration) {
-            var _a = this, positions = _a.positions, dateProfile = _a.dateProfile, slatMetas = _a.slatMetas;
-            var len = positions.els.length;
-            var slotDurationMs = slatMetas[1].date.valueOf() - slatMetas[0].date.valueOf(); // we assume dates are uniform
-            var slatCoverage = (duration.milliseconds - asRoughMs(dateProfile.slotMinTime)) / slotDurationMs; // floating-point value of # of slots covered
-            var slatIndex;
-            var slatRemainder;
-            // compute a floating-point number for how many slats should be progressed through.
-            // from 0 to number of slats (inclusive)
-            // constrained because slotMinTime/slotMaxTime might be customized.
-            slatCoverage = Math.max(0, slatCoverage);
-            slatCoverage = Math.min(len, slatCoverage);
-            // an integer index of the furthest whole slat
-            // from 0 to number slats (*exclusive*, so len-1)
-            slatIndex = Math.floor(slatCoverage);
-            slatIndex = Math.min(slatIndex, len - 1);
-            // how much further through the slatIndex slat (from 0.0-1.0) must be covered in addition.
-            // could be 1.0 if slatCoverage is covering *all* the slots
-            slatRemainder = slatCoverage - slatIndex;
-            return positions.tops[slatIndex] +
-                positions.getHeight(slatIndex) * slatRemainder;
-        };
-        return TimeColsSlatsCoords;
-    }());
+            var dateEnv = context.dateEnv, options = context.options, viewApi = context.viewApi;
+            var labelFormat = // TODO: fully pre-parse
+             options.slotLabelFormat == null ? DEFAULT_SLAT_LABEL_FORMAT :
+                Array.isArray(options.slotLabelFormat) ? createFormatter(options.slotLabelFormat[0]) :
+                    createFormatter(options.slotLabelFormat);
+            var hookProps = {
+                level: 0,
+                time: props.time,
+                date: dateEnv.toDate(props.date),
+                view: viewApi,
+                text: dateEnv.format(props.date, labelFormat),
+            };
+            return (createElement(RenderHook, { hookProps: hookProps, classNames: options.slotLabelClassNames, content: options.slotLabelContent, defaultContent: renderInnerContent$3, 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 },
+                createElement("div", { className: "fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame" },
+                    createElement("div", { className: "fc-timegrid-slot-label-cushion fc-scrollgrid-shrink-cushion", ref: innerElRef }, innerContent)))); }));
+        }));
+    }
+    function renderInnerContent$3(props) {
+        return props.text;
+    }
 
-    // potential nice values for the slot-duration and interval-duration
-    // from largest to smallest
-    var STOCK_SUB_DURATIONS = [
-        { hours: 1 },
-        { minutes: 30 },
-        { minutes: 15 },
-        { seconds: 30 },
-        { seconds: 15 }
-    ];
-    /*
-    for the horizontal "slats" that run width-wise. Has a time axis on a side. Depends on RTL.
-    */
-    var TimeColsSlats = /** @class */ (function (_super) {
-        __extends(TimeColsSlats, _super);
-        function TimeColsSlats() {
-            var _this = _super !== null && _super.apply(this, arguments) || this;
-            _this.rootElRef = createRef();
-            _this.slatElRefs = new RefMap();
-            return _this;
-        }
-        TimeColsSlats.prototype.render = function () {
-            var _a = this, props = _a.props, context = _a.context;
-            return (createElement("div", { className: 'fc-timegrid-slots', ref: this.rootElRef },
-                createElement("table", { className: context.theme.getClass('table'), style: {
-                        minWidth: props.tableMinWidth,
-                        width: props.clientWidth,
-                        height: props.minHeight
-                    } },
-                    props.tableColGroupNode /* relies on there only being a single <col> for the axis */,
-                    createElement(TimeColsSlatsBody, { slatElRefs: this.slatElRefs, axis: props.axis, slatMetas: props.slatMetas }))));
-        };
-        TimeColsSlats.prototype.componentDidMount = function () {
-            this.updateSizing();
-        };
-        TimeColsSlats.prototype.componentDidUpdate = function () {
-            this.updateSizing();
-        };
-        TimeColsSlats.prototype.componentWillUnmount = function () {
-            if (this.props.onCoords) {
-                this.props.onCoords(null);
-            }
-        };
-        TimeColsSlats.prototype.updateSizing = function () {
-            var props = this.props;
-            if (props.onCoords &&
-                props.clientWidth !== null // means sizing has stabilized
-            ) {
-                var rootEl = this.rootElRef.current;
-                if (rootEl.offsetHeight) { // not hidden by css
-                    props.onCoords(new TimeColsSlatsCoords(new PositionCache(this.rootElRef.current, collectSlatEls(this.slatElRefs.currentMap, props.slatMetas), false, true // vertical
-                    ), this.props.dateProfile, props.slatMetas));
-                }
-            }
-        };
-        return TimeColsSlats;
-    }(BaseComponent));
-    function collectSlatEls(elMap, slatMetas) {
-        return slatMetas.map(function (slatMeta) { return elMap[slatMeta.key]; });
-    }
-    var TimeColsSlatsBody = /** @class */ (function (_super) {
-        __extends(TimeColsSlatsBody, _super);
-        function TimeColsSlatsBody() {
+    var TimeBodyAxis = /** @class */ (function (_super) {
+        __extends(TimeBodyAxis, _super);
+        function TimeBodyAxis() {
             return _super !== null && _super.apply(this, arguments) || this;
         }
-        TimeColsSlatsBody.prototype.render = function () {
-            var _a = this, props = _a.props, context = _a.context;
-            var options = context.options;
-            var slatElRefs = props.slatElRefs;
-            return (createElement("tbody", null, props.slatMetas.map(function (slatMeta, i) {
-                var hookProps = {
-                    time: slatMeta.time,
-                    date: context.dateEnv.toDate(slatMeta.date),
-                    view: context.viewApi
-                };
-                var classNames = [
-                    'fc-timegrid-slot',
-                    'fc-timegrid-slot-lane',
-                    slatMeta.isLabeled ? '' : 'fc-timegrid-slot-minor'
-                ];
-                return (createElement("tr", { key: slatMeta.key, ref: slatElRefs.createRef(slatMeta.key) },
-                    props.axis &&
-                        createElement(TimeColsAxisCell, __assign({}, slatMeta)),
-                    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)); })));
-            })));
+        TimeBodyAxis.prototype.render = function () {
+            return this.props.slatMetas.map(function (slatMeta) { return (createElement("tr", { key: slatMeta.key },
+                createElement(TimeColsAxisCell, __assign({}, slatMeta)))); });
         };
-        return TimeColsSlatsBody;
+        return TimeBodyAxis;
     }(BaseComponent));
-    var DEFAULT_SLAT_LABEL_FORMAT = createFormatter({
-        hour: 'numeric',
-        minute: '2-digit',
-        omitZeroMinute: true,
-        meridiem: 'short'
-    });
-    function TimeColsAxisCell(props) {
-        var classNames = [
-            'fc-timegrid-slot',
-            'fc-timegrid-slot-label',
-            props.isLabeled ? 'fc-scrollgrid-shrink' : 'fc-timegrid-slot-minor'
-        ];
-        return (createElement(ViewContextType.Consumer, null, function (context) {
-            if (!props.isLabeled) {
-                return (createElement("td", { className: classNames.join(' '), "data-time": props.isoTimeStr }));
-            }
-            else {
-                var dateEnv = context.dateEnv, options = context.options, viewApi = context.viewApi;
-                var labelFormat = // TODO: fully pre-parse
-                 options.slotLabelFormat == null ? DEFAULT_SLAT_LABEL_FORMAT :
-                    Array.isArray(options.slotLabelFormat) ? createFormatter(options.slotLabelFormat[0]) :
-                        createFormatter(options.slotLabelFormat);
-                var hookProps = {
-                    time: props.time,
-                    date: dateEnv.toDate(props.date),
-                    view: viewApi,
-                    text: dateEnv.format(props.date, labelFormat)
-                };
-                return (createElement(RenderHook, { hookProps: hookProps, classNames: options.slotLabelClassNames, content: options.slotLabelContent, defaultContent: renderInnerContent$3, 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 },
-                    createElement("div", { className: 'fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame' },
-                        createElement("div", { className: 'fc-timegrid-slot-label-cushion fc-scrollgrid-shrink-cushion', ref: innerElRef }, innerContent)))); }));
-            }
-        }));
-    }
-    function renderInnerContent$3(props) {
-        return props.text;
-    }
-    function buildSlatMetas(slotMinTime, slotMaxTime, explicitLabelInterval, slotDuration, dateEnv) {
-        var dayStart = new Date(0);
-        var slatTime = slotMinTime;
-        var slatIterator = createDuration(0);
-        var labelInterval = explicitLabelInterval || computeLabelInterval(slotDuration);
-        var metas = [];
-        while (asRoughMs(slatTime) < asRoughMs(slotMaxTime)) {
-            var date = dateEnv.add(dayStart, slatTime);
-            var isLabeled = wholeDivideDurations(slatIterator, labelInterval) !== null;
-            metas.push({
-                date: date,
-                time: slatTime,
-                key: date.toISOString(),
-                isoTimeStr: formatIsoTimeString(date),
-                isLabeled: isLabeled
-            });
-            slatTime = addDurations(slatTime, slotDuration);
-            slatIterator = addDurations(slatIterator, slotDuration);
-        }
-        return metas;
-    }
-    // Computes an automatic value for slotLabelInterval
-    function computeLabelInterval(slotDuration) {
-        var i;
-        var labelInterval;
-        var slotsPerLabel;
-        // find the smallest stock label interval that results in more than one slots-per-label
-        for (i = STOCK_SUB_DURATIONS.length - 1; i >= 0; i--) {
-            labelInterval = createDuration(STOCK_SUB_DURATIONS[i]);
-            slotsPerLabel = wholeDivideDurations(labelInterval, slotDuration);
-            if (slotsPerLabel !== null && slotsPerLabel > 1) {
-                return labelInterval;
-            }
-        }
-        return slotDuration; // fall back
-    }
 
     var DEFAULT_WEEK_NUM_FORMAT$1 = createFormatter({ week: 'short' });
     var AUTO_ALL_DAY_MAX_EVENT_ROWS = 5;
@@ -12731,7 +12539,7 @@ var FullCalendar = (function (exports) {
             _this.rootElRef = createRef();
             _this.scrollerElRef = createRef();
             _this.state = {
-                slatCoords: null
+                slatCoords: null,
             };
             _this.handleScrollTopRequest = function (scrollTop) {
                 var scrollerEl = _this.scrollerElRef.current;
@@ -12741,7 +12549,7 @@ var FullCalendar = (function (exports) {
             };
             /* Header Render Methods
             ------------------------------------------------------------------------------------------------------------------*/
-            _this.renderHeadAxis = function (frameHeight) {
+            _this.renderHeadAxis = function (rowKey, frameHeight) {
                 if (frameHeight === void 0) { frameHeight = ''; }
                 var options = _this.context.options;
                 var dateProfile = _this.props.dateProfile;
@@ -12750,16 +12558,16 @@ var FullCalendar = (function (exports) {
                 var navLinkAttrs = (options.navLinks && dayCnt === 1) // only do in day views (to avoid doing in week views that dont need it)
                     ? { 'data-navlink': buildNavLinkData(range.start, 'week'), tabIndex: 0 }
                     : {};
-                if (options.weekNumbers) {
+                if (options.weekNumbers && rowKey === 'day') {
                     return (createElement(WeekNumberRoot, { date: range.start, defaultFormat: DEFAULT_WEEK_NUM_FORMAT$1 }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("th", { ref: rootElRef, className: [
                             'fc-timegrid-axis',
-                            'fc-scrollgrid-shrink'
+                            'fc-scrollgrid-shrink',
                         ].concat(classNames).join(' ') },
-                        createElement("div", { className: 'fc-timegrid-axis-frame fc-scrollgrid-shrink-frame fc-timegrid-axis-frame-liquid', style: { height: frameHeight } },
-                            createElement("a", __assign({ ref: innerElRef, className: 'fc-timegrid-axis-cushion fc-scrollgrid-shrink-cushion' }, navLinkAttrs), innerContent)))); }));
+                        createElement("div", { className: "fc-timegrid-axis-frame fc-scrollgrid-shrink-frame fc-timegrid-axis-frame-liquid", style: { height: frameHeight } },
+                            createElement("a", __assign({ ref: innerElRef, className: "fc-timegrid-axis-cushion fc-scrollgrid-shrink-cushion fc-scrollgrid-sync-inner" }, navLinkAttrs), innerContent)))); }));
                 }
-                return (createElement("th", { className: 'fc-timegrid-axis' },
-                    createElement("div", { className: 'fc-timegrid-axis-frame', style: { height: frameHeight } })));
+                return (createElement("th", { className: "fc-timegrid-axis" },
+                    createElement("div", { className: "fc-timegrid-axis-frame", style: { height: frameHeight } })));
             };
             /* Table Component Render Methods
             ------------------------------------------------------------------------------------------------------------------*/
@@ -12769,16 +12577,16 @@ var FullCalendar = (function (exports) {
                 var _a = _this.context, options = _a.options, viewApi = _a.viewApi;
                 var hookProps = {
                     text: options.allDayText,
-                    view: viewApi
+                    view: viewApi,
                 };
                 return (
                 // TODO: make reusable hook. used in list view too
                 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: [
                         'fc-timegrid-axis',
-                        'fc-scrollgrid-shrink'
+                        'fc-scrollgrid-shrink',
                     ].concat(classNames).join(' ') },
                     createElement("div", { className: 'fc-timegrid-axis-frame fc-scrollgrid-shrink-frame' + (rowHeight == null ? ' fc-timegrid-axis-frame-liquid' : ''), style: { height: rowHeight } },
-                        createElement("span", { className: 'fc-timegrid-axis-cushion fc-scrollgrid-shrink-cushion', ref: innerElRef }, innerContent)))); }));
+                        createElement("span", { className: "fc-timegrid-axis-cushion fc-scrollgrid-shrink-cushion fc-scrollgrid-sync-inner", ref: innerElRef }, innerContent)))); }));
             };
             _this.handleSlatCoords = function (slatCoords) {
                 _this.setState({ slatCoords: slatCoords });
@@ -12799,22 +12607,22 @@ var FullCalendar = (function (exports) {
                     chunk: {
                         elRef: this.headerElRef,
                         tableClassName: 'fc-col-header',
-                        rowContent: headerRowContent
-                    }
+                        rowContent: headerRowContent,
+                    },
                 });
             }
             if (allDayContent) {
                 sections.push({
                     type: 'body',
                     key: 'all-day',
-                    chunk: { content: allDayContent }
+                    chunk: { content: allDayContent },
                 });
                 sections.push({
                     type: 'body',
                     key: 'all-day-divider',
                     outerContent: ( // TODO: rename to cellContent so don't need to define <tr>?
-                    createElement("tr", { className: 'fc-scrollgrid-section' },
-                        createElement("td", { className: 'fc-timegrid-divider ' + context.theme.getClass('tableCellShaded') })))
+                    createElement("tr", { className: "fc-scrollgrid-section" },
+                        createElement("td", { className: 'fc-timegrid-divider ' + context.theme.getClass('tableCellShaded') }))),
                 });
             }
             sections.push({
@@ -12824,14 +12632,13 @@ var FullCalendar = (function (exports) {
                 expandRows: Boolean(context.options.expandRows),
                 chunk: {
                     scrollerElRef: this.scrollerElRef,
-                    content: timeContent
-                }
+                    content: timeContent,
+                },
             });
             return (createElement(ViewRoot, { viewSpec: context.viewSpec, elRef: this.rootElRef }, function (rootElRef, classNames) { return (createElement("div", { className: ['fc-timegrid'].concat(classNames).join(' '), ref: rootElRef },
                 createElement(SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, cols: [{ width: 'shrink' }], sections: sections }))); }));
         };
-        TimeColsView.prototype.renderHScrollLayout = function (headerRowContent, allDayContent, timeContent, colCnt, dayMinWidth, slatMetas, slatCoords // yuck
-        ) {
+        TimeColsView.prototype.renderHScrollLayout = function (headerRowContent, allDayContent, timeContent, colCnt, dayMinWidth, slatMetas, slatCoords) {
             var _this = this;
             var ScrollGrid = this.context.pluginHooks.scrollGridImpl;
             if (!ScrollGrid) {
@@ -12850,15 +12657,15 @@ var FullCalendar = (function (exports) {
                     chunks: [
                         {
                             key: 'axis',
-                            rowContent: function (arg) { return (createElement("tr", null, _this.renderHeadAxis(arg.rowSyncHeights[0]))); }
+                            rowContent: function (arg) { return (createElement("tr", null, _this.renderHeadAxis('day', arg.rowSyncHeights[0]))); },
                         },
                         {
                             key: 'cols',
                             elRef: this.headerElRef,
                             tableClassName: 'fc-col-header',
-                            rowContent: headerRowContent
-                        }
-                    ]
+                            rowContent: headerRowContent,
+                        },
+                    ],
                 });
             }
             if (allDayContent) {
@@ -12873,16 +12680,16 @@ var FullCalendar = (function (exports) {
                         },
                         {
                             key: 'cols',
-                            content: allDayContent
-                        }
-                    ]
+                            content: allDayContent,
+                        },
+                    ],
                 });
                 sections.push({
                     key: 'all-day-divider',
                     type: 'body',
                     outerContent: ( // TODO: rename to cellContent so don't need to define <tr>?
-                    createElement("tr", { className: 'fc-scrollgrid-section' },
-                        createElement("td", { colSpan: 2, className: 'fc-timegrid-divider ' + context.theme.getClass('tableCellShaded') })))
+                    createElement("tr", { className: "fc-scrollgrid-section" },
+                        createElement("td", { colSpan: 2, className: 'fc-timegrid-divider ' + context.theme.getClass('tableCellShaded') }))),
                 });
             }
             var isNowIndicator = context.options.nowIndicator;
@@ -12894,30 +12701,30 @@ var FullCalendar = (function (exports) {
                 chunks: [
                     {
                         key: 'axis',
-                        content: function (arg) {
-                            // TODO: make this now-indicator arrow more DRY with TimeColsContent
-                            return (createElement("div", { className: 'fc-timegrid-axis-chunk' },
-                                createElement("table", null,
-                                    arg.tableColGroupNode,
-                                    createElement("tbody", null,
-                                        createElement(TimeBodyAxis, { slatMetas: slatMetas }))),
-                                createElement("div", { className: 'fc-timegrid-now-indicator-container' },
-                                    createElement(NowTimer, { unit: isNowIndicator ? 'minute' : 'day' /* hacky */ }, function (nowDate) {
-                                        var nowIndicatorTop = isNowIndicator &&
-                                            slatCoords &&
-                                            slatCoords.safeComputeTop(nowDate); // might return void
-                                        if (typeof nowIndicatorTop === 'number') {
-                                            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)); }));
-                                        }
-                                    }))));
-                        }
+                        content: function (arg) { return (
+                        // TODO: make this now-indicator arrow more DRY with TimeColsContent
+                        createElement("div", { className: "fc-timegrid-axis-chunk" },
+                            createElement("table", { style: { height: arg.expandRows ? arg.clientHeight : '' } },
+                                arg.tableColGroupNode,
+                                createElement("tbody", null,
+                                    createElement(TimeBodyAxis, { slatMetas: slatMetas }))),
+                            createElement("div", { className: "fc-timegrid-now-indicator-container" },
+                                createElement(NowTimer, { unit: isNowIndicator ? 'minute' : 'day' /* hacky */ }, function (nowDate) {
+                                    var nowIndicatorTop = isNowIndicator &&
+                                        slatCoords &&
+                                        slatCoords.safeComputeTop(nowDate); // might return void
+                                    if (typeof nowIndicatorTop === 'number') {
+                                        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)); }));
+                                    }
+                                    return null;
+                                })))); },
                     },
                     {
                         key: 'cols',
                         scrollerElRef: this.scrollerElRef,
-                        content: timeContent
-                    }
-                ]
+                        content: timeContent,
+                    },
+                ],
             });
             if (stickyFooterScrollbar) {
                 sections.push({
@@ -12927,19 +12734,19 @@ var FullCalendar = (function (exports) {
                     chunks: [
                         {
                             key: 'axis',
-                            content: renderScrollShim
+                            content: renderScrollShim,
                         },
                         {
                             key: 'cols',
-                            content: renderScrollShim
-                        }
-                    ]
+                            content: renderScrollShim,
+                        },
+                    ],
                 });
             }
             return (createElement(ViewRoot, { viewSpec: context.viewSpec, elRef: this.rootElRef }, function (rootElRef, classNames) { return (createElement("div", { className: ['fc-timegrid'].concat(classNames).join(' '), ref: rootElRef },
                 createElement(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, colGroups: [
                         { width: 'shrink', cols: [{ width: 'shrink' }] },
-                        { cols: [{ span: colCnt, minWidth: dayMinWidth }] }
+                        { cols: [{ span: colCnt, minWidth: dayMinWidth }] },
                     ], sections: sections }))); }));
         };
         /* Dimensions
@@ -12957,26 +12764,147 @@ var FullCalendar = (function (exports) {
     function renderAllDayInner(hookProps) {
         return hookProps.text;
     }
-    var TimeBodyAxis = /** @class */ (function (_super) {
-        __extends(TimeBodyAxis, _super);
-        function TimeBodyAxis() {
+
+    var TimeColsSlatsCoords = /** @class */ (function () {
+        function TimeColsSlatsCoords(positions, dateProfile, slotDuration) {
+            this.positions = positions;
+            this.dateProfile = dateProfile;
+            this.slotDuration = slotDuration;
+        }
+        TimeColsSlatsCoords.prototype.safeComputeTop = function (date) {
+            var dateProfile = this.dateProfile;
+            if (rangeContainsMarker(dateProfile.currentRange, date)) {
+                var startOfDayDate = startOfDay(date);
+                var timeMs = date.valueOf() - startOfDayDate.valueOf();
+                if (timeMs >= asRoughMs(dateProfile.slotMinTime) &&
+                    timeMs < asRoughMs(dateProfile.slotMaxTime)) {
+                    return this.computeTimeTop(createDuration(timeMs));
+                }
+            }
+            return null;
+        };
+        // Computes the top coordinate, relative to the bounds of the grid, of the given date.
+        // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight.
+        TimeColsSlatsCoords.prototype.computeDateTop = function (when, startOfDayDate) {
+            if (!startOfDayDate) {
+                startOfDayDate = startOfDay(when);
+            }
+            return this.computeTimeTop(createDuration(when.valueOf() - startOfDayDate.valueOf()));
+        };
+        // Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration).
+        // This is a makeshify way to compute the time-top. Assumes all slatMetas dates are uniform.
+        // Eventually allow computation with arbirary slat dates.
+        TimeColsSlatsCoords.prototype.computeTimeTop = function (duration) {
+            var _a = this, positions = _a.positions, dateProfile = _a.dateProfile;
+            var len = positions.els.length;
+            // floating-point value of # of slots covered
+            var slatCoverage = (duration.milliseconds - asRoughMs(dateProfile.slotMinTime)) / asRoughMs(this.slotDuration);
+            var slatIndex;
+            var slatRemainder;
+            // compute a floating-point number for how many slats should be progressed through.
+            // from 0 to number of slats (inclusive)
+            // constrained because slotMinTime/slotMaxTime might be customized.
+            slatCoverage = Math.max(0, slatCoverage);
+            slatCoverage = Math.min(len, slatCoverage);
+            // an integer index of the furthest whole slat
+            // from 0 to number slats (*exclusive*, so len-1)
+            slatIndex = Math.floor(slatCoverage);
+            slatIndex = Math.min(slatIndex, len - 1);
+            // how much further through the slatIndex slat (from 0.0-1.0) must be covered in addition.
+            // could be 1.0 if slatCoverage is covering *all* the slots
+            slatRemainder = slatCoverage - slatIndex;
+            return positions.tops[slatIndex] +
+                positions.getHeight(slatIndex) * slatRemainder;
+        };
+        return TimeColsSlatsCoords;
+    }());
+
+    var TimeColsSlatsBody = /** @class */ (function (_super) {
+        __extends(TimeColsSlatsBody, _super);
+        function TimeColsSlatsBody() {
             return _super !== null && _super.apply(this, arguments) || this;
         }
-        TimeBodyAxis.prototype.render = function () {
-            return this.props.slatMetas.map(function (slatMeta) { return (createElement("tr", { key: slatMeta.key },
-                createElement(TimeColsAxisCell, __assign({}, slatMeta)))); });
+        TimeColsSlatsBody.prototype.render = function () {
+            var _a = this, props = _a.props, context = _a.context;
+            var options = context.options;
+            var slatElRefs = props.slatElRefs;
+            return (createElement("tbody", null, props.slatMetas.map(function (slatMeta, i) {
+                var hookProps = {
+                    time: slatMeta.time,
+                    date: context.dateEnv.toDate(slatMeta.date),
+                    view: context.viewApi,
+                };
+                var classNames = [
+                    'fc-timegrid-slot',
+                    'fc-timegrid-slot-lane',
+                    slatMeta.isLabeled ? '' : 'fc-timegrid-slot-minor',
+                ];
+                return (createElement("tr", { key: slatMeta.key, ref: slatElRefs.createRef(slatMeta.key) },
+                    props.axis && (createElement(TimeColsAxisCell, __assign({}, slatMeta))),
+                    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)); })));
+            })));
         };
-        return TimeBodyAxis;
+        return TimeColsSlatsBody;
     }(BaseComponent));
 
+    /*
+    for the horizontal "slats" that run width-wise. Has a time axis on a side. Depends on RTL.
+    */
+    var TimeColsSlats = /** @class */ (function (_super) {
+        __extends(TimeColsSlats, _super);
+        function TimeColsSlats() {
+            var _this = _super !== null && _super.apply(this, arguments) || this;
+            _this.rootElRef = createRef();
+            _this.slatElRefs = new RefMap();
+            return _this;
+        }
+        TimeColsSlats.prototype.render = function () {
+            var _a = this, props = _a.props, context = _a.context;
+            return (createElement("div", { className: "fc-timegrid-slots", ref: this.rootElRef },
+                createElement("table", { className: context.theme.getClass('table'), style: {
+                        minWidth: props.tableMinWidth,
+                        width: props.clientWidth,
+                        height: props.minHeight,
+                    } },
+                    props.tableColGroupNode /* relies on there only being a single <col> for the axis */,
+                    createElement(TimeColsSlatsBody, { slatElRefs: this.slatElRefs, axis: props.axis, slatMetas: props.slatMetas }))));
+        };
+        TimeColsSlats.prototype.componentDidMount = function () {
+            this.updateSizing();
+        };
+        TimeColsSlats.prototype.componentDidUpdate = function () {
+            this.updateSizing();
+        };
+        TimeColsSlats.prototype.componentWillUnmount = function () {
+            if (this.props.onCoords) {
+                this.props.onCoords(null);
+            }
+        };
+        TimeColsSlats.prototype.updateSizing = function () {
+            var _a = this, context = _a.context, props = _a.props;
+            if (props.onCoords &&
+                props.clientWidth !== null // means sizing has stabilized
+            ) {
+                var rootEl = this.rootElRef.current;
+                if (rootEl.offsetHeight) { // not hidden by css
+                    props.onCoords(new TimeColsSlatsCoords(new PositionCache(this.rootElRef.current, collectSlatEls(this.slatElRefs.currentMap, props.slatMetas), false, true), this.props.dateProfile, context.options.slotDuration));
+                }
+            }
+        };
+        return TimeColsSlats;
+    }(BaseComponent));
+    function collectSlatEls(elMap, slatMetas) {
+        return slatMetas.map(function (slatMeta) { return elMap[slatMeta.key]; });
+    }
+
     function splitSegsByCol(segs, colCnt) {
         var segsByCol = [];
         var i;
-        for (i = 0; i < colCnt; i++) {
+        for (i = 0; i < colCnt; i += 1) {
             segsByCol.push([]);
         }
         if (segs) {
-            for (i = 0; i < segs.length; i++) {
+            for (i = 0; i < segs.length; i += 1) {
                 segsByCol[segs[i].col].push(segs[i]);
             }
         }
@@ -12985,16 +12913,16 @@ var FullCalendar = (function (exports) {
     function splitInteractionByCol(ui, colCnt) {
         var byRow = [];
         if (!ui) {
-            for (var i = 0; i < colCnt; i++) {
+            for (var i = 0; i < colCnt; i += 1) {
                 byRow[i] = null;
             }
         }
         else {
-            for (var i = 0; i < colCnt; i++) {
+            for (var i = 0; i < colCnt; i += 1) {
                 byRow[i] = {
                     affectedInstances: ui.affectedInstances,
                     isEvent: ui.isEvent,
-                    segs: []
+                    segs: [],
                 };
             }
             for (var _i = 0, _a = ui.segs; _i < _a.length; _i++) {
@@ -13055,10 +12983,10 @@ var FullCalendar = (function (exports) {
         var i;
         var seg;
         var j;
-        for (i = 0; i < segs.length; i++) {
+        for (i = 0; i < segs.length; i += 1) {
             seg = segs[i];
             // go through all the levels and stop on the first level where there are no collisions
-            for (j = 0; j < levels.length; j++) {
+            for (j = 0; j < levels.length; j += 1) {
                 if (!computeSlotSegCollisions(seg, levels[j]).length) {
                     break;
                 }
@@ -13072,7 +13000,7 @@ var FullCalendar = (function (exports) {
     // Append into an optionally-supplied `results` array and return.
     function computeSlotSegCollisions(seg, otherSegs, results) {
         if (results === void 0) { results = []; }
-        for (var i = 0; i < otherSegs.length; i++) {
+        for (var i = 0; i < otherSegs.length; i += 1) {
             if (isSlotSegCollision(seg, otherSegs[i])) {
                 results.push(otherSegs[i]);
             }
@@ -13091,12 +13019,12 @@ var FullCalendar = (function (exports) {
         var j;
         var seg;
         var k;
-        for (i = 0; i < levels.length; i++) {
+        for (i = 0; i < levels.length; i += 1) {
             level = levels[i];
-            for (j = 0; j < level.length; j++) {
+            for (j = 0; j < level.length; j += 1) {
                 seg = level[j];
                 seg.forwardSegs = [];
-                for (k = i + 1; k < levels.length; k++) {
+                for (k = i + 1; k < levels.length; k += 1) {
                     computeSlotSegCollisions(seg, levels[k], seg.forwardSegs);
                 }
             }
@@ -13110,7 +13038,7 @@ var FullCalendar = (function (exports) {
         var i;
         var forwardSeg;
         if (seg.forwardPressure == null) { // not already computed
-            for (i = 0; i < forwardSegs.length; i++) {
+            for (i = 0; i < forwardSegs.length; i += 1) {
                 forwardSeg = forwardSegs[i];
                 // figure out the child's maximum forward path
                 computeSlotSegPressures(forwardSeg);
@@ -13151,7 +13079,7 @@ var FullCalendar = (function (exports) {
                     (seriesBackwardPressure + 1); // # of segments in the series
             // use this segment's coordinates to computed the coordinates of the less-pressurized
             // forward segments
-            for (i = 0; i < forwardSegs.length; i++) {
+            for (i = 0; i < forwardSegs.length; i += 1) {
                 computeSegForwardBack(forwardSegs[i], 0, seg.forwardCoord, eventOrderSpecs);
             }
         }
@@ -13162,14 +13090,10 @@ var FullCalendar = (function (exports) {
             // put higher-pressure first
             { field: 'forwardPressure', order: -1 },
             // put segments that are closer to initial edge first (and favor ones with no coords yet)
-            { field: 'backwardCoord', order: 1 }
+            { field: 'backwardCoord', order: 1 },
         ].concat(eventOrderSpecs);
-        objs.sort(function (obj0, obj1) {
-            return compareByFieldSpecs(obj0, obj1, specs);
-        });
-        return objs.map(function (c) {
-            return c._seg;
-        });
+        objs.sort(function (obj0, obj1) { return compareByFieldSpecs(obj0, obj1, specs); });
+        return objs.map(function (c) { return c._seg; });
     }
     function buildTimeGridSegCompareObj(seg) {
         var obj = buildSegCompareObj(seg);
@@ -13181,7 +13105,7 @@ var FullCalendar = (function (exports) {
     var DEFAULT_TIME_FORMAT = createFormatter({
         hour: 'numeric',
         minute: '2-digit',
-        meridiem: false
+        meridiem: false,
     });
     var TimeColEvent = /** @class */ (function (_super) {
         __extends(TimeColEvent, _super);
@@ -13191,7 +13115,7 @@ var FullCalendar = (function (exports) {
         TimeColEvent.prototype.render = function () {
             var classNames = [
                 'fc-timegrid-event',
-                'fc-v-event'
+                'fc-v-event',
             ];
             if (this.props.isCondensed) {
                 classNames.push('fc-timegrid-event-condensed');
@@ -13201,6 +13125,19 @@ var FullCalendar = (function (exports) {
         return TimeColEvent;
     }(BaseComponent));
 
+    var TimeColMisc = /** @class */ (function (_super) {
+        __extends(TimeColMisc, _super);
+        function TimeColMisc() {
+            return _super !== null && _super.apply(this, arguments) || this;
+        }
+        TimeColMisc.prototype.render = function () {
+            var props = this.props;
+            return (createElement(DayCellContent, { date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, extraHookProps: props.extraHookProps }, function (innerElRef, innerContent) { return (innerContent &&
+                createElement("div", { className: "fc-timegrid-col-misc", ref: innerElRef }, innerContent)); }));
+        };
+        return TimeColMisc;
+    }(BaseComponent));
+
     config.timeGridEventCondensedHeight = 30;
     var TimeCol = /** @class */ (function (_super) {
         __extends(TimeCol, _super);
@@ -13220,16 +13157,14 @@ var FullCalendar = (function (exports) {
                 (props.eventResize && props.eventResize.affectedInstances) ||
                 {};
             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),
-                createElement("div", { className: 'fc-timegrid-col-frame' },
-                    createElement("div", { className: 'fc-timegrid-col-bg' },
+                createElement("div", { className: "fc-timegrid-col-frame" },
+                    createElement("div", { className: "fc-timegrid-col-bg" },
                         _this.renderFillSegs(props.businessHourSegs, 'non-business'),
                         _this.renderFillSegs(props.bgEventSegs, 'bg-event'),
                         _this.renderFillSegs(props.dateSelectionSegs, 'highlight')),
-                    createElement("div", { className: 'fc-timegrid-col-events' }, _this.renderFgSegs(props.fgEventSegs, interactionAffectedInstances)),
-                    createElement("div", { className: 'fc-timegrid-col-events' }, _this.renderFgSegs(mirrorSegs, {}, Boolean(props.eventDrag), Boolean(props.eventResize), Boolean(isSelectMirror)
-                    // TODO: pass in left/right instead of using only computeSegTopBottomCss
-                    )),
-                    createElement("div", { className: 'fc-timegrid-now-indicator-container' }, _this.renderNowIndicator(props.nowIndicatorSegs)),
+                    createElement("div", { className: "fc-timegrid-col-events" }, _this.renderFgSegs(props.fgEventSegs, interactionAffectedInstances)),
+                    createElement("div", { className: "fc-timegrid-col-events" }, _this.renderFgSegs(mirrorSegs, {}, Boolean(props.eventDrag), Boolean(props.eventResize), Boolean(isSelectMirror))),
+                    createElement("div", { className: "fc-timegrid-now-indicator-container" }, _this.renderNowIndicator(props.nowIndicatorSegs)),
                     createElement(TimeColMisc, { date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, extraHookProps: props.extraHookProps })))); }));
         };
         TimeCol.prototype.renderFgSegs = function (segs, segIsInvisible, isDragging, isResizing, isDateSelecting) {
@@ -13237,13 +13172,16 @@ var FullCalendar = (function (exports) {
             if (props.forPrint) {
                 return this.renderPrintFgSegs(segs);
             }
-            else if (props.slatCoords) {
+            if (props.slatCoords) {
                 return this.renderPositionedFgSegs(segs, segIsInvisible, isDragging, isResizing, isDateSelecting);
             }
+            return null;
         };
         TimeCol.prototype.renderPrintFgSegs = function (segs) {
-            var props = this.props;
-            return segs.map(function (seg) { return (createElement("div", { className: 'fc-timegrid-event-harness', key: seg.eventRange.instance.instanceId },
+            var _a = this, props = _a.props, context = _a.context;
+            // not DRY
+            segs = sortEventSegs(segs, context.options.eventOrder);
+            return segs.map(function (seg) { return (createElement("div", { className: "fc-timegrid-event-harness", key: seg.eventRange.instance.instanceId },
                 createElement(TimeColEvent, __assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: false, isCondensed: false }, getSegMeta(seg, props.todayRange, props.nowDate))))); });
         };
         TimeCol.prototype.renderPositionedFgSegs = function (segs, segIsInvisible, isDragging, isResizing, isDateSelecting) {
@@ -13255,8 +13193,10 @@ var FullCalendar = (function (exports) {
             return segs.map(function (seg) {
                 var instanceId = seg.eventRange.instance.instanceId;
                 var isMirror = isDragging || isResizing || isDateSelecting;
-                var positionCss = isMirror ? __assign({ left: 0, right: 0 }, _this.computeSegTopBottomCss(seg)) :
-                    _this.computeFgSegPositionCss(seg);
+                var positionCss = isMirror
+                    // will span entire column width
+                    // also, won't assign z-index, which is good, fc-event-mirror will overpower other harnesses
+                    ? __assign({ left: 0, right: 0 }, _this.computeSegTopBottomCss(seg)) : _this.computeFgSegPositionCss(seg);
                 return (createElement("div", { className: 'fc-timegrid-event-harness' + (seg.level > 0 ? ' fc-timegrid-event-harness-inset' : ''), key: instanceId, style: __assign({ visibility: segIsInvisible[instanceId] ? 'hidden' : '' }, positionCss) },
                     createElement(TimeColEvent, __assign({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === props.eventSelection, isCondensed: (seg.bottom - seg.top) < config.timeGridEventCondensedHeight }, getSegMeta(seg, props.todayRange, props.nowDate)))));
             });
@@ -13265,11 +13205,11 @@ var FullCalendar = (function (exports) {
             var _this = this;
             var _a = this, context = _a.context, props = _a.props;
             if (!props.slatCoords) {
-                return;
+                return null;
             }
             // BAD: assigns TO THE SEGS THEMSELVES
             computeSegVerticals(segs, props.date, props.slatCoords, context.options.eventMinHeight);
-            var children = segs.map(function (seg) { return (createElement("div", { key: buildEventRangeKey(seg.eventRange), className: 'fc-timegrid-bg-harness', style: _this.computeSegTopBottomCss(seg) }, fillType === 'bg-event' ?
+            var children = segs.map(function (seg) { return (createElement("div", { key: buildEventRangeKey(seg.eventRange), className: "fc-timegrid-bg-harness", style: _this.computeSegTopBottomCss(seg) }, fillType === 'bg-event' ?
                 createElement(BgEvent, __assign({ seg: seg }, getSegMeta(seg, props.todayRange, props.nowDate))) :
                 renderFill(fillType))); });
             return createElement(Fragment, null, children);
@@ -13277,9 +13217,11 @@ var FullCalendar = (function (exports) {
         TimeCol.prototype.renderNowIndicator = function (segs) {
             var _a = this.props, slatCoords = _a.slatCoords, date = _a.date;
             if (!slatCoords) {
-                return;
+                return null;
             }
-            return segs.map(function (seg, i) { return (createElement(NowIndicatorRoot, { isAxis: false, date: date, key: i /* key doesn't matter. will only ever be one */ }, 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)); })); });
+            return segs.map(function (seg, i) { return (createElement(NowIndicatorRoot, { isAxis: false, date: date, 
+                // key doesn't matter. will only ever be one
+                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)); })); });
         };
         TimeCol.prototype.computeFgSegPositionCss = function (seg) {
             var _a = this.context, isRtl = _a.isRtl, options = _a.options;
@@ -13303,7 +13245,7 @@ var FullCalendar = (function (exports) {
             var props = {
                 zIndex: seg.level + 1,
                 left: left * 100 + '%',
-                right: right * 100 + '%'
+                right: right * 100 + '%',
             };
             if (shouldOverlap && seg.forwardPressure) {
                 // add padding to the edge so that forward stacked events don't cover the resizer's icon
@@ -13314,23 +13256,11 @@ var FullCalendar = (function (exports) {
         TimeCol.prototype.computeSegTopBottomCss = function (seg) {
             return {
                 top: seg.top,
-                bottom: -seg.bottom
+                bottom: -seg.bottom,
             };
         };
         return TimeCol;
     }(BaseComponent));
-    var TimeColMisc = /** @class */ (function (_super) {
-        __extends(TimeColMisc, _super);
-        function TimeColMisc() {
-            return _super !== null && _super.apply(this, arguments) || this;
-        }
-        TimeColMisc.prototype.render = function () {
-            var props = this.props;
-            return (createElement(DayCellContent, { date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, extraHookProps: props.extraHookProps }, function (innerElRef, innerContent) { return (innerContent &&
-                createElement("div", { className: 'fc-timegrid-col-misc', ref: innerElRef }, innerContent)); }));
-        };
-        return TimeColMisc;
-    }(BaseComponent));
 
     var TimeColsContent = /** @class */ (function (_super) {
         __extends(TimeColsContent, _super);
@@ -13361,19 +13291,17 @@ var FullCalendar = (function (exports) {
             var dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, colCnt);
             var eventDragByRow = this.splitEventDrag(props.eventDrag, colCnt);
             var eventResizeByRow = this.splitEventResize(props.eventResize, colCnt);
-            return (createElement("div", { className: 'fc-timegrid-cols', ref: this.rootElRef },
+            return (createElement("div", { className: "fc-timegrid-cols", ref: this.rootElRef },
                 createElement("table", { style: {
                         minWidth: props.tableMinWidth,
-                        width: props.clientWidth
+                        width: props.clientWidth,
                     } },
                     props.tableColGroupNode,
                     createElement("tbody", null,
                         createElement("tr", null,
-                            props.axis &&
-                                createElement("td", { className: 'fc-timegrid-col fc-timegrid-axis' },
-                                    createElement("div", { className: 'fc-timegrid-col-frame' },
-                                        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)); })))),
+                            props.axis && (createElement("td", { className: "fc-timegrid-col fc-timegrid-axis" },
+                                createElement("div", { className: "fc-timegrid-col-frame" },
+                                    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)); })))))),
                             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, 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 })); }))))));
         };
         TimeColsContent.prototype.componentDidMount = function () {
@@ -13405,7 +13333,7 @@ var FullCalendar = (function (exports) {
             var _this = _super !== null && _super.apply(this, arguments) || this;
             _this.processSlotOptions = memoize(processSlotOptions);
             _this.state = {
-                slatCoords: null
+                slatCoords: null,
             };
             _this.handleScrollRequest = function (request) {
                 var onScrollTopRequest = _this.props.onScrollTopRequest;
@@ -13415,12 +13343,13 @@ var FullCalendar = (function (exports) {
                         var top_1 = slatCoords.computeTimeTop(request.time);
                         top_1 = Math.ceil(top_1); // zoom can give weird floating-point values. rather scroll a little bit further
                         if (top_1) {
-                            top_1++;
-                        } // to overcome top border that slots beyond the first have. looks better
+                            top_1 += 1; // to overcome top border that slots beyond the first have. looks better
+                        }
                         onScrollTopRequest(top_1);
                     }
                     return true;
                 }
+                return false;
             };
             _this.handleColCoords = function (colCoords) {
                 _this.colCoords = colCoords;
@@ -13435,11 +13364,11 @@ var FullCalendar = (function (exports) {
         }
         TimeCols.prototype.render = function () {
             var _a = this, props = _a.props, state = _a.state;
-            return (createElement("div", { className: 'fc-timegrid-body', ref: props.rootElRef, style: {
+            return (createElement("div", { className: "fc-timegrid-body", ref: props.rootElRef, style: {
                     // these props are important to give this wrapper correct dimensions for interactions
                     // TODO: if we set it here, can we avoid giving to inner tables?
                     width: props.clientWidth,
-                    minWidth: props.tableMinWidth
+                    minWidth: props.tableMinWidth,
                 } },
                 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 }),
                 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 })));
@@ -13475,30 +13404,55 @@ var FullCalendar = (function (exports) {
                     col: colIndex,
                     dateSpan: {
                         range: { start: start, end: end },
-                        allDay: false
+                        allDay: false,
                     },
                     dayEl: colCoords.els[colIndex],
                     relativeRect: {
                         left: colCoords.lefts[colIndex],
                         right: colCoords.rights[colIndex],
                         top: slatTop,
-                        bottom: slatTop + slatHeight
-                    }
+                        bottom: slatTop + slatHeight,
+                    },
                 };
             }
+            return null;
+        };
+        return TimeCols;
+    }(BaseComponent));
+    function processSlotOptions(slotDuration, snapDurationOverride) {
+        var snapDuration = snapDurationOverride || slotDuration;
+        var snapsPerSlot = wholeDivideDurations(slotDuration, snapDuration);
+        if (snapsPerSlot === null) {
+            snapDuration = slotDuration;
+            snapsPerSlot = 1;
+            // TODO: say warning?
+        }
+        return { snapDuration: snapDuration, snapsPerSlot: snapsPerSlot };
+    }
+
+    var DayTimeColsSlicer = /** @class */ (function (_super) {
+        __extends(DayTimeColsSlicer, _super);
+        function DayTimeColsSlicer() {
+            return _super !== null && _super.apply(this, arguments) || this;
+        }
+        DayTimeColsSlicer.prototype.sliceRange = function (range, dayRanges) {
+            var segs = [];
+            for (var col = 0; col < dayRanges.length; col += 1) {
+                var segRange = intersectRanges(range, dayRanges[col]);
+                if (segRange) {
+                    segs.push({
+                        start: segRange.start,
+                        end: segRange.end,
+                        isStart: segRange.start.valueOf() === range.start.valueOf(),
+                        isEnd: segRange.end.valueOf() === range.end.valueOf(),
+                        col: col,
+                    });
+                }
+            }
+            return segs;
         };
-        return TimeCols;
-    }(BaseComponent));
-    function processSlotOptions(slotDuration, snapDurationOverride) {
-        var snapDuration = snapDurationOverride || slotDuration;
-        var snapsPerSlot = wholeDivideDurations(slotDuration, snapDuration);
-        if (snapsPerSlot === null) {
-            snapDuration = slotDuration;
-            snapsPerSlot = 1;
-            // TODO: say warning?
-        }
-        return { snapDuration: snapDuration, snapsPerSlot: snapsPerSlot };
-    }
+        return DayTimeColsSlicer;
+    }(Slicer));
 
     var DayTimeCols = /** @class */ (function (_super) {
         __extends(DayTimeCols, _super);
@@ -13538,11 +13492,12 @@ var FullCalendar = (function (exports) {
                         left: rawHit.relativeRect.left,
                         right: rawHit.relativeRect.right,
                         top: rawHit.relativeRect.top,
-                        bottom: rawHit.relativeRect.bottom
+                        bottom: rawHit.relativeRect.bottom,
                     },
-                    layer: 0
+                    layer: 0,
                 };
             }
+            return null;
         };
         return DayTimeCols;
     }(DateComponent));
@@ -13552,34 +13507,57 @@ var FullCalendar = (function (exports) {
             var date = _a[_i];
             ranges.push({
                 start: dateEnv.add(date, dateProfile.slotMinTime),
-                end: dateEnv.add(date, dateProfile.slotMaxTime)
+                end: dateEnv.add(date, dateProfile.slotMaxTime),
             });
         }
         return ranges;
     }
-    var DayTimeColsSlicer = /** @class */ (function (_super) {
-        __extends(DayTimeColsSlicer, _super);
-        function DayTimeColsSlicer() {
-            return _super !== null && _super.apply(this, arguments) || this;
+
+    // potential nice values for the slot-duration and interval-duration
+    // from largest to smallest
+    var STOCK_SUB_DURATIONS = [
+        { hours: 1 },
+        { minutes: 30 },
+        { minutes: 15 },
+        { seconds: 30 },
+        { seconds: 15 },
+    ];
+    function buildSlatMetas(slotMinTime, slotMaxTime, explicitLabelInterval, slotDuration, dateEnv) {
+        var dayStart = new Date(0);
+        var slatTime = slotMinTime;
+        var slatIterator = createDuration(0);
+        var labelInterval = explicitLabelInterval || computeLabelInterval(slotDuration);
+        var metas = [];
+        while (asRoughMs(slatTime) < asRoughMs(slotMaxTime)) {
+            var date = dateEnv.add(dayStart, slatTime);
+            var isLabeled = wholeDivideDurations(slatIterator, labelInterval) !== null;
+            metas.push({
+                date: date,
+                time: slatTime,
+                key: date.toISOString(),
+                isoTimeStr: formatIsoTimeString(date),
+                isLabeled: isLabeled,
+            });
+            slatTime = addDurations(slatTime, slotDuration);
+            slatIterator = addDurations(slatIterator, slotDuration);
         }
-        DayTimeColsSlicer.prototype.sliceRange = function (range, dayRanges) {
-            var segs = [];
-            for (var col = 0; col < dayRanges.length; col++) {
-                var segRange = intersectRanges(range, dayRanges[col]);
-                if (segRange) {
-                    segs.push({
-                        start: segRange.start,
-                        end: segRange.end,
-                        isStart: segRange.start.valueOf() === range.start.valueOf(),
-                        isEnd: segRange.end.valueOf() === range.end.valueOf(),
-                        col: col
-                    });
-                }
+        return metas;
+    }
+    // Computes an automatic value for slotLabelInterval
+    function computeLabelInterval(slotDuration) {
+        var i;
+        var labelInterval;
+        var slotsPerLabel;
+        // find the smallest stock label interval that results in more than one slots-per-label
+        for (i = STOCK_SUB_DURATIONS.length - 1; i >= 0; i -= 1) {
+            labelInterval = createDuration(STOCK_SUB_DURATIONS[i]);
+            slotsPerLabel = wholeDivideDurations(labelInterval, slotDuration);
+            if (slotsPerLabel !== null && slotsPerLabel > 1) {
+                return labelInterval;
             }
-            return segs;
-        };
-        return DayTimeColsSlicer;
-    }(Slicer));
+        }
+        return slotDuration; // fall back
+    }
 
     var DayTimeColsView = /** @class */ (function (_super) {
         __extends(DayTimeColsView, _super);
@@ -13600,10 +13578,9 @@ var FullCalendar = (function (exports) {
             var dayMinWidth = options.dayMinWidth;
             var hasAttachedAxis = !dayMinWidth;
             var hasDetachedAxis = dayMinWidth;
-            var headerContent = options.dayHeaders &&
-                createElement(DayHeader, { dates: dayTableModel.headerDates, dateProfile: dateProfile, datesRepDistinctDays: true, renderIntro: hasAttachedAxis ? this.renderHeadAxis : null });
-            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()))); });
-            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 }))); };
+            var headerContent = options.dayHeaders && (createElement(DayHeader, { dates: dayTableModel.headerDates, dateProfile: dateProfile, datesRepDistinctDays: true, renderIntro: hasAttachedAxis ? this.renderHeadAxis : null }));
+            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()))); });
+            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 }))); };
             return hasDetachedAxis
                 ? this.renderHScrollLayout(headerContent, allDayContent, timeGridContent, dayTableModel.colCnt, dayMinWidth, slatMetas, this.state.slatCoords)
                 : this.renderSimpleLayout(headerContent, allDayContent, timeGridContent);
@@ -13615,30 +13592,30 @@ var FullCalendar = (function (exports) {
         return new DayTableModel(daySeries, false);
     }
 
-    var OPTION_REFINERS$1 = {
-        allDaySlot: Boolean
+    var OPTION_REFINERS$2 = {
+        allDaySlot: Boolean,
     };
 
     var timeGridPlugin = createPlugin({
         initialView: 'timeGridWeek',
-        optionRefiners: OPTION_REFINERS$1,
+        optionRefiners: OPTION_REFINERS$2,
         views: {
             timeGrid: {
                 component: DayTimeColsView,
                 usesMinMaxTime: true,
                 allDaySlot: true,
                 slotDuration: '00:30:00',
-                slotEventOverlap: true // a bad name. confused with overlap/constraint system
+                slotEventOverlap: true,
             },
             timeGridDay: {
                 type: 'timeGrid',
-                duration: { days: 1 }
+                duration: { days: 1 },
             },
             timeGridWeek: {
                 type: 'timeGrid',
-                duration: { weeks: 1 }
-            }
-        }
+                duration: { weeks: 1 },
+            },
+        },
     });
 
     var ListViewHeaderRow = /** @class */ (function (_super) {
@@ -13650,8 +13627,10 @@ var FullCalendar = (function (exports) {
             var _a = this.props, dayDate = _a.dayDate, todayRange = _a.todayRange;
             var _b = this.context, theme = _b.theme, dateEnv = _b.dateEnv, options = _b.options, viewApi = _b.viewApi;
             var dayMeta = getDateMeta(dayDate, todayRange);
-            var text = options.listDayFormat ? dateEnv.format(dayDate, options.listDayFormat) : ''; // will ever be falsy?
-            var sideText = options.listDaySideFormat ? dateEnv.format(dayDate, options.listDaySideFormat) : ''; // will ever be falsy? also, BAD NAME "alt"
+            // will ever be falsy?
+            var text = options.listDayFormat ? dateEnv.format(dayDate, options.listDayFormat) : '';
+            // will ever be falsy? also, BAD NAME "alt"
+            var sideText = options.listDaySideFormat ? dateEnv.format(dayDate, options.listDaySideFormat) : '';
             var navLinkData = options.navLinks
                 ? buildNavLinkData(dayDate)
                 : null;
@@ -13671,16 +13650,14 @@ var FullCalendar = (function (exports) {
             ? { 'data-navlink': props.navLinkData, tabIndex: 0 }
             : {};
         return (createElement(Fragment, null,
-            props.text &&
-                createElement("a", __assign({ className: 'fc-list-day-text' }, navLinkAttrs), props.text),
-            props.sideText &&
-                createElement("a", __assign({ className: 'fc-list-day-side-text' }, navLinkAttrs), props.sideText)));
+            props.text && (createElement("a", __assign({ className: "fc-list-day-text" }, navLinkAttrs), props.text)),
+            props.sideText && (createElement("a", __assign({ className: "fc-list-day-side-text" }, navLinkAttrs), props.sideText))));
     }
 
     var DEFAULT_TIME_FORMAT$1 = createFormatter({
         hour: 'numeric',
         minute: '2-digit',
-        meridiem: 'short'
+        meridiem: 'short',
     });
     var ListViewEventRow = /** @class */ (function (_super) {
         __extends(ListViewEventRow, _super);
@@ -13691,11 +13668,12 @@ var FullCalendar = (function (exports) {
             var _a = this, props = _a.props, context = _a.context;
             var seg = props.seg;
             var timeFormat = context.options.eventTimeFormat || DEFAULT_TIME_FORMAT$1;
-            return (createElement(EventRoot, { seg: seg, timeText: '' /* BAD. because of all-day content */, disableDragging: true, disableResizing: true, defaultContent: renderEventInnerContent, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday, isSelected: props.isSelected, isDragging: props.isDragging, isResizing: props.isResizing, isDateSelecting: props.isDateSelecting }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) { return (createElement("tr", { className: ['fc-list-event', hookProps.event.url ? 'fc-event-forced-url' : ''].concat(classNames).join(' '), ref: rootElRef },
+            return (createElement(EventRoot, { seg: seg, timeText: "" // BAD. because of all-day content
+                , disableDragging: true, disableResizing: true, defaultContent: renderEventInnerContent, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday, isSelected: props.isSelected, isDragging: props.isDragging, isResizing: props.isResizing, isDateSelecting: props.isDateSelecting }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) { return (createElement("tr", { className: ['fc-list-event', hookProps.event.url ? 'fc-event-forced-url' : ''].concat(classNames).join(' '), ref: rootElRef },
                 buildTimeContent(seg, timeFormat, context),
-                createElement("td", { className: 'fc-list-event-graphic' },
-                    createElement("span", { className: 'fc-list-event-dot', style: { borderColor: hookProps.borderColor || hookProps.backgroundColor } })),
-                createElement("td", { className: 'fc-list-event-title', ref: innerElRef }, innerContent))); }));
+                createElement("td", { className: "fc-list-event-graphic" },
+                    createElement("span", { className: "fc-list-event-dot", style: { borderColor: hookProps.borderColor || hookProps.backgroundColor } })),
+                createElement("td", { className: "fc-list-event-title", ref: innerElRef }, innerContent))); }));
         };
         return ListViewEventRow;
     }(BaseComponent));
@@ -13732,13 +13710,11 @@ var FullCalendar = (function (exports) {
             if (doAllDay) {
                 var hookProps = {
                     text: context.options.allDayText,
-                    view: context.viewApi
+                    view: context.viewApi,
                 };
                 return (createElement(RenderHook, { hookProps: hookProps, classNames: options.allDayClassNames, content: options.allDayContent, defaultContent: renderAllDayInner$1, didMount: options.allDayDidMount, willUnmount: options.allDayWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("td", { className: ['fc-list-event-time'].concat(classNames).join(' '), ref: rootElRef }, innerContent)); }));
             }
-            else {
-                return (createElement("td", { className: 'fc-list-event-time' }, timeText));
-            }
+            return (createElement("td", { className: "fc-list-event-time" }, timeText));
         }
         return null;
     }
@@ -13758,7 +13734,7 @@ var FullCalendar = (function (exports) {
             _this.setRootEl = function (rootEl) {
                 if (rootEl) {
                     _this.context.registerInteractiveComponent(_this, {
-                        el: rootEl
+                        el: rootEl,
                     });
                 }
                 else {
@@ -13773,7 +13749,7 @@ var FullCalendar = (function (exports) {
             var extraClassNames = [
                 'fc-list',
                 context.theme.getClass('table'),
-                context.options.stickyHeaderDates !== false ? 'fc-list-sticky' : ''
+                context.options.stickyHeaderDates !== false ? 'fc-list-sticky' : '',
             ];
             var _b = this.computeDateVars(props.dateProfile), dayDates = _b.dayDates, dayRanges = _b.dayRanges;
             var eventSegs = this.eventStoreToSegs(props.eventStore, props.eventUiBases, dayRanges);
@@ -13786,17 +13762,17 @@ var FullCalendar = (function (exports) {
             var _a = this.context, options = _a.options, viewApi = _a.viewApi;
             var hookProps = {
                 text: options.noEventsText,
-                view: viewApi
+                view: viewApi,
             };
             return (createElement(RenderHook, { hookProps: hookProps, classNames: options.noEventsClassNames, content: options.noEventsContent, defaultContent: renderNoEventsInner, didMount: options.noEventsDidMount, willUnmount: options.noEventsWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("div", { className: ['fc-list-empty'].concat(classNames).join(' '), ref: rootElRef },
-                createElement("div", { className: 'fc-list-empty-cushion', ref: innerElRef }, innerContent))); }));
+                createElement("div", { className: "fc-list-empty-cushion", ref: innerElRef }, innerContent))); }));
         };
         ListView.prototype.renderSegList = function (allSegs, dayDates) {
             var _a = this.context, theme = _a.theme, options = _a.options;
             var segsByDay = groupSegsByDay(allSegs); // sparse array
-            return (createElement(NowTimer, { unit: 'day' }, function (nowDate, todayRange) {
+            return (createElement(NowTimer, { unit: "day" }, function (nowDate, todayRange) {
                 var innerNodes = [];
-                for (var dayIndex = 0; dayIndex < segsByDay.length; dayIndex++) {
+                for (var dayIndex = 0; dayIndex < segsByDay.length; dayIndex += 1) {
                     var daySegs = segsByDay[dayIndex];
                     if (daySegs) { // sparse array, so might be undefined
                         var dayStr = dayDates[dayIndex].toISOString();
@@ -13833,7 +13809,7 @@ var FullCalendar = (function (exports) {
             var segRange;
             var seg;
             var segs = [];
-            for (dayIndex = 0; dayIndex < dayRanges.length; dayIndex++) {
+            for (dayIndex = 0; dayIndex < dayRanges.length; dayIndex += 1) {
                 segRange = intersectRanges(range, dayRanges[dayIndex]);
                 if (segRange) {
                     seg = {
@@ -13843,7 +13819,7 @@ var FullCalendar = (function (exports) {
                         end: segRange.end,
                         isStart: eventRange.isStart && segRange.start.valueOf() === range.start.valueOf(),
                         isEnd: eventRange.isEnd && segRange.end.valueOf() === range.end.valueOf(),
-                        dayIndex: dayIndex
+                        dayIndex: dayIndex,
                     };
                     segs.push(seg);
                     // detect when range won't go fully into the next day,
@@ -13874,7 +13850,7 @@ var FullCalendar = (function (exports) {
             dayDates.push(dayStart);
             dayRanges.push({
                 start: dayStart,
-                end: addDays(dayStart, 1)
+                end: addDays(dayStart, 1),
             });
             dayStart = addDays(dayStart, 1);
         }
@@ -13885,7 +13861,7 @@ var FullCalendar = (function (exports) {
         var segsByDay = []; // sparse array
         var i;
         var seg;
-        for (i = 0; i < segs.length; i++) {
+        for (i = 0; i < segs.length; i += 1) {
             seg = segs[i];
             (segsByDay[seg.dayIndex] || (segsByDay[seg.dayIndex] = []))
                 .push(seg);
@@ -13893,49 +13869,48 @@ var FullCalendar = (function (exports) {
         return segsByDay;
     }
 
-    var OPTION_REFINERS$2 = {
+    var OPTION_REFINERS$3 = {
         listDayFormat: createFalsableFormatter,
         listDaySideFormat: createFalsableFormatter,
         noEventsClassNames: identity,
         noEventsContent: identity,
         noEventsDidMount: identity,
-        noEventsWillUnmount: identity
-        // noEventsText is defined in base options
+        noEventsWillUnmount: identity,
     };
     function createFalsableFormatter(input) {
         return input === false ? null : createFormatter(input);
     }
 
     var listPlugin = createPlugin({
-        optionRefiners: OPTION_REFINERS$2,
+        optionRefiners: OPTION_REFINERS$3,
         views: {
             list: {
                 component: ListView,
                 buttonTextKey: 'list',
-                listDayFormat: { month: 'long', day: 'numeric', year: 'numeric' } // like "January 1, 2016"
+                listDayFormat: { month: 'long', day: 'numeric', year: 'numeric' },
             },
             listDay: {
                 type: 'list',
                 duration: { days: 1 },
-                listDayFormat: { weekday: 'long' } // day-of-week is all we need. full date is probably in headerToolbar
+                listDayFormat: { weekday: 'long' },
             },
             listWeek: {
                 type: 'list',
                 duration: { weeks: 1 },
                 listDayFormat: { weekday: 'long' },
-                listDaySideFormat: { month: 'long', day: 'numeric', year: 'numeric' }
+                listDaySideFormat: { month: 'long', day: 'numeric', year: 'numeric' },
             },
             listMonth: {
                 type: 'list',
                 duration: { month: 1 },
-                listDaySideFormat: { weekday: 'long' } // day-of-week is nice-to-have
+                listDaySideFormat: { weekday: 'long' },
             },
             listYear: {
                 type: 'list',
                 duration: { year: 1 },
-                listDaySideFormat: { weekday: 'long' } // day-of-week is nice-to-have
-            }
-        }
+                listDaySideFormat: { weekday: 'long' },
+            },
+        },
     });
 
     var BootstrapTheme = /** @class */ (function (_super) {
@@ -13954,7 +13929,7 @@ var FullCalendar = (function (exports) {
         buttonActive: 'active',
         popover: 'popover',
         popoverHeader: 'popover-header',
-        popoverContent: 'popover-body'
+        popoverContent: 'popover-body',
     };
     BootstrapTheme.prototype.baseIconClass = 'fa';
     BootstrapTheme.prototype.iconClasses = {
@@ -13962,33 +13937,33 @@ var FullCalendar = (function (exports) {
         prev: 'fa-chevron-left',
         next: 'fa-chevron-right',
         prevYear: 'fa-angle-double-left',
-        nextYear: 'fa-angle-double-right'
+        nextYear: 'fa-angle-double-right',
     };
     BootstrapTheme.prototype.rtlIconClasses = {
         prev: 'fa-chevron-right',
         next: 'fa-chevron-left',
         prevYear: 'fa-angle-double-right',
-        nextYear: 'fa-angle-double-left'
+        nextYear: 'fa-angle-double-left',
     };
     BootstrapTheme.prototype.iconOverrideOption = 'bootstrapFontAwesome'; // TODO: make TS-friendly. move the option-processing into this plugin
     BootstrapTheme.prototype.iconOverrideCustomButtonOption = 'bootstrapFontAwesome';
     BootstrapTheme.prototype.iconOverridePrefix = 'fa-';
     var plugin = createPlugin({
         themeClasses: {
-            bootstrap: BootstrapTheme
-        }
+            bootstrap: BootstrapTheme,
+        },
     });
 
     // rename this file to options.ts like other packages?
-    var OPTION_REFINERS$3 = {
-        googleCalendarApiKey: String
+    var OPTION_REFINERS$4 = {
+        googleCalendarApiKey: String,
     };
 
     var EVENT_SOURCE_REFINERS$1 = {
         googleCalendarApiKey: String,
         googleCalendarId: String,
         googleCalendarApiBase: String,
-        extraParams: identity
+        extraParams: identity,
     };
 
     // TODO: expose somehow
@@ -14004,7 +13979,7 @@ var FullCalendar = (function (exports) {
                     googleCalendarId: googleCalendarId,
                     googleCalendarApiKey: refined.googleCalendarApiKey,
                     googleCalendarApiBase: refined.googleCalendarApiBase,
-                    extraParams: refined.extraParams
+                    extraParams: refined.extraParams,
                 };
             }
             return null;
@@ -14015,7 +13990,7 @@ var FullCalendar = (function (exports) {
             var apiKey = meta.googleCalendarApiKey || options.googleCalendarApiKey;
             if (!apiKey) {
                 onFailure({
-                    message: 'Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/'
+                    message: 'Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/',
                 });
             }
             else {
@@ -14029,20 +14004,20 @@ var FullCalendar = (function (exports) {
                         onFailure({
                             message: 'Google Calendar API: ' + body.error.message,
                             errors: body.error.errors,
-                            xhr: xhr
+                            xhr: xhr,
                         });
                     }
                     else {
                         onSuccess({
                             rawEvents: gcalItemsToRawEventDefs(body.items, requestParams_1.timeZone),
-                            xhr: xhr
+                            xhr: xhr,
                         });
                     }
                 }, function (message, xhr) {
                     onFailure({ message: message, xhr: xhr });
                 });
             }
-        }
+        },
     };
     function parseGoogleCalendarId(url) {
         var match;
@@ -14051,10 +14026,11 @@ var FullCalendar = (function (exports) {
         if (/^[^/]+@([^/.]+\.)*(google|googlemail|gmail)\.com$/.test(url)) {
             return url;
         }
-        else if ((match = /^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^/]*)/.exec(url)) ||
+        if ((match = /^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^/]*)/.exec(url)) ||
             (match = /^https?:\/\/www.google.com\/calendar\/feeds\/([^/]*)/.exec(url))) {
             return decodeURIComponent(match[1]);
         }
+        return null;
     }
     function buildUrl(meta) {
         var apiBase = meta.googleCalendarApiBase;
@@ -14086,9 +14062,7 @@ var FullCalendar = (function (exports) {
         return params;
     }
     function gcalItemsToRawEventDefs(items, gcalTimezone) {
-        return items.map(function (item) {
-            return gcalItemToRawEventDef(item, gcalTimezone);
-        });
+        return items.map(function (item) { return gcalItemToRawEventDef(item, gcalTimezone); });
     }
     function gcalItemToRawEventDef(item, gcalTimezone) {
         var url = item.htmlLink || null;
@@ -14103,29 +14077,28 @@ var FullCalendar = (function (exports) {
             end: item.end.dateTime || item.end.date,
             url: url,
             location: item.location,
-            description: item.description
+            description: item.description,
         };
     }
     // Injects a string like "arg=value" into the querystring of a URL
     // TODO: move to a general util file?
     function injectQsComponent(url, component) {
         // inject it after the querystring but before the fragment
-        return url.replace(/(\?.*?)?(#|$)/, function (whole, qs, hash) {
-            return (qs ? qs + '&' : '?') + component + hash;
-        });
+        return url.replace(/(\?.*?)?(#|$)/, function (whole, qs, hash) { return (qs ? qs + '&' : '?') + component + hash; });
     }
     var googleCalendarPlugin = createPlugin({
         eventSourceDefs: [eventSourceDef$3],
-        optionRefiners: OPTION_REFINERS$3,
-        eventSourceRefiners: EVENT_SOURCE_REFINERS$1
+        optionRefiners: OPTION_REFINERS$4,
+        eventSourceRefiners: EVENT_SOURCE_REFINERS$1,
     });
 
-    var RELEASE_DATE = '2020-06-29'; // for Scheduler
+    var RELEASE_DATE = '2021-01-16'; // for Scheduler
     var UPGRADE_WINDOW = 365 + 7; // days. 1 week leeway, for tz shift reasons too
-    var LICENSE_INFO_URL = 'http://fullcalendar.io/scheduler/license/';
+    var INVALID_LICENSE_URL = 'http://fullcalendar.io/docs/schedulerLicenseKey#invalid';
+    var OUTDATED_LICENSE_URL = 'http://fullcalendar.io/docs/schedulerLicenseKey#outdated';
     var PRESET_LICENSE_KEYS = [
         'GPL-My-Project-Is-Open-Source',
-        'CC-Attribution-NonCommercial-NoDerivatives'
+        'CC-Attribution-NonCommercial-NoDerivatives',
     ];
     var CSS = {
         position: 'absolute',
@@ -14138,22 +14111,29 @@ var FullCalendar = (function (exports) {
         borderWidth: '1px 1px 0 0',
         padding: '2px 4px',
         fontSize: '12px',
-        borderTopRightRadius: '3px'
+        borderTopRightRadius: '3px',
     };
     function buildLicenseWarning(context) {
         var key = context.options.schedulerLicenseKey;
-        if (!isImmuneUrl(window.location.href) && !isValidKey(key)) {
-            return (createElement("div", { className: 'fc-license-message', style: CSS },
-                "Please use a valid license key. ",
-                createElement("a", { href: LICENSE_INFO_URL }, "More Info")));
+        var currentUrl = typeof window !== 'undefined' ? window.location.href : '';
+        if (!isImmuneUrl(currentUrl)) {
+            var status_1 = processLicenseKey(key);
+            if (status_1 !== 'valid') {
+                return (createElement("div", { className: "fc-license-message", style: CSS }, (status_1 === 'outdated') ? (createElement(Fragment, null,
+                    'Your license key is too old to work with this version. ',
+                    createElement("a", { href: OUTDATED_LICENSE_URL }, "More Info"))) : (createElement(Fragment, null,
+                    'Your license key is invalid. ',
+                    createElement("a", { href: INVALID_LICENSE_URL }, "More Info")))));
+            }
         }
+        return null;
     }
     /*
     This decryption is not meant to be bulletproof. Just a way to remind about an upgrade.
     */
-    function isValidKey(key) {
+    function processLicenseKey(key) {
         if (PRESET_LICENSE_KEYS.indexOf(key) !== -1) {
-            return true;
+            return 'valid';
         }
         var parts = (key || '').match(/^(\d+)-fcs-(\d+)$/);
         if (parts && (parts[1].length === 10)) {
@@ -14162,23 +14142,24 @@ var FullCalendar = (function (exports) {
             if (isValidDate(releaseDate)) { // token won't be replaced in dev mode
                 var minPurchaseDate = addDays(releaseDate, -UPGRADE_WINDOW);
                 if (minPurchaseDate < purchaseDate) {
-                    return true;
+                    return 'valid';
                 }
+                return 'outdated';
             }
         }
-        return false;
+        return 'invalid';
     }
     function isImmuneUrl(url) {
         return /\w+:\/\/fullcalendar\.io\/|\/examples\/[\w-]+\.html$/.test(url);
     }
 
-    var OPTION_REFINERS$4 = {
-        schedulerLicenseKey: String
+    var OPTION_REFINERS$5 = {
+        schedulerLicenseKey: String,
     };
 
     var premiumCommonPlugin = createPlugin({
-        optionRefiners: OPTION_REFINERS$4,
-        viewContainerAppends: [buildLicenseWarning]
+        optionRefiners: OPTION_REFINERS$5,
+        viewContainerAppends: [buildLicenseWarning],
     });
 
     var WHEEL_EVENT_NAMES = 'wheel mousewheel DomMouseScroll MozMousePixelScroll'.split(' ');
@@ -14277,7 +14258,7 @@ var FullCalendar = (function (exports) {
         var edges = computeEdges(scrollEl); // TODO: pass in isRtl?
         return {
             left: rect.left + edges.borderLeft + edges.scrollbarLeft - getScrollFromLeftEdge(scrollEl),
-            top: rect.top + edges.borderTop - scrollEl.scrollTop
+            top: rect.top + edges.borderTop - scrollEl.scrollTop,
         };
     }
     function getScrollFromLeftEdge(el) {
@@ -14319,7 +14300,15 @@ var FullCalendar = (function (exports) {
         return _rtlScrollSystem || (_rtlScrollSystem = detectRtlScrollSystem());
     }
     function detectRtlScrollSystem() {
-        var el = htmlToElement("<div style=\" position: absolute; top: -1000px; width: 1px; height: 1px; overflow: scroll; direction: rtl; font-size: 100px; \">A</div>");
+        var el = document.createElement('div');
+        el.style.position = 'absolute';
+        el.style.top = '-1000px';
+        el.style.width = '1px';
+        el.style.height = '1px';
+        el.style.overflow = 'scroll';
+        el.style.direction = 'rtl';
+        el.style.fontSize = '100px';
+        el.innerHTML = 'A';
         document.body.appendChild(el);
         var system;
         if (el.scrollLeft > 0) {
@@ -14338,8 +14327,7 @@ var FullCalendar = (function (exports) {
         return system;
     }
 
-    var STICKY_PROP_VAL = computeStickyPropVal(); // if null, means not supported at all
-    var IS_MS_EDGE = /Edge/.test(navigator.userAgent); // TODO: what about Chromeum-based Edge?
+    var IS_MS_EDGE = typeof navigator !== 'undefined' && /Edge/.test(navigator.userAgent); // TODO: what about Chromeum-based Edge?
     var STICKY_SELECTOR = '.fc-sticky';
     /*
     useful beyond the native position:sticky for these reasons:
@@ -14372,8 +14360,9 @@ var FullCalendar = (function (exports) {
                 }
             };
             this.usingRelative =
-                !STICKY_PROP_VAL || // IE11
-                    (IS_MS_EDGE && isRtl); // https://stackoverflow.com/questions/56835658/in-microsoft-edge-sticky-positioning-doesnt-work-when-combined-with-dir-rtl
+                !computeStickyPropVal() || // IE11
+                    // https://stackoverflow.com/questions/56835658/in-microsoft-edge-sticky-positioning-doesnt-work-when-combined-with-dir-rtl
+                    (IS_MS_EDGE && isRtl);
             if (this.usingRelative) {
                 this.listener = new ScrollListener(scrollEl);
                 this.listener.emitter.on('scrollEnd', this.updateSize);
@@ -14411,7 +14400,7 @@ var FullCalendar = (function (exports) {
                     naturalBound: naturalBound,
                     elWidth: elRect.width,
                     elHeight: elRect.height,
-                    textAlign: textAlign
+                    textAlign: textAlign,
                 });
             }
             return elGeoms;
@@ -14467,7 +14456,7 @@ var FullCalendar = (function (exports) {
                 position: 'relative',
                 left: left,
                 right: -left,
-                top: top
+                top: top,
             });
         });
     }
@@ -14486,21 +14475,22 @@ var FullCalendar = (function (exports) {
             applyStyle(el, {
                 left: left,
                 right: left,
-                top: 0
+                top: 0,
             });
         });
     }
     // overkill now that we use the stylesheet to set it!
     // just test that the 'position' value of a div with the fc-sticky classname has the word 'sticky' in it
     function computeStickyPropVal() {
-        var el = htmlToElement('<div style="position:-webkit-sticky;position:sticky"></div>');
-        var val = el.style.position;
+        var el = document.createElement('div');
+        el.className = 'fc-sticky';
+        document.body.appendChild(el);
+        var val = window.getComputedStyle(el).position;
+        removeElement(el);
         if (val.indexOf('sticky') !== -1) {
             return val;
         }
-        else {
-            return null;
-        }
+        return null;
     }
 
     var ClippedScroller = /** @class */ (function (_super) {
@@ -14509,8 +14499,8 @@ var FullCalendar = (function (exports) {
             var _this = _super !== null && _super.apply(this, arguments) || this;
             _this.elRef = createRef();
             _this.state = {
-                xScrollbarWidth: getScrollbarWidths().x,
-                yScrollbarWidth: getScrollbarWidths().y
+                xScrollbarWidth: 0,
+                yScrollbarWidth: 0,
             };
             _this.handleScroller = function (scroller) {
                 _this.scroller = scroller;
@@ -14547,7 +14537,9 @@ var FullCalendar = (function (exports) {
                 }
             }
             return (createElement("div", { ref: this.elRef, className: 'fc-scroller-harness' + (props.liquid ? ' fc-scroller-harness-liquid' : '') },
-                createElement(Scroller, { ref: this.handleScroller, elRef: this.props.scrollerElRef, overflowX: props.overflowX === 'scroll-hidden' ? 'scroll' : props.overflowX, overflowY: props.overflowY === 'scroll-hidden' ? 'scroll' : props.overflowY, overcomeLeft: overcomeLeft, overcomeRight: overcomeRight, overcomeBottom: overcomeBottom, maxHeight: typeof props.maxHeight === 'number' ? (props.maxHeight + (props.overflowX === 'scroll-hidden' ? state.xScrollbarWidth : 0)) : '', liquid: props.liquid, liquidIsAbsolute: true }, props.children)));
+                createElement(Scroller, { ref: this.handleScroller, elRef: this.props.scrollerElRef, overflowX: props.overflowX === 'scroll-hidden' ? 'scroll' : props.overflowX, overflowY: props.overflowY === 'scroll-hidden' ? 'scroll' : props.overflowY, overcomeLeft: overcomeLeft, overcomeRight: overcomeRight, overcomeBottom: overcomeBottom, maxHeight: typeof props.maxHeight === 'number'
+                        ? (props.maxHeight + (props.overflowX === 'scroll-hidden' ? state.xScrollbarWidth : 0))
+                        : '', liquid: props.liquid, liquidIsAbsolute: true }, props.children)));
         };
         ClippedScroller.prototype.componentDidMount = function () {
             this.handleSizing();
@@ -14655,7 +14647,8 @@ var FullCalendar = (function (exports) {
             _this.compileColGroupStats = memoizeArraylike(compileColGroupStat, isColGroupStatsEqual);
             _this.renderMicroColGroups = memoizeArraylike(renderMicroColGroup); // yucky to memoize VNodes, but much more efficient for consumers
             _this.clippedScrollerRefs = new RefMap();
-            _this.scrollerElRefs = new RefMap(_this._handleScrollerEl.bind(_this)); // doesn't hold non-scrolling els used just for padding
+            // doesn't hold non-scrolling els used just for padding
+            _this.scrollerElRefs = new RefMap(_this._handleScrollerEl.bind(_this));
             _this.chunkElRefs = new RefMap(_this._handleChunkEl.bind(_this));
             _this.getStickyScrolling = memoizeArraylike(initStickyScrolling, null, destroyStickyScrolling);
             _this.getScrollSyncersBySection = memoizeHashlike(initScrollSyncer.bind(_this, true), null, destroyScrollSyncer);
@@ -14667,25 +14660,28 @@ var FullCalendar = (function (exports) {
             _this.rowUnstableMap = new Map(); // no need to groom. always self-cancels
             _this.rowInnerMaxHeightMap = new Map();
             _this.anyRowHeightsChanged = false;
+            _this.recentSizingCnt = 0;
             _this.state = {
                 shrinkWidths: [],
                 forceYScrollbars: false,
                 forceXScrollbars: false,
                 scrollerClientWidths: {},
                 scrollerClientHeights: {},
-                sectionRowMaxHeights: []
+                sectionRowMaxHeights: [],
             };
-            _this.handleSizing = function (sectionRowMaxHeightsChanged) {
+            _this.handleSizing = function (isForcedResize, sectionRowMaxHeightsChanged) {
+                if (!_this.allowSizing()) {
+                    return;
+                }
                 if (!sectionRowMaxHeightsChanged) { // something else changed, probably external
                     _this.anyRowHeightsChanged = true;
                 }
                 var otherState = {};
                 // if reacting to self-change of sectionRowMaxHeightsChanged, or not stable, don't do anything
-                if (!sectionRowMaxHeightsChanged && !_this.rowUnstableMap.size) {
+                if (isForcedResize || (!sectionRowMaxHeightsChanged && !_this.rowUnstableMap.size)) {
                     otherState.sectionRowMaxHeights = _this.computeSectionRowMaxHeights();
                 }
-                _this.setState(__assign(__assign({ shrinkWidths: _this.computeShrinkWidths() }, _this.computeScrollerDims()), otherState // wtf
-                ), function () {
+                _this.setState(__assign(__assign({ shrinkWidths: _this.computeShrinkWidths() }, _this.computeScrollerDims()), otherState), function () {
                     if (!_this.rowUnstableMap.size) {
                         _this.updateStickyScrolling(); // needs to happen AFTER final positioning committed to DOM
                     }
@@ -14706,7 +14702,7 @@ var FullCalendar = (function (exports) {
                     if (!rowUnstableMap.size && _this.anyRowHeightsChanged) {
                         _this.anyRowHeightsChanged = false;
                         _this.setState({
-                            sectionRowMaxHeights: _this.computeSectionRowMaxHeights()
+                            sectionRowMaxHeights: _this.computeSectionRowMaxHeights(),
                         });
                     }
                 }
@@ -14730,31 +14726,28 @@ var FullCalendar = (function (exports) {
             var footSectionNodes = [];
             while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {
                 headSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights));
-                configI++;
+                configI += 1;
             }
             while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {
                 bodySectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights));
-                configI++;
+                configI += 1;
             }
             while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {
                 footSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights));
-                configI++;
+                configI += 1;
             }
-            return (createElement(Fragment, null,
-                createElement("table", { ref: props.elRef, className: classNames.join(' ') },
-                    renderMacroColGroup(colGroupStats, shrinkWidths),
-                    Boolean(headSectionNodes.length) && createElement.apply(void 0, __spreadArrays(['thead', {}], headSectionNodes)),
-                    Boolean(bodySectionNodes.length) && createElement.apply(void 0, __spreadArrays(['tbody', {}], bodySectionNodes)),
-                    Boolean(footSectionNodes.length) && createElement.apply(void 0, __spreadArrays(['tfoot', {}], footSectionNodes)))));
+            var isBuggy = !getCanVGrowWithinCell(); // see NOTE in SimpleScrollGrid
+            return createElement('table', {
+                ref: props.elRef,
+                className: classNames.join(' '),
+            }, renderMacroColGroup(colGroupStats, shrinkWidths), Boolean(!isBuggy && headSectionNodes.length) && createElement.apply(void 0, __spreadArrays(['thead', {}], headSectionNodes)), Boolean(!isBuggy && bodySectionNodes.length) && createElement.apply(void 0, __spreadArrays(['tbody', {}], bodySectionNodes)), Boolean(!isBuggy && footSectionNodes.length) && createElement.apply(void 0, __spreadArrays(['tfoot', {}], footSectionNodes)), isBuggy && createElement.apply(void 0, __spreadArrays(['tbody', {}], headSectionNodes, bodySectionNodes, footSectionNodes)));
         };
         ScrollGrid.prototype.renderSection = function (sectionConfig, sectionIndex, colGroupStats, microColGroupNodes, sectionRowMaxHeights) {
             var _this = this;
             if ('outerContent' in sectionConfig) {
                 return (createElement(Fragment, { key: sectionConfig.key }, sectionConfig.outerContent));
             }
-            return (createElement("tr", { key: sectionConfig.key, className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, sectionConfig.chunks.map(function (chunkConfig, i) {
-                return _this.renderChunk(sectionConfig, sectionIndex, colGroupStats[i], microColGroupNodes[i], chunkConfig, i, (sectionRowMaxHeights[sectionIndex] || [])[i] || []);
-            })));
+            return (createElement("tr", { key: sectionConfig.key, className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, sectionConfig.chunks.map(function (chunkConfig, i) { return _this.renderChunk(sectionConfig, sectionIndex, colGroupStats[i], microColGroupNodes[i], chunkConfig, i, (sectionRowMaxHeights[sectionIndex] || [])[i] || []); })));
         };
         ScrollGrid.prototype.renderChunk = function (sectionConfig, sectionIndex, colGroupStat, microColGroupNode, chunkConfig, chunkIndex, rowHeights) {
             if ('outerContent' in chunkConfig) {
@@ -14782,7 +14775,7 @@ var FullCalendar = (function (exports) {
                 expandRows: expandRows,
                 syncRowHeights: Boolean(sectionConfig.syncRowHeights),
                 rowSyncHeights: rowHeights,
-                reportRowHeightChange: this.handleRowHeightChange
+                reportRowHeightChange: this.handleRowHeightChange,
             });
             var overflowX = forceXScrollbars ? (isLastSection ? 'scroll' : 'scroll-hidden') :
                 !allowXScrolling ? 'hidden' :
@@ -14797,19 +14790,30 @@ var FullCalendar = (function (exports) {
         };
         ScrollGrid.prototype.componentDidMount = function () {
             this.updateScrollSyncers();
-            this.handleSizing();
+            this.handleSizing(false);
             this.context.addResizeHandler(this.handleSizing);
         };
         ScrollGrid.prototype.componentDidUpdate = function (prevProps, prevState) {
             this.updateScrollSyncers();
             // TODO: need better solution when state contains non-sizing things
-            this.handleSizing(prevState.sectionRowMaxHeights !== this.state.sectionRowMaxHeights);
+            this.handleSizing(false, prevState.sectionRowMaxHeights !== this.state.sectionRowMaxHeights);
         };
         ScrollGrid.prototype.componentWillUnmount = function () {
             this.context.removeResizeHandler(this.handleSizing);
             this.destroyStickyScrolling();
             this.destroyScrollSyncers();
         };
+        ScrollGrid.prototype.allowSizing = function () {
+            var now = new Date();
+            if (!this.lastSizingDate ||
+                now.valueOf() > this.lastSizingDate.valueOf() + 1000 // beyond a second?
+            ) {
+                this.lastSizingDate = now;
+                this.recentSizingCnt = 0;
+                return true;
+            }
+            return (this.recentSizingCnt += 1) <= 10;
+        };
         ScrollGrid.prototype.computeShrinkWidths = function () {
             var _this = this;
             var colGroupStats = this.compileColGroupStats(this.props.colGroups.map(function (colGroup) { return [colGroup]; }));
@@ -14827,25 +14831,21 @@ var FullCalendar = (function (exports) {
         // has the side effect of grooming rowInnerMaxHeightMap
         // TODO: somehow short-circuit if there are no new height changes
         ScrollGrid.prototype.computeSectionRowMaxHeights = function () {
-            var oldHeightMap = this.rowInnerMaxHeightMap;
             var newHeightMap = new Map();
             var _a = this.getDims(), sectionCnt = _a[0], chunksPerSection = _a[1];
             var sectionRowMaxHeights = [];
-            for (var sectionI = 0; sectionI < sectionCnt; sectionI++) {
+            for (var sectionI = 0; sectionI < sectionCnt; sectionI += 1) {
                 var sectionConfig = this.props.sections[sectionI];
                 var assignableHeights = []; // chunk, row
                 if (sectionConfig && sectionConfig.syncRowHeights) {
                     var rowHeightsByChunk = [];
-                    for (var chunkI = 0; chunkI < chunksPerSection; chunkI++) {
+                    for (var chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {
                         var index = sectionI * chunksPerSection + chunkI;
                         var rowHeights = [];
                         var chunkEl = this.chunkElRefs.currentMap[index];
                         if (chunkEl) {
                             rowHeights = findElements(chunkEl, '.fc-scrollgrid-sync-table tr').map(function (rowEl) {
-                                var max = oldHeightMap.get(rowEl);
-                                if (max == null) {
-                                    max = getRowInnerMaxHeight(rowEl);
-                                }
+                                var max = getRowInnerMaxHeight(rowEl);
                                 newHeightMap.set(rowEl, max);
                                 return max;
                             });
@@ -14857,7 +14857,7 @@ var FullCalendar = (function (exports) {
                     }
                     var rowCnt = rowHeightsByChunk[0].length;
                     var isEqualRowCnt = true;
-                    for (var chunkI = 1; chunkI < chunksPerSection; chunkI++) {
+                    for (var chunkI = 1; chunkI < chunksPerSection; chunkI += 1) {
                         var isOuterContent = sectionConfig.chunks[chunkI] && sectionConfig.chunks[chunkI].outerContent !== undefined; // can be null
                         if (!isOuterContent && rowHeightsByChunk[chunkI].length !== rowCnt) { // skip outer content
                             isEqualRowCnt = false;
@@ -14866,43 +14866,44 @@ var FullCalendar = (function (exports) {
                     }
                     if (!isEqualRowCnt) {
                         var chunkHeightSums = [];
-                        for (var chunkI = 0; chunkI < chunksPerSection; chunkI++) {
-                            chunkHeightSums.push(sumNumbers(rowHeightsByChunk[chunkI]) + rowHeightsByChunk[chunkI].length // add in border
-                            );
+                        for (var chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {
+                            chunkHeightSums.push(sumNumbers(rowHeightsByChunk[chunkI]) + rowHeightsByChunk[chunkI].length);
                         }
                         var maxTotalSum = Math.max.apply(Math, chunkHeightSums);
-                        for (var chunkI = 0; chunkI < chunksPerSection; chunkI++) {
+                        for (var chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {
                             var rowInChunkCnt = rowHeightsByChunk[chunkI].length;
                             var rowInChunkTotalHeight = maxTotalSum - rowInChunkCnt; // subtract border
-                            var rowInChunkHeightOthers = Math.floor(rowInChunkTotalHeight / rowInChunkCnt); // height of non-first row. we do this to avoid rounding, because it's unreliable within a table
-                            var rowInChunkHeightFirst = rowInChunkTotalHeight - rowInChunkHeightOthers * (rowInChunkCnt - 1); // whatever is leftover goes to the first row
+                            // height of non-first row. we do this to avoid rounding, because it's unreliable within a table
+                            var rowInChunkHeightOthers = Math.floor(rowInChunkTotalHeight / rowInChunkCnt);
+                            // whatever is leftover goes to the first row
+                            var rowInChunkHeightFirst = rowInChunkTotalHeight - rowInChunkHeightOthers * (rowInChunkCnt - 1);
                             var rowInChunkHeights = [];
                             var row = 0;
                             if (row < rowInChunkCnt) {
                                 rowInChunkHeights.push(rowInChunkHeightFirst);
-                                row++;
+                                row += 1;
                             }
                             while (row < rowInChunkCnt) {
                                 rowInChunkHeights.push(rowInChunkHeightOthers);
-                                row++;
+                                row += 1;
                             }
                             assignableHeights.push(rowInChunkHeights);
                         }
                     }
                     else {
-                        for (var chunkI = 0; chunkI < chunksPerSection; chunkI++) {
+                        for (var chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {
                             assignableHeights.push([]);
                         }
-                        for (var row = 0; row < rowCnt; row++) {
+                        for (var row = 0; row < rowCnt; row += 1) {
                             var rowHeightsAcrossChunks = [];
-                            for (var chunkI = 0; chunkI < chunksPerSection; chunkI++) {
+                            for (var chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {
                                 var h = rowHeightsByChunk[chunkI][row];
                                 if (h != null) { // protect against outerContent
                                     rowHeightsAcrossChunks.push(h);
                                 }
                             }
                             var maxHeight = Math.max.apply(Math, rowHeightsAcrossChunks);
-                            for (var chunkI = 0; chunkI < chunksPerSection; chunkI++) {
+                            for (var chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {
                                 assignableHeights[chunkI].push(maxHeight);
                             }
                         }
@@ -14924,7 +14925,7 @@ var FullCalendar = (function (exports) {
             var forceXScrollbars = false;
             var scrollerClientWidths = {};
             var scrollerClientHeights = {};
-            for (var sectionI = 0; sectionI < sectionCnt; sectionI++) { // along edge
+            for (var sectionI = 0; sectionI < sectionCnt; sectionI += 1) { // along edge
                 var index = sectionI * chunksPerSection + sideScrollI;
                 var scroller = currentScrollers[index];
                 if (scroller && scroller.needsYScrolling()) {
@@ -14932,7 +14933,7 @@ var FullCalendar = (function (exports) {
                     break;
                 }
             }
-            for (var chunkI = 0; chunkI < chunksPerSection; chunkI++) { // along last row
+            for (var chunkI = 0; chunkI < chunksPerSection; chunkI += 1) { // along last row
                 var index = lastSectionI * chunksPerSection + chunkI;
                 var scroller = currentScrollers[index];
                 if (scroller && scroller.needsXScrolling()) {
@@ -14940,12 +14941,13 @@ var FullCalendar = (function (exports) {
                     break;
                 }
             }
-            for (var sectionI = 0; sectionI < sectionCnt; sectionI++) {
-                for (var chunkI = 0; chunkI < chunksPerSection; chunkI++) {
+            for (var sectionI = 0; sectionI < sectionCnt; sectionI += 1) {
+                for (var chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {
                     var index = sectionI * chunksPerSection + chunkI;
                     var scrollerEl = scrollerEls[index];
                     if (scrollerEl) {
-                        var harnessEl = scrollerEl.parentNode; // TODO: weird way to get this. need harness b/c doesn't include table borders
+                        // TODO: weird way to get this. need harness b/c doesn't include table borders
+                        var harnessEl = scrollerEl.parentNode;
                         scrollerClientWidths[index] = Math.floor(harnessEl.getBoundingClientRect().width - ((chunkI === sideScrollI && forceYScrollbars)
                             ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future
                             : 0));
@@ -14961,9 +14963,7 @@ var FullCalendar = (function (exports) {
             var isRtl = this.context.isRtl;
             var argsByKey = this.scrollerElRefs.getAll().map(function (scrollEl) { return [scrollEl, isRtl]; });
             var stickyScrollings = this.getStickyScrolling(argsByKey);
-            for (var key in stickyScrollings) {
-                stickyScrollings[key].updateSize();
-            }
+            stickyScrollings.forEach(function (stickyScrolling) { return stickyScrolling.updateSize(); });
             this.stickyScrollings = stickyScrollings;
         };
         ScrollGrid.prototype.destroyStickyScrolling = function () {
@@ -14975,12 +14975,12 @@ var FullCalendar = (function (exports) {
             var scrollElsBySection = {};
             var scrollElsByColumn = {};
             var scrollElMap = this.scrollerElRefs.currentMap;
-            for (var sectionI = 0; sectionI < sectionCnt; sectionI++) {
+            for (var sectionI = 0; sectionI < sectionCnt; sectionI += 1) {
                 var startIndex = sectionI * chunksPerSection;
                 var endIndex = startIndex + chunksPerSection;
                 scrollElsBySection[sectionI] = collectFromHash(scrollElMap, startIndex, endIndex, 1); // use the filtered
             }
-            for (var col = 0; col < chunksPerSection; col++) {
+            for (var col = 0; col < chunksPerSection; col += 1) {
                 scrollElsByColumn[col] = this.scrollerElRefs.collect(col, cnt, chunksPerSection); // DON'T use the filtered
             }
             this.scrollSyncersBySection = this.getScrollSyncersBySection(scrollElsBySection);
@@ -15031,7 +15031,7 @@ var FullCalendar = (function (exports) {
     ScrollGrid.addStateEquality({
         shrinkWidths: isArraysEqual,
         scrollerClientWidths: isPropsEqual,
-        scrollerClientHeights: isPropsEqual
+        scrollerClientHeights: isPropsEqual,
     });
     function sumNumbers(numbers) {
         var sum = 0;
@@ -15073,7 +15073,7 @@ var FullCalendar = (function (exports) {
             totalColMinWidth: totalColMinWidth,
             allowXScrolling: allowXScrolling,
             cols: colGroupConfig.cols,
-            width: colGroupConfig.width
+            width: colGroupConfig.width,
         };
     }
     function sumColProp(cols, propName) {
@@ -15088,7 +15088,7 @@ var FullCalendar = (function (exports) {
         return total;
     }
     var COL_GROUP_STAT_EQUALITY = {
-        cols: isColPropsEqual
+        cols: isColPropsEqual,
     };
     function isColGroupStatsEqual(stat0, stat1) {
         return compareObjs(stat0, stat1, COL_GROUP_STAT_EQUALITY);
@@ -15113,16 +15113,16 @@ var FullCalendar = (function (exports) {
 
     var scrollGridPlugin = createPlugin({
         deps: [
-            premiumCommonPlugin
+            premiumCommonPlugin,
         ],
-        scrollGridImpl: ScrollGrid
+        scrollGridImpl: ScrollGrid,
     });
 
     var contexts = [];
     var undoFuncs = [];
     var adaptivePlugin = createPlugin({
         deps: [
-            premiumCommonPlugin
+            premiumCommonPlugin,
         ],
         contextInit: function (context) {
             if (!contexts.length) {
@@ -15135,7 +15135,7 @@ var FullCalendar = (function (exports) {
                     removeGlobalHandlers();
                 }
             });
-        }
+        },
     });
     function attachGlobalHandlers() {
         window.addEventListener('beforeprint', handleBeforePrint);
@@ -15204,7 +15204,7 @@ var FullCalendar = (function (exports) {
                 scrollTop: el.scrollTop,
                 overflowX: computedStyle.overflowX,
                 overflowY: computedStyle.overflowY,
-                marginBottom: computedStyle.marginBottom
+                marginBottom: computedStyle.marginBottom,
             };
         });
     }
@@ -15251,12 +15251,12 @@ var FullCalendar = (function (exports) {
         { milliseconds: 500 },
         { milliseconds: 100 },
         { milliseconds: 10 },
-        { milliseconds: 1 }
+        { milliseconds: 1 },
     ];
     function buildTimelineDateProfile(dateProfile, dateEnv, allOptions, dateProfileGenerator) {
         var tDateProfile = {
             labelInterval: allOptions.slotLabelInterval,
-            slotDuration: allOptions.slotDuration
+            slotDuration: allOptions.slotDuration,
         };
         validateLabelAndSlot(tDateProfile, dateProfile, dateEnv); // validate after computed grid duration
         ensureLabelInterval(tDateProfile, dateProfile, dateEnv);
@@ -15265,9 +15265,7 @@ var FullCalendar = (function (exports) {
         var rawFormats = Array.isArray(input) ? input :
             (input != null) ? [input] :
                 computeHeaderFormats(tDateProfile, dateProfile, dateEnv, allOptions);
-        tDateProfile.headerFormats = rawFormats.map(function (rawFormat) {
-            return createFormatter(rawFormat);
-        });
+        tDateProfile.headerFormats = rawFormats.map(function (rawFormat) { return createFormatter(rawFormat); });
         tDateProfile.isTimeScale = Boolean(tDateProfile.slotDuration.milliseconds);
         var largeUnit = null;
         if (!tDateProfile.isTimeScale) {
@@ -15278,7 +15276,7 @@ var FullCalendar = (function (exports) {
         }
         tDateProfile.largeUnit = largeUnit;
         tDateProfile.emphasizeWeeks =
-            isSingleDay(tDateProfile.slotDuration) &&
+            asCleanDays(tDateProfile.slotDuration) === 1 &&
                 currentRangeAs('weeks', dateProfile, dateEnv) >= 2 &&
                 !allOptions.businessHours;
         /*
@@ -15332,7 +15330,7 @@ var FullCalendar = (function (exports) {
         date = normalizedStart;
         while (date < normalizedEnd) {
             if (isValidDate$1(date, tDateProfile, dateProfile, dateProfileGenerator)) {
-                snapIndex++;
+                snapIndex += 1;
                 snapDiffToIndex.push(snapIndex);
                 snapIndexToDiff.push(snapDiff);
             }
@@ -15340,7 +15338,7 @@ var FullCalendar = (function (exports) {
                 snapDiffToIndex.push(snapIndex + 0.5);
             }
             date = dateEnv.add(date, tDateProfile.snapDuration);
-            snapDiff++;
+            snapDiff += 1;
         }
         tDateProfile.snapDiffToIndex = snapDiffToIndex;
         tDateProfile.snapIndexToDiff = snapIndexToDiff;
@@ -15375,14 +15373,14 @@ var FullCalendar = (function (exports) {
                 var dayRange = range; // preserve original result
                 range = {
                     start: dateEnv.startOf(range.start, tDateProfile.largeUnit),
-                    end: dateEnv.startOf(range.end, tDateProfile.largeUnit)
+                    end: dateEnv.startOf(range.end, tDateProfile.largeUnit),
                 };
                 // if date is partially through the interval, or is in the same interval as the start,
                 // make the exclusive end be the *next* interval
                 if (range.end.valueOf() !== dayRange.end.valueOf() || range.end <= range.start) {
                     range = {
                         start: range.start,
-                        end: dateEnv.add(range.end, tDateProfile.slotDuration)
+                        end: dateEnv.add(range.end, tDateProfile.slotDuration),
                     };
                 }
             }
@@ -15393,7 +15391,7 @@ var FullCalendar = (function (exports) {
         if (dateProfileGenerator.isHiddenDay(date)) {
             return false;
         }
-        else if (tDateProfile.isTimeScale) {
+        if (tDateProfile.isTimeScale) {
             // determine if the time is within slotMinTime/slotMaxTime, which may have wacky values
             var day = startOfDay(date);
             var timeMs = date.valueOf() - day.valueOf();
@@ -15401,9 +15399,7 @@ var FullCalendar = (function (exports) {
             ms = ((ms % 86400000) + 86400000) % 86400000; // make negative values wrap to 24hr clock
             return ms < tDateProfile.timeWindowMs; // before the slotMaxTime?
         }
-        else {
-            return true;
-        }
+        return true;
     }
     function validateLabelAndSlot(tDateProfile, dateProfile, dateEnv) {
         var currentRange = dateProfile.currentRange;
@@ -15551,7 +15547,7 @@ var FullCalendar = (function (exports) {
                     hour: 'numeric',
                     minute: '2-digit',
                     omitZeroMinute: true,
-                    meridiem: 'short'
+                    meridiem: 'short',
                 };
                 break;
             case 'minute':
@@ -15559,17 +15555,16 @@ var FullCalendar = (function (exports) {
                 if ((asRoughMinutes(labelInterval) / 60) >= MAX_AUTO_SLOTS_PER_LABEL) {
                     format0 = {
                         hour: 'numeric',
-                        meridiem: 'short'
-                    };
-                    format1 = function (params) {
-                        return ':' + padStart(params.date.minute, 2); // ':30'
+                        meridiem: 'short',
                     };
+                    format1 = function (params) { return (':' + padStart(params.date.minute, 2) // ':30'
+                    ); };
                 }
                 else {
                     format0 = {
                         hour: 'numeric',
                         minute: 'numeric',
-                        meridiem: 'short'
+                        meridiem: 'short',
                     };
                 }
                 break;
@@ -15577,9 +15572,8 @@ var FullCalendar = (function (exports) {
                 // sufficiently large number of different second cells?
                 if ((asRoughSeconds(labelInterval) / 60) >= MAX_AUTO_SLOTS_PER_LABEL) {
                     format0 = { hour: 'numeric', minute: '2-digit', meridiem: 'lowercase' }; // '8:30 PM'
-                    format1 = function (params) {
-                        return ':' + padStart(params.date.second, 2); // ':30'
-                    };
+                    format1 = function (params) { return (':' + padStart(params.date.second, 2) // ':30'
+                    ); };
                 }
                 else {
                     format0 = { hour: 'numeric', minute: '2-digit', second: '2-digit', meridiem: 'lowercase' }; // '8:30:45 PM'
@@ -15587,9 +15581,7 @@ var FullCalendar = (function (exports) {
                 break;
             case 'millisecond':
                 format0 = { hour: 'numeric', minute: '2-digit', second: '2-digit', meridiem: 'lowercase' }; // '8:30:45 PM'
-                format1 = function (params) {
-                    return '.' + padStart(params.millisecond, 3);
-                };
+                format1 = function (params) { return ('.' + padStart(params.millisecond, 3)); };
                 break;
         }
         return [].concat(format0 || [], format1 || [], format2 || []);
@@ -15630,39 +15622,41 @@ var FullCalendar = (function (exports) {
     function buildCellRows(tDateProfile, dateEnv) {
         var slotDates = tDateProfile.slotDates;
         var formats = tDateProfile.headerFormats;
-        var cellRows = formats.map(function (format) { return []; }); // indexed by row,col
+        var cellRows = formats.map(function () { return []; }); // indexed by row,col
+        var slotAsDays = asCleanDays(tDateProfile.slotDuration);
+        var guessedSlotUnit = slotAsDays === 7 ? 'week' :
+            slotAsDays === 1 ? 'day' :
+                null;
         // specifically for navclicks
-        var rowUnits = formats.map(function (format) {
-            return format.getLargestUnit ? format.getLargestUnit() : null;
-        });
+        var rowUnitsFromFormats = formats.map(function (format) { return (format.getLargestUnit ? format.getLargestUnit() : null); });
         // builds cellRows and slotCells
-        for (var i = 0; i < slotDates.length; i++) {
+        for (var i = 0; i < slotDates.length; i += 1) {
             var date = slotDates[i];
             var isWeekStart = tDateProfile.isWeekStarts[i];
-            for (var row = 0; row < formats.length; row++) {
+            for (var row = 0; row < formats.length; row += 1) {
                 var format = formats[row];
                 var rowCells = cellRows[row];
                 var leadingCell = rowCells[rowCells.length - 1];
-                var isSuperRow = (formats.length > 1) && (row < (formats.length - 1)); // more than one row and not the last
+                var isLastRow = row === formats.length - 1;
+                var isSuperRow = formats.length > 1 && !isLastRow; // more than one row and not the last
                 var newCell = null;
+                var rowUnit = rowUnitsFromFormats[row] || (isLastRow ? guessedSlotUnit : null);
                 if (isSuperRow) {
                     var text = dateEnv.format(date, format);
                     if (!leadingCell || (leadingCell.text !== text)) {
-                        newCell = buildCellObject(date, text, rowUnits[row]);
+                        newCell = buildCellObject(date, text, rowUnit);
                     }
                     else {
                         leadingCell.colspan += 1;
                     }
                 }
+                else if (!leadingCell ||
+                    isInt(dateEnv.countDurationsBetween(tDateProfile.normalizedRange.start, date, tDateProfile.labelInterval))) {
+                    var text = dateEnv.format(date, format);
+                    newCell = buildCellObject(date, text, rowUnit);
+                }
                 else {
-                    if (!leadingCell ||
-                        isInt(dateEnv.countDurationsBetween(tDateProfile.normalizedRange.start, date, tDateProfile.labelInterval))) {
-                        var text = dateEnv.format(date, format);
-                        newCell = buildCellObject(date, text, rowUnits[row]);
-                    }
-                    else {
-                        leadingCell.colspan += 1;
-                    }
+                    leadingCell.colspan += 1;
                 }
                 if (newCell) {
                     newCell.weekStart = isWeekStart;
@@ -15676,11 +15670,37 @@ var FullCalendar = (function (exports) {
         return { date: date, text: text, rowUnit: rowUnit, colspan: 1, isWeekStart: false };
     }
 
+    var TimelineHeaderThInner = /** @class */ (function (_super) {
+        __extends(TimelineHeaderThInner, _super);
+        function TimelineHeaderThInner() {
+            return _super !== null && _super.apply(this, arguments) || this;
+        }
+        TimelineHeaderThInner.prototype.render = function () {
+            var _a = this, props = _a.props, context = _a.context;
+            var navLinkAttrs = props.navLinkData
+                ? { 'data-navlink': props.navLinkData, tabIndex: 0 }
+                : {};
+            return (createElement(ContentHook, { hookProps: props.hookProps, content: context.options.slotLabelContent, defaultContent: renderInnerContent$5 }, function (innerElRef, innerContent) { return (createElement("a", __assign({ ref: innerElRef, className: 'fc-timeline-slot-cushion fc-scrollgrid-sync-inner' + (props.isSticky ? ' fc-sticky' : '') }, navLinkAttrs), innerContent)); }));
+        };
+        return TimelineHeaderThInner;
+    }(BaseComponent));
+    function renderInnerContent$5(props) {
+        return props.text;
+    }
+    function refineHookProps(input) {
+        return {
+            level: input.level,
+            date: input.dateEnv.toDate(input.dateMarker),
+            view: input.viewApi,
+            text: input.text,
+        };
+    }
+
     var TimelineHeaderTh = /** @class */ (function (_super) {
         __extends(TimelineHeaderTh, _super);
         function TimelineHeaderTh() {
             var _this = _super !== null && _super.apply(this, arguments) || this;
-            _this.refineHookProps = memoizeObjArg(refineHookProps$1);
+            _this.refineHookProps = memoizeObjArg(refineHookProps);
             _this.normalizeClassNames = buildClassNameNormalizer();
             return _this;
         }
@@ -15702,42 +15722,19 @@ var FullCalendar = (function (exports) {
                 ? buildNavLinkData(cell.date, cell.rowUnit)
                 : null;
             var hookProps = this.refineHookProps({
+                level: props.rowLevel,
                 dateMarker: cell.date,
                 text: cell.text,
                 dateEnv: context.dateEnv,
-                viewApi: context.viewApi
+                viewApi: context.viewApi,
             });
             var customClassNames = this.normalizeClassNames(options.slotLabelClassNames, hookProps);
             return (createElement(MountHook, { hookProps: hookProps, didMount: options.slotLabelDidMount, willUnmount: options.slotLabelWillUnmount }, function (rootElRef) { return (createElement("th", { ref: rootElRef, className: classNames.concat(customClassNames).join(' '), "data-date": dateEnv.formatIso(cell.date, { omitTime: !tDateProfile.isTimeScale, omitTimeZoneOffset: true }), colSpan: cell.colspan },
-                createElement("div", { className: 'fc-timeline-slot-frame', style: { height: props.rowInnerHeight } },
+                createElement("div", { className: "fc-timeline-slot-frame", style: { height: props.rowInnerHeight } },
                     createElement(TimelineHeaderThInner, { hookProps: hookProps, isSticky: props.isSticky, navLinkData: navLinkData })))); }));
         };
         return TimelineHeaderTh;
     }(BaseComponent));
-    var TimelineHeaderThInner = /** @class */ (function (_super) {
-        __extends(TimelineHeaderThInner, _super);
-        function TimelineHeaderThInner() {
-            return _super !== null && _super.apply(this, arguments) || this;
-        }
-        TimelineHeaderThInner.prototype.render = function () {
-            var _a = this, props = _a.props, context = _a.context;
-            var navLinkAttrs = props.navLinkData
-                ? { 'data-navlink': props.navLinkData, tabIndex: 0 }
-                : {};
-            return (createElement(ContentHook, { hookProps: props.hookProps, content: context.options.slotLabelContent, defaultContent: renderInnerContent$5 }, function (innerElRef, innerContent) { return (createElement("a", __assign({ ref: innerElRef, className: 'fc-timeline-slot-cushion fc-scrollgrid-sync-inner' + (props.isSticky ? ' fc-sticky' : '') }, navLinkAttrs), innerContent)); }));
-        };
-        return TimelineHeaderThInner;
-    }(BaseComponent));
-    function renderInnerContent$5(props) {
-        return props.text;
-    }
-    function refineHookProps$1(input) {
-        return {
-            date: input.dateEnv.toDate(input.dateMarker),
-            view: input.viewApi,
-            text: input.text
-        };
-    }
 
     var TimelineHeaderRows = /** @class */ (function (_super) {
         __extends(TimelineHeaderRows, _super);
@@ -15747,14 +15744,15 @@ var FullCalendar = (function (exports) {
         TimelineHeaderRows.prototype.render = function () {
             var _a = this.props, dateProfile = _a.dateProfile, tDateProfile = _a.tDateProfile, rowInnerHeights = _a.rowInnerHeights, todayRange = _a.todayRange, nowDate = _a.nowDate;
             var cellRows = tDateProfile.cellRows;
-            return (createElement(Fragment, null, cellRows.map(function (rowCells, i) {
-                var isLast = i === cellRows.length - 1;
+            return (createElement(Fragment, null, cellRows.map(function (rowCells, rowLevel) {
+                var isLast = rowLevel === cellRows.length - 1;
                 var isChrono = tDateProfile.isTimeScale && isLast; // the final row, with times?
                 var classNames = [
                     'fc-timeline-header-row',
-                    isChrono ? 'fc-timeline-header-row-chrono' : ''
+                    isChrono ? 'fc-timeline-header-row-chrono' : '',
                 ];
-                return (createElement("tr", { key: i, className: classNames.join(' ') }, rowCells.map(function (cell) { return (createElement(TimelineHeaderTh, { key: cell.date.toISOString(), cell: cell, dateProfile: dateProfile, tDateProfile: tDateProfile, todayRange: todayRange, nowDate: nowDate, rowInnerHeight: rowInnerHeights && rowInnerHeights[i], isSticky: !isLast })); })));
+                return ( // eslint-disable-next-line react/no-array-index-key
+                createElement("tr", { key: rowLevel, className: classNames.join(' ') }, rowCells.map(function (cell) { return (createElement(TimelineHeaderTh, { key: cell.date.toISOString(), cell: cell, rowLevel: rowLevel, dateProfile: dateProfile, tDateProfile: tDateProfile, todayRange: todayRange, nowDate: nowDate, rowInnerHeight: rowInnerHeights && rowInnerHeights[rowLevel], isSticky: !isLast })); })));
             })));
         };
         return TimelineHeaderRows;
@@ -15773,13 +15771,18 @@ var FullCalendar = (function (exports) {
             // TODO: very repetitive
             // TODO: make part of tDateProfile?
             var timerUnit = greatestDurationDenominator(props.tDateProfile.slotDuration).unit;
-            return (createElement(NowTimer, { unit: timerUnit }, function (nowDate, todayRange) { return (createElement("div", { className: 'fc-timeline-header', ref: _this.rootElRef },
-                createElement("table", { className: 'fc-scrollgrid-sync-table', style: { minWidth: props.tableMinWidth, width: props.clientWidth } },
+            // WORKAROUND: make ignore slatCoords when out of sync with dateProfile
+            var slatCoords = props.slatCoords && props.slatCoords.dateProfile === props.dateProfile ? props.slatCoords : null;
+            return (createElement(NowTimer, { unit: timerUnit }, function (nowDate, todayRange) { return (createElement("div", { className: "fc-timeline-header", ref: _this.rootElRef },
+                createElement("table", { className: "fc-scrollgrid-sync-table", style: { minWidth: props.tableMinWidth, width: props.clientWidth } },
                     props.tableColGroupNode,
                     createElement("tbody", null,
                         createElement(TimelineHeaderRows, { dateProfile: props.dateProfile, tDateProfile: props.tDateProfile, nowDate: nowDate, todayRange: todayRange, rowInnerHeights: props.rowInnerHeights }))),
-                (context.options.nowIndicator && props.slatCoords && props.slatCoords.isDateInRange(nowDate)) &&
-                    createElement(NowIndicatorRoot, { isAxis: true, date: nowDate }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("div", { ref: rootElRef, className: ['fc-timeline-now-indicator-arrow'].concat(classNames).join(' '), style: { left: props.slatCoords.dateToCoord(nowDate) } }, innerContent)); }))); }));
+                context.options.nowIndicator && (
+                // need to have a container regardless of whether the current view has a visible now indicator
+                // because apparently removal of the element resets the scroll for some reasons (issue #5351).
+                // this issue doesn't happen for the timeline body however (
+                createElement("div", { className: "fc-timeline-now-indicator-container" }, (slatCoords && slatCoords.isDateInRange(nowDate)) && (createElement(NowIndicatorRoot, { isAxis: true, date: nowDate }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("div", { ref: rootElRef, className: ['fc-timeline-now-indicator-arrow'].concat(classNames).join(' '), style: { left: slatCoords.dateToCoord(nowDate) } }, innerContent)); })))))); }));
         };
         TimelineHeader.prototype.componentDidMount = function () {
             this.updateSize();
@@ -15798,36 +15801,6 @@ var FullCalendar = (function (exports) {
         return TimelineHeader;
     }(BaseComponent));
 
-    var TimelineSlatCell = /** @class */ (function (_super) {
-        __extends(TimelineSlatCell, _super);
-        function TimelineSlatCell() {
-            return _super !== null && _super.apply(this, arguments) || this;
-        }
-        TimelineSlatCell.prototype.render = function () {
-            var _a = this, props = _a.props, context = _a.context;
-            var dateEnv = context.dateEnv, options = context.options, theme = context.theme;
-            var date = props.date, tDateProfile = props.tDateProfile, isEm = props.isEm;
-            var dateMeta = getDateMeta(props.date, props.todayRange, props.nowDate, props.dateProfile);
-            var classNames = ['fc-timeline-slot', 'fc-timeline-slot-lane'];
-            var dataAttrs = { 'data-date': dateEnv.formatIso(date, { omitTimeZoneOffset: true, omitTime: !tDateProfile.isTimeScale }) };
-            var hookProps = __assign(__assign({ date: dateEnv.toDate(props.date) }, dateMeta), { view: context.viewApi });
-            if (isEm) {
-                classNames.push('fc-timeline-slot-em');
-            }
-            if (tDateProfile.isTimeScale) {
-                classNames.push(isInt(dateEnv.countDurationsBetween(tDateProfile.normalizedRange.start, props.date, tDateProfile.labelInterval)) ?
-                    'fc-timeline-slot-major' :
-                    'fc-timeline-slot-minor');
-            }
-            classNames.push.apply(classNames, (props.isDay
-                ? getDayClassNames(dateMeta, theme)
-                : getSlotClassNames(dateMeta, theme)));
-            return (createElement(RenderHook, { hookProps: hookProps, classNames: options.slotLaneClassNames, content: options.slotLaneContent, didMount: options.slotLaneDidMount, willUnmount: options.slotLaneWillUnmount, elRef: props.elRef }, function (rootElRef, customClassNames, innerElRef, innerContent) { return (createElement("td", __assign({ ref: rootElRef, className: classNames.concat(customClassNames).join(' ') }, dataAttrs),
-                createElement("div", { ref: innerElRef }, innerContent))); }));
-        };
-        return TimelineSlatCell;
-    }(BaseComponent));
-
     var TimelineCoords = /** @class */ (function () {
         function TimelineCoords(slatRootEl, // okay to expose?
         slatEls, dateProfile, tDateProfile, dateEnv, isRtl) {
@@ -15837,21 +15810,17 @@ var FullCalendar = (function (exports) {
             this.dateEnv = dateEnv;
             this.isRtl = isRtl;
             this.outerCoordCache = new PositionCache(slatRootEl, slatEls, true, // isHorizontal
-            false // isVertical
-            );
+            false);
             // for the inner divs within the slats
             // used for event rendering and scrollTime, to disregard slat border
             this.innerCoordCache = new PositionCache(slatRootEl, findDirectChildren(slatEls, 'div'), true, // isHorizontal
-            false // isVertical
-            );
+            false);
         }
         TimelineCoords.prototype.rangeToCoords = function (range) {
             if (this.isRtl) {
                 return { right: this.dateToCoord(range.start), left: this.dateToCoord(range.end) };
             }
-            else {
-                return { left: this.dateToCoord(range.start), right: this.dateToCoord(range.end) };
-            }
+            return { left: this.dateToCoord(range.start), right: this.dateToCoord(range.end) };
         };
         TimelineCoords.prototype.isDateInRange = function (date) {
             return rangeContainsMarker(this.dateProfile.currentRange, date);
@@ -15870,21 +15839,22 @@ var FullCalendar = (function (exports) {
                 return (outerCoordCache.rights[slotIndex] -
                     (innerCoordCache.getWidth(slotIndex) * partial)) - outerCoordCache.originClientRect.width;
             }
-            else {
-                return (outerCoordCache.lefts[slotIndex] +
-                    (innerCoordCache.getWidth(slotIndex) * partial));
-            }
+            return (outerCoordCache.lefts[slotIndex] +
+                (innerCoordCache.getWidth(slotIndex) * partial));
         };
         // returned value is between 0 and the number of snaps
         TimelineCoords.prototype.computeDateSnapCoverage = function (date) {
             return computeDateSnapCoverage(date, this.tDateProfile, this.dateEnv);
         };
         TimelineCoords.prototype.computeDurationLeft = function (duration) {
-            var _a = this, dateProfile = _a.dateProfile, dateEnv = _a.dateEnv, isRtl = _a.isRtl;
+            var _a = this, dateProfile = _a.dateProfile, tDateProfile = _a.tDateProfile, dateEnv = _a.dateEnv, isRtl = _a.isRtl;
             var left = 0;
             if (dateProfile) {
-                left = this.dateToCoord(dateEnv.add(startOfDay(dateProfile.activeRange.start), // startOfDay needed?
-                duration));
+                var date = dateEnv.add(dateProfile.activeRange.start, duration);
+                if (!tDateProfile.isTimeScale) {
+                    date = startOfDay(date);
+                }
+                left = this.dateToCoord(date);
                 // hack to overcome the left borders of non-first slat
                 if (!isRtl && left) {
                     left += 1;
@@ -15900,23 +15870,70 @@ var FullCalendar = (function (exports) {
         if (snapDiff < 0) {
             return 0;
         }
-        else if (snapDiff >= tDateProfile.snapDiffToIndex.length) {
+        if (snapDiff >= tDateProfile.snapDiffToIndex.length) {
             return tDateProfile.snapCnt;
         }
-        else {
-            var snapDiffInt = Math.floor(snapDiff);
-            var snapCoverage = tDateProfile.snapDiffToIndex[snapDiffInt];
-            if (isInt(snapCoverage)) { // not an in-between value
-                snapCoverage += snapDiff - snapDiffInt; // add the remainder
+        var snapDiffInt = Math.floor(snapDiff);
+        var snapCoverage = tDateProfile.snapDiffToIndex[snapDiffInt];
+        if (isInt(snapCoverage)) { // not an in-between value
+            snapCoverage += snapDiff - snapDiffInt; // add the remainder
+        }
+        else {
+            // a fractional value, meaning the date is not visible
+            // always round up in this case. works for start AND end dates in a range.
+            snapCoverage = Math.ceil(snapCoverage);
+        }
+        return snapCoverage;
+    }
+
+    var TimelineSlatCell = /** @class */ (function (_super) {
+        __extends(TimelineSlatCell, _super);
+        function TimelineSlatCell() {
+            return _super !== null && _super.apply(this, arguments) || this;
+        }
+        TimelineSlatCell.prototype.render = function () {
+            var _a = this, props = _a.props, context = _a.context;
+            var dateEnv = context.dateEnv, options = context.options, theme = context.theme;
+            var date = props.date, tDateProfile = props.tDateProfile, isEm = props.isEm;
+            var dateMeta = getDateMeta(props.date, props.todayRange, props.nowDate, props.dateProfile);
+            var classNames = ['fc-timeline-slot', 'fc-timeline-slot-lane'];
+            var dataAttrs = { 'data-date': dateEnv.formatIso(date, { omitTimeZoneOffset: true, omitTime: !tDateProfile.isTimeScale }) };
+            var hookProps = __assign(__assign({ date: dateEnv.toDate(props.date) }, dateMeta), { view: context.viewApi });
+            if (isEm) {
+                classNames.push('fc-timeline-slot-em');
             }
-            else {
-                // a fractional value, meaning the date is not visible
-                // always round up in this case. works for start AND end dates in a range.
-                snapCoverage = Math.ceil(snapCoverage);
+            if (tDateProfile.isTimeScale) {
+                classNames.push(isInt(dateEnv.countDurationsBetween(tDateProfile.normalizedRange.start, props.date, tDateProfile.labelInterval)) ?
+                    'fc-timeline-slot-major' :
+                    'fc-timeline-slot-minor');
             }
-            return snapCoverage;
+            classNames.push.apply(classNames, (props.isDay
+                ? getDayClassNames(dateMeta, theme)
+                : getSlotClassNames(dateMeta, theme)));
+            return (createElement(RenderHook, { hookProps: hookProps, classNames: options.slotLaneClassNames, content: options.slotLaneContent, didMount: options.slotLaneDidMount, willUnmount: options.slotLaneWillUnmount, elRef: props.elRef }, function (rootElRef, customClassNames, innerElRef, innerContent) { return (createElement("td", __assign({ ref: rootElRef, className: classNames.concat(customClassNames).join(' ') }, dataAttrs),
+                createElement("div", { ref: innerElRef }, innerContent))); }));
+        };
+        return TimelineSlatCell;
+    }(BaseComponent));
+
+    var TimelineSlatsBody = /** @class */ (function (_super) {
+        __extends(TimelineSlatsBody, _super);
+        function TimelineSlatsBody() {
+            return _super !== null && _super.apply(this, arguments) || this;
         }
-    }
+        TimelineSlatsBody.prototype.render = function () {
+            var props = this.props;
+            var tDateProfile = props.tDateProfile, cellElRefs = props.cellElRefs;
+            var slotDates = tDateProfile.slotDates, isWeekStarts = tDateProfile.isWeekStarts;
+            var isDay = !tDateProfile.isTimeScale && !tDateProfile.largeUnit;
+            return (createElement("tbody", null,
+                createElement("tr", null, slotDates.map(function (slotDate, i) {
+                    var key = slotDate.toISOString();
+                    return (createElement(TimelineSlatCell, { key: key, elRef: cellElRefs.createRef(key), date: slotDate, dateProfile: props.dateProfile, tDateProfile: tDateProfile, nowDate: props.nowDate, todayRange: props.todayRange, isEm: isWeekStarts[i], isDay: isDay }));
+                }))));
+        };
+        return TimelineSlatsBody;
+    }(BaseComponent));
 
     var TimelineSlats = /** @class */ (function (_super) {
         __extends(TimelineSlats, _super);
@@ -15934,15 +15951,16 @@ var FullCalendar = (function (exports) {
                     }
                     return true;
                 }
+                return null; // best?
             };
             return _this;
         }
         TimelineSlats.prototype.render = function () {
             var _a = this, props = _a.props, context = _a.context;
-            return (createElement("div", { className: 'fc-timeline-slots', ref: this.rootElRef },
+            return (createElement("div", { className: "fc-timeline-slots", ref: this.rootElRef },
                 createElement("table", { className: context.theme.getClass('table'), style: {
                         minWidth: props.tableMinWidth,
-                        width: props.clientWidth
+                        width: props.clientWidth,
                     } },
                     props.tableColGroupNode,
                     createElement(TimelineSlatsBody, { cellElRefs: this.cellElRefs, dateProfile: props.dateProfile, tDateProfile: props.tDateProfile, nowDate: props.nowDate, todayRange: props.todayRange }))));
@@ -15964,7 +15982,8 @@ var FullCalendar = (function (exports) {
         TimelineSlats.prototype.updateSizing = function () {
             var _a = this, props = _a.props, context = _a.context;
             if (props.clientWidth !== null && // is sizing stable?
-                this.scrollResponder // it's possible to have clientWidth immediately after mount (when returning from print view), but w/o scrollResponder
+                this.scrollResponder
+            // ^it's possible to have clientWidth immediately after mount (when returning from print view), but w/o scrollResponder
             ) {
                 var rootEl = this.rootElRef.current;
                 if (rootEl.offsetWidth) {
@@ -15993,35 +16012,17 @@ var FullCalendar = (function (exports) {
                 return {
                     dateSpan: {
                         range: { start: start, end: end },
-                        allDay: !this.props.tDateProfile.isTimeScale
+                        allDay: !this.props.tDateProfile.isTimeScale,
                     },
                     dayEl: this.cellElRefs.currentMap[slatIndex],
                     left: outerCoordCache.lefts[slatIndex],
-                    right: outerCoordCache.rights[slatIndex]
+                    right: outerCoordCache.rights[slatIndex],
                 };
             }
             return null;
         };
         return TimelineSlats;
     }(BaseComponent));
-    var TimelineSlatsBody = /** @class */ (function (_super) {
-        __extends(TimelineSlatsBody, _super);
-        function TimelineSlatsBody() {
-            return _super !== null && _super.apply(this, arguments) || this;
-        }
-        TimelineSlatsBody.prototype.render = function () {
-            var props = this.props;
-            var tDateProfile = props.tDateProfile, cellElRefs = props.cellElRefs;
-            var slotDates = tDateProfile.slotDates, isWeekStarts = tDateProfile.isWeekStarts;
-            var isDay = !tDateProfile.isTimeScale && !tDateProfile.largeUnit;
-            return (createElement("tbody", null,
-                createElement("tr", null, slotDates.map(function (slotDate, i) {
-                    var key = slotDate.toISOString();
-                    return (createElement(TimelineSlatCell, { key: key, elRef: cellElRefs.createRef(key), date: slotDate, dateProfile: props.dateProfile, tDateProfile: tDateProfile, nowDate: props.nowDate, todayRange: props.todayRange, isEm: isWeekStarts[i], isDay: isDay }));
-                }))));
-        };
-        return TimelineSlatsBody;
-    }(BaseComponent));
     function collectCellEls$1(elMap, slotDates) {
         return slotDates.map(function (slotDate) {
             var key = slotDate.toISOString();
@@ -16037,7 +16038,7 @@ var FullCalendar = (function (exports) {
         TimelineLaneBg.prototype.render = function () {
             var props = this.props;
             var highlightSeg = [].concat(props.eventResizeSegs, props.dateSelectionSegs);
-            return props.timelineCoords && (createElement("div", { className: 'fc-timeline-bg' },
+            return props.timelineCoords && (createElement("div", { className: "fc-timeline-bg" },
                 this.renderSegs(props.businessHourSegs || [], props.timelineCoords, 'non-business'),
                 this.renderSegs(props.bgEventSegs || [], props.timelineCoords, 'bg-event'),
                 this.renderSegs(highlightSeg, props.timelineCoords, 'highlight')));
@@ -16046,9 +16047,9 @@ var FullCalendar = (function (exports) {
             var _a = this.props, todayRange = _a.todayRange, nowDate = _a.nowDate;
             var children = segs.map(function (seg) {
                 var coords = timelineCoords.rangeToCoords(seg); // seg has { start, end }
-                return (createElement("div", { key: buildEventRangeKey(seg.eventRange), className: 'fc-timeline-bg-harness', style: {
+                return (createElement("div", { key: buildEventRangeKey(seg.eventRange), className: "fc-timeline-bg-harness", style: {
                         left: coords.left,
-                        right: -coords.right // outwards from right edge (which is same as left edge)
+                        right: -coords.right,
                     } }, fillType === 'bg-event' ?
                     createElement(BgEvent, __assign({ seg: seg }, getSegMeta(seg, todayRange, nowDate))) :
                     renderFill(fillType)));
@@ -16067,15 +16068,18 @@ var FullCalendar = (function (exports) {
             var normalRange = normalizeRange(origRange, tDateProfile, dateEnv);
             var segs = [];
             // protect against when the span is entirely in an invalid date region
-            if (computeDateSnapCoverage(normalRange.start, tDateProfile, dateEnv) < computeDateSnapCoverage(normalRange.end, tDateProfile, dateEnv)) {
+            if (computeDateSnapCoverage(normalRange.start, tDateProfile, dateEnv)
+                < computeDateSnapCoverage(normalRange.end, tDateProfile, dateEnv)) {
                 // intersect the footprint's range with the grid's range
                 var slicedRange = intersectRanges(normalRange, tDateProfile.normalizedRange);
                 if (slicedRange) {
                     segs.push({
                         start: slicedRange.start,
                         end: slicedRange.end,
-                        isStart: slicedRange.start.valueOf() === normalRange.start.valueOf() && isValidDate$1(slicedRange.start, tDateProfile, dateProfile, dateProfileGenerator),
-                        isEnd: slicedRange.end.valueOf() === normalRange.end.valueOf() && isValidDate$1(addMs(slicedRange.end, -1), tDateProfile, dateProfile, dateProfileGenerator)
+                        isStart: slicedRange.start.valueOf() === normalRange.start.valueOf()
+                            && isValidDate$1(slicedRange.start, tDateProfile, dateProfile, dateProfileGenerator),
+                        isEnd: slicedRange.end.valueOf() === normalRange.end.valueOf()
+                            && isValidDate$1(addMs(slicedRange.end, -1), tDateProfile, dateProfile, dateProfileGenerator),
                     });
                 }
             }
@@ -16088,7 +16092,7 @@ var FullCalendar = (function (exports) {
         hour: 'numeric',
         minute: '2-digit',
         omitZeroMinute: true,
-        meridiem: 'narrow'
+        meridiem: 'narrow',
     });
     var TimelineEvent = /** @class */ (function (_super) {
         __extends(TimelineEvent, _super);
@@ -16125,7 +16129,7 @@ var FullCalendar = (function (exports) {
                 if (dims) { // MORE-link protection
                     var top_1 = 0;
                     var insertI = 0; // where to start searching for an insert position
-                    for (var i = 0; i < placements.length; i++) { // loop through existing placements
+                    for (var i = 0; i < placements.length; i += 1) { // loop through existing placements
                         var placement = placements[i];
                         if (testCollide(dims, top_1, placement.dims, placement.top)) {
                             top_1 = placement.top + placement.dims.height;
@@ -16134,7 +16138,7 @@ var FullCalendar = (function (exports) {
                     }
                     // move insertI along to be after the placement whos top is below the current top
                     while (insertI < placements.length && top_1 >= placements[insertI].top) {
-                        insertI++;
+                        insertI += 1;
                     }
                     placements.splice(insertI, 0, { key: key, dims: dims, top: top_1 }); // insert
                     maxBottom = Math.max(maxBottom, top_1 + dims.height);
@@ -16165,7 +16169,7 @@ var FullCalendar = (function (exports) {
             _this.harnessElRefs = new RefMap();
             _this.innerElRef = createRef();
             _this.state = {
-                segDims: null
+                segDims: null,
             };
             return _this;
         }
@@ -16185,12 +16189,11 @@ var FullCalendar = (function (exports) {
                 {};
             return (createElement(Fragment, null,
                 createElement(TimelineLaneBg, { businessHourSegs: slicedProps.businessHourSegs, bgEventSegs: slicedProps.bgEventSegs, timelineCoords: props.timelineCoords, eventResizeSegs: slicedProps.eventResize ? slicedProps.eventResize.segs : [] /* bad new empty array? */, dateSelectionSegs: slicedProps.dateSelectionSegs, nowDate: props.nowDate, todayRange: props.todayRange }),
-                createElement("div", { className: 'fc-timeline-events fc-scrollgrid-sync-inner', ref: this.innerElRef, style: { height: height /* computed by computeSegVerticals */ } },
+                createElement("div", { className: "fc-timeline-events fc-scrollgrid-sync-inner", ref: this.innerElRef, style: { height: height /* computed by computeSegVerticals */ } },
                     this.renderFgSegs(slicedProps.fgEventSegs, segHorizontals, segTops, hiddenSegs, false, false, false),
                     this.renderFgSegs(mirrorSegs, computeSegHorizontals$1(mirrorSegs, props.timelineCoords), // not memoized
                     segTops, // reuse same tops for mirror
-                    {}, Boolean(slicedProps.eventDrag), Boolean(slicedProps.eventResize), false // because mirror is never drawn for date selection
-                    ))));
+                    {}, Boolean(slicedProps.eventDrag), Boolean(slicedProps.eventResize), false))));
         };
         TimelineLane.prototype.componentDidMount = function () {
             this.updateSize();
@@ -16218,9 +16221,9 @@ var FullCalendar = (function (exports) {
                         return {
                             left: Math.round(harnessRect.left - originRect_1.left),
                             right: Math.round(harnessRect.right - originRect_1.left),
-                            height: Math.round(harnessRect.height)
+                            height: Math.round(harnessRect.height),
                         };
-                    })
+                    }),
                 }, function () {
                     if (props.onHeightChange) {
                         props.onHeightChange(_this.innerElRef.current, true);
@@ -16236,11 +16239,11 @@ var FullCalendar = (function (exports) {
                 var instanceId = seg.eventRange.instance.instanceId;
                 var horizontalCoords = segHorizontals[instanceId];
                 var top = segTops[instanceId];
-                return (createElement("div", { key: instanceId, ref: isMirror ? null : harnessElRefs.createRef(instanceId), className: 'fc-timeline-event-harness', style: {
+                return (createElement("div", { key: instanceId, ref: isMirror ? null : harnessElRefs.createRef(instanceId), className: "fc-timeline-event-harness", style: {
                         left: horizontalCoords ? horizontalCoords.left : '',
                         right: horizontalCoords ? -horizontalCoords.right : '',
                         top: top != null ? top : '',
-                        visibility: hiddenSegs[instanceId] ? 'hidden' : '' /* wtf, file @types/react bug */
+                        visibility: hiddenSegs[instanceId] ? 'hidden' : '' /* wtf, file @types/react bug */,
                     } },
                     createElement(TimelineEvent, __assign({ isTimeScale: _this.props.tDateProfile.isTimeScale, seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === _this.props.eventSelection /* TODO: bad for mirror? */ }, getSegMeta(seg, props.todayRange, props.nowDate)))));
             })));
@@ -16254,7 +16257,7 @@ var FullCalendar = (function (exports) {
             var _this = _super !== null && _super.apply(this, arguments) || this;
             _this.slatsRef = createRef();
             _this.state = {
-                coords: null
+                coords: null,
             };
             _this.handeEl = function (el) {
                 if (el) {
@@ -16278,16 +16281,16 @@ var FullCalendar = (function (exports) {
             var options = context.options;
             var dateProfile = props.dateProfile, tDateProfile = props.tDateProfile;
             var timerUnit = greatestDurationDenominator(tDateProfile.slotDuration).unit;
-            return (createElement("div", { className: 'fc-timeline-body', ref: this.handeEl, style: {
+            return (createElement("div", { className: "fc-timeline-body", ref: this.handeEl, style: {
                     minWidth: props.tableMinWidth,
                     height: props.clientHeight,
-                    width: props.clientWidth
+                    width: props.clientWidth,
                 } },
                 createElement(NowTimer, { unit: timerUnit }, function (nowDate, todayRange) { return (createElement(Fragment, null,
                     createElement(TimelineSlats, { ref: _this.slatsRef, dateProfile: dateProfile, tDateProfile: tDateProfile, nowDate: nowDate, todayRange: todayRange, clientWidth: props.clientWidth, tableColGroupNode: props.tableColGroupNode, tableMinWidth: props.tableMinWidth, onCoords: _this.handleCoords, onScrollLeftRequest: props.onScrollLeftRequest }),
                     createElement(TimelineLane, { dateProfile: dateProfile, tDateProfile: props.tDateProfile, nowDate: nowDate, todayRange: todayRange, nextDayThreshold: options.nextDayThreshold, businessHours: props.businessHours, eventStore: props.eventStore, eventUiBases: props.eventUiBases, dateSelection: props.dateSelection, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, timelineCoords: state.coords }),
-                    (options.nowIndicator && state.coords && state.coords.isDateInRange(nowDate)) &&
-                        createElement(NowIndicatorRoot, { isAxis: false, date: nowDate }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("div", { ref: rootElRef, className: ['fc-timeline-now-indicator-line'].concat(classNames).join(' '), style: { left: state.coords.dateToCoord(nowDate) } }, innerContent)); }))); })));
+                    (options.nowIndicator && state.coords && state.coords.isDateInRange(nowDate)) && (createElement("div", { className: "fc-timeline-now-indicator-container" },
+                        createElement(NowIndicatorRoot, { isAxis: false, date: nowDate }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("div", { ref: rootElRef, className: ['fc-timeline-now-indicator-line'].concat(classNames).join(' '), style: { left: state.coords.dateToCoord(nowDate) } }, innerContent)); }))))); })));
         };
         // Hit System
         // ------------------------------------------------------------------------------------------
@@ -16302,12 +16305,13 @@ var FullCalendar = (function (exports) {
                         left: slatHit.left,
                         right: slatHit.right,
                         top: 0,
-                        bottom: elHeight
+                        bottom: elHeight,
                     },
                     dayEl: slatHit.dayEl,
-                    layer: 0
+                    layer: 0,
                 };
             }
+            return null;
         };
         return TimelineGrid;
     }(DateComponent));
@@ -16320,7 +16324,7 @@ var FullCalendar = (function (exports) {
             _this.scrollGridRef = createRef();
             _this.state = {
                 slatCoords: null,
-                slotCushionMaxWidth: null
+                slotCushionMaxWidth: null,
             };
             _this.handleSlatCoords = function (slatCoords) {
                 _this.setState({ slatCoords: slatCoords });
@@ -16331,7 +16335,7 @@ var FullCalendar = (function (exports) {
             };
             _this.handleMaxCushionWidth = function (slotCushionMaxWidth) {
                 _this.setState({
-                    slotCushionMaxWidth: Math.ceil(slotCushionMaxWidth) // for less rerendering TODO: DRY
+                    slotCushionMaxWidth: Math.ceil(slotCushionMaxWidth),
                 });
             };
             return _this;
@@ -16345,7 +16349,7 @@ var FullCalendar = (function (exports) {
             var tDateProfile = this.buildTimelineDateProfile(props.dateProfile, context.dateEnv, options, context.dateProfileGenerator);
             var extraClassNames = [
                 'fc-timeline',
-                options.eventOverlap === false ? 'fc-timeline-overlap-disabled' : ''
+                options.eventOverlap === false ? 'fc-timeline-overlap-disabled' : '',
             ];
             var slotMinWidth = options.slotMinWidth;
             var slatCols = buildSlatCols(tDateProfile, slotMinWidth || this.computeFallbackSlotMinWidth(tDateProfile));
@@ -16356,8 +16360,8 @@ var FullCalendar = (function (exports) {
                     isSticky: stickyHeaderDates,
                     chunks: [{
                             key: 'timeline',
-                            content: function (contentArg) { return (createElement(TimelineHeader, { dateProfile: props.dateProfile, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, tableMinWidth: contentArg.tableMinWidth, tableColGroupNode: contentArg.tableColGroupNode, tDateProfile: tDateProfile, slatCoords: state.slatCoords, onMaxCushionWidth: slotMinWidth ? null : _this.handleMaxCushionWidth })); }
-                        }]
+                            content: function (contentArg) { return (createElement(TimelineHeader, { dateProfile: props.dateProfile, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, tableMinWidth: contentArg.tableMinWidth, tableColGroupNode: contentArg.tableColGroupNode, tDateProfile: tDateProfile, slatCoords: state.slatCoords, onMaxCushionWidth: slotMinWidth ? null : _this.handleMaxCushionWidth })); },
+                        }],
                 },
                 {
                     type: 'body',
@@ -16365,9 +16369,9 @@ var FullCalendar = (function (exports) {
                     liquid: true,
                     chunks: [{
                             key: 'timeline',
-                            content: function (contentArg) { return (createElement(TimelineGrid, __assign({}, props, { clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, tableMinWidth: contentArg.tableMinWidth, tableColGroupNode: contentArg.tableColGroupNode, tDateProfile: tDateProfile, onSlatCoords: _this.handleSlatCoords, onScrollLeftRequest: _this.handleScrollLeftRequest }))); }
-                        }]
-                }
+                            content: function (contentArg) { return (createElement(TimelineGrid, __assign({}, props, { clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, tableMinWidth: contentArg.tableMinWidth, tableColGroupNode: contentArg.tableColGroupNode, tDateProfile: tDateProfile, onSlatCoords: _this.handleSlatCoords, onScrollLeftRequest: _this.handleScrollLeftRequest }))); },
+                        }],
+                },
             ];
             if (stickyFooterScrollbar) {
                 sections.push({
@@ -16376,13 +16380,13 @@ var FullCalendar = (function (exports) {
                     isSticky: true,
                     chunks: [{
                             key: 'timeline',
-                            content: renderScrollShim
-                        }]
+                            content: renderScrollShim,
+                        }],
                 });
             }
             return (createElement(ViewRoot, { viewSpec: context.viewSpec }, function (rootElRef, classNames) { return (createElement("div", { ref: rootElRef, className: extraClassNames.concat(classNames).join(' ') },
                 createElement(ScrollGrid, { ref: _this.scrollGridRef, liquid: !props.isHeightAuto && !props.forPrint, colGroups: [
-                        { cols: slatCols }
+                        { cols: slatCols },
                     ], sections: sections }))); }));
         };
         TimelineView.prototype.computeFallbackSlotMinWidth = function (tDateProfile) {
@@ -16393,37 +16397,38 @@ var FullCalendar = (function (exports) {
     function buildSlatCols(tDateProfile, slotMinWidth) {
         return [{
                 span: tDateProfile.slotCnt,
-                minWidth: slotMinWidth || 1 // needs to be a non-zero number to trigger horizontal scrollbars!??????
+                minWidth: slotMinWidth || 1,
             }];
     }
 
     var timelinePlugin = createPlugin({
         deps: [
-            premiumCommonPlugin
+            premiumCommonPlugin,
         ],
         initialView: 'timelineDay',
         views: {
             timeline: {
                 component: TimelineView,
-                eventResizableFromStart: true // how is this consumed for TimelineView tho?
+                usesMinMaxTime: true,
+                eventResizableFromStart: true,
             },
             timelineDay: {
                 type: 'timeline',
-                duration: { days: 1 }
+                duration: { days: 1 },
             },
             timelineWeek: {
                 type: 'timeline',
-                duration: { weeks: 1 }
+                duration: { weeks: 1 },
             },
             timelineMonth: {
                 type: 'timeline',
-                duration: { months: 1 }
+                duration: { months: 1 },
             },
             timelineYear: {
                 type: 'timeline',
-                duration: { years: 1 }
-            }
-        }
+                duration: { years: 1 },
+            },
+        },
     });
 
     function massageEventDragMutation(eventMutation, hit0, hit1) {
@@ -16433,7 +16438,7 @@ var FullCalendar = (function (exports) {
             resource0 !== resource1) {
             eventMutation.resourceMutation = {
                 matchResourceId: resource0,
-                setResourceId: resource1
+                setResourceId: resource1,
             };
         }
     }
@@ -16480,15 +16485,13 @@ var FullCalendar = (function (exports) {
             var calendarApi = context.calendarApi;
             return {
                 oldResource: calendarApi.getResourceById(resourceMutation.matchResourceId),
-                newResource: calendarApi.getResourceById(resourceMutation.setResourceId)
-            };
-        }
-        else {
-            return {
-                oldResource: null,
-                newResource: null
+                newResource: calendarApi.getResourceById(resourceMutation.setResourceId),
             };
         }
+        return {
+            oldResource: null,
+            newResource: null,
+        };
     }
 
     var ResourceDataAdder = /** @class */ (function () {
@@ -16499,9 +16502,10 @@ var FullCalendar = (function (exports) {
             if (calendarProps.viewSpec.optionDefaults.needsResourceData) {
                 return {
                     resourceStore: this.filterResources(calendarProps.resourceStore, calendarProps.options.filterResourcesWithEvents, calendarProps.eventStore, calendarProps.dateProfile.activeRange),
-                    resourceEntityExpansions: calendarProps.resourceEntityExpansions
+                    resourceEntityExpansions: calendarProps.resourceEntityExpansions,
                 };
             }
+            return null;
         };
         return ResourceDataAdder;
     }());
@@ -16510,18 +16514,12 @@ var FullCalendar = (function (exports) {
             var instancesInRange = filterEventInstancesInRange(eventStore.instances, activeRange);
             var hasEvents_1 = computeHasEvents(instancesInRange, eventStore.defs);
             __assign(hasEvents_1, computeAncestorHasEvents(hasEvents_1, resourceStore));
-            return filterHash(resourceStore, function (resource, resourceId) {
-                return hasEvents_1[resourceId];
-            });
-        }
-        else {
-            return resourceStore;
+            return filterHash(resourceStore, function (resource, resourceId) { return hasEvents_1[resourceId]; });
         }
+        return resourceStore;
     }
     function filterEventInstancesInRange(eventInstances, activeRange) {
-        return filterHash(eventInstances, function (eventInstance) {
-            return rangesIntersect(eventInstance.range, activeRange);
-        });
+        return filterHash(eventInstances, function (eventInstance) { return rangesIntersect(eventInstance.range, activeRange); });
     }
     function computeHasEvents(eventInstances, eventDefs) {
         var hasEvents = {};
@@ -16554,6 +16552,22 @@ var FullCalendar = (function (exports) {
         }
         return res;
     }
+    /*
+    for making sure events that have editable resources are always draggable in resource views
+    */
+    function transformIsDraggable(val, eventDef, eventUi, context) {
+        if (!val) {
+            var state = context.getCurrentData();
+            var viewSpec = state.viewSpecs[state.currentViewType];
+            if (viewSpec.optionDefaults.needsResourceData) {
+                if (computeResourceEditable(eventDef, context)) {
+                    return true;
+                }
+            }
+        }
+        return val;
+    }
+
     // for when non-resource view should be given EventUi info (for event coloring/constraints based off of resource data)
     var ResourceEventConfigAdder = /** @class */ (function () {
         function ResourceEventConfigAdder() {
@@ -16563,25 +16577,22 @@ var FullCalendar = (function (exports) {
         ResourceEventConfigAdder.prototype.transform = function (viewProps, calendarProps) {
             if (!calendarProps.viewSpec.optionDefaults.needsResourceData) {
                 return {
-                    eventUiBases: this.injectResourceEventUis(viewProps.eventUiBases, viewProps.eventStore.defs, this.buildResourceEventUis(calendarProps.resourceStore))
+                    eventUiBases: this.injectResourceEventUis(viewProps.eventUiBases, viewProps.eventStore.defs, this.buildResourceEventUis(calendarProps.resourceStore)),
                 };
             }
+            return null;
         };
         return ResourceEventConfigAdder;
     }());
     function buildResourceEventUis(resourceStore) {
-        return mapHash(resourceStore, function (resource) {
-            return resource.ui;
-        });
+        return mapHash(resourceStore, function (resource) { return resource.ui; });
     }
     function injectResourceEventUis(eventUiBases, eventDefs, resourceEventUis) {
         return mapHash(eventUiBases, function (eventUi, defId) {
             if (defId) { // not the '' key
                 return injectResourceEventUi(eventUi, eventDefs[defId], resourceEventUis);
             }
-            else {
-                return eventUi;
-            }
+            return eventUi;
         });
     }
     function injectResourceEventUi(origEventUi, eventDef, resourceEventUis) {
@@ -16596,19 +16607,6 @@ var FullCalendar = (function (exports) {
         parts.unshift(origEventUi);
         return combineEventUis(parts);
     }
-    // for making sure events that have editable resources are always draggable in resource views
-    function transformIsDraggable(val, eventDef, eventUi, context) {
-        if (!val) {
-            var state = context.getCurrentData();
-            var viewSpec = state.viewSpecs[state.currentViewType];
-            if (viewSpec.optionDefaults.needsResourceData) {
-                if (computeResourceEditable(eventDef, context)) {
-                    return true;
-                }
-            }
-        }
-        return val;
-    }
 
     var defs = []; // TODO: use plugin system
     function registerResourceSourceDef(def) {
@@ -16633,7 +16631,7 @@ var FullCalendar = (function (exports) {
         startParam: String,
         endParam: String,
         timeZoneParam: String,
-        extraParams: identity
+        extraParams: identity,
     };
     function parseResourceSource(input) {
         var inputObj;
@@ -16659,7 +16657,7 @@ var FullCalendar = (function (exports) {
                     publicId: refined.id || '',
                     isFetching: false,
                     latestFetchId: '',
-                    fetchRange: null
+                    fetchRange: null,
                 };
             }
         }
@@ -16667,13 +16665,14 @@ var FullCalendar = (function (exports) {
     }
     function buildResourceSourceMeta(refined) {
         var defs = getResourceSourceDefs();
-        for (var i = defs.length - 1; i >= 0; i--) { // later-added plugins take precedence
+        for (var i = defs.length - 1; i >= 0; i -= 1) { // later-added plugins take precedence
             var def = defs[i];
             var meta = def.parseMeta(refined);
             if (meta) {
                 return { meta: meta, sourceDefId: i };
             }
         }
+        return null;
     }
     function warnUnknownProps(props) {
         for (var propName in props) {
@@ -16717,9 +16716,7 @@ var FullCalendar = (function (exports) {
             (!source.fetchRange || !rangesEqual(source.fetchRange, activeRange))) {
             return fetchSource$1(source, activeRange, context);
         }
-        else {
-            return source;
-        }
+        return source;
     }
     function doesSourceIgnoreRange(source) {
         return Boolean(getResourceSourceDef(source.sourceDefId).ignoreRange);
@@ -16730,20 +16727,20 @@ var FullCalendar = (function (exports) {
         sourceDef.fetch({
             resourceSource: source,
             range: fetchRange,
-            context: context
+            context: context,
         }, function (res) {
             context.dispatch({
                 type: 'RECEIVE_RESOURCES',
                 fetchId: fetchId,
                 fetchRange: fetchRange,
-                rawResources: res.rawResources
+                rawResources: res.rawResources,
             });
         }, function (error) {
             context.dispatch({
                 type: 'RECEIVE_RESOURCE_ERROR',
                 fetchId: fetchId,
                 fetchRange: fetchRange,
-                error: error
+                error: error,
             });
         });
         return __assign(__assign({}, source), { isFetching: true, latestFetchId: fetchId });
@@ -16774,7 +16771,7 @@ var FullCalendar = (function (exports) {
         eventBackgroundColor: String,
         eventBorderColor: String,
         eventTextColor: String,
-        eventColor: String
+        eventColor: String,
     };
     /*
     needs a full store so that it can populate children too
@@ -16798,9 +16795,9 @@ var FullCalendar = (function (exports) {
                 backgroundColor: refined.eventBackgroundColor,
                 borderColor: refined.eventBorderColor,
                 textColor: refined.eventTextColor,
-                color: refined.eventColor
+                color: refined.eventColor,
             }, context),
-            extendedProps: __assign(__assign({}, extra), refined.extendedProps)
+            extendedProps: __assign(__assign({}, extra), refined.extendedProps),
         };
         // help out ResourceApi from having user modify props
         Object.freeze(resource.ui.classNames);
@@ -16855,9 +16852,7 @@ var FullCalendar = (function (exports) {
             }
             return nextStore;
         }
-        else {
-            return existingStore;
-        }
+        return existingStore;
     }
     function addResource(existingStore, additions) {
         // TODO: warn about duplicate IDs
@@ -16881,9 +16876,7 @@ var FullCalendar = (function (exports) {
         if (existingResource) {
             return __assign(__assign({}, existingStore), (_a = {}, _a[resourceId] = __assign(__assign({}, existingResource), (_b = {}, _b[name] = value, _b)), _a));
         }
-        else {
-            return existingStore;
-        }
+        return existingStore;
     }
     function setResourceExtendedProp(existingStore, resourceId, name, value) {
         var _a, _b;
@@ -16891,9 +16884,7 @@ var FullCalendar = (function (exports) {
         if (existingResource) {
             return __assign(__assign({}, existingStore), (_a = {}, _a[resourceId] = __assign(__assign({}, existingResource), { extendedProps: __assign(__assign({}, existingResource.extendedProps), (_b = {}, _b[name] = value, _b)) }), _a));
         }
-        else {
-            return existingStore;
-        }
+        return existingStore;
     }
 
     function reduceResourceEntityExpansions(expansions, action) {
@@ -16917,26 +16908,23 @@ var FullCalendar = (function (exports) {
             resourceSource: resourceSource,
             resourceStore: resourceStore,
             resourceEntityExpansions: resourceEntityExpansions,
-            loadingLevel: context.loadingLevel + ((resourceSource && resourceSource.isFetching) ? 1 : 0)
         };
     }
 
     var EVENT_REFINERS$1 = {
         resourceId: String,
         resourceIds: identity,
-        resourceEditable: Boolean
+        resourceEditable: Boolean,
     };
     function generateEventDefResourceMembers(refined) {
         return {
             resourceIds: ensureStringArray(refined.resourceIds)
                 .concat(refined.resourceId ? [refined.resourceId] : []),
-            resourceEditable: refined.resourceEditable
+            resourceEditable: refined.resourceEditable,
         };
     }
     function ensureStringArray(items) {
-        return (items || []).map(function (item) {
-            return String(item);
-        });
+        return (items || []).map(function (item) { return String(item); });
     }
 
     function transformDateSelectionJoin(hit0, hit1) {
@@ -16947,10 +16935,9 @@ var FullCalendar = (function (exports) {
                 resourceId0 !== resourceId1) {
                 return false;
             }
-            else {
-                return { resourceId: resourceId0 };
-            }
+            return { resourceId: resourceId0 };
         }
+        return null;
     }
 
     var ResourceApi = /** @class */ (function () {
@@ -16964,7 +16951,7 @@ var FullCalendar = (function (exports) {
                 type: 'SET_RESOURCE_PROP',
                 resourceId: oldResource.id,
                 propName: name,
-                propValue: value
+                propValue: value,
             });
             this.sync(oldResource);
         };
@@ -16974,7 +16961,7 @@ var FullCalendar = (function (exports) {
                 type: 'SET_RESOURCE_EXTENDED_PROP',
                 resourceId: oldResource.id,
                 propName: name,
-                propValue: value
+                propValue: value,
             });
             this.sync(oldResource);
         };
@@ -16992,9 +16979,9 @@ var FullCalendar = (function (exports) {
                         type: 'ADD_RESOURCE',
                         resourceHash: (_a = {},
                             _a[resourceId] = oldResource,
-                            _a)
+                            _a),
                     });
-                }
+                },
             });
         };
         ResourceApi.prototype.remove = function () {
@@ -17003,7 +16990,7 @@ var FullCalendar = (function (exports) {
             var resourceId = internalResource.id;
             context.dispatch({
                 type: 'REMOVE_RESOURCE',
-                resourceId: resourceId
+                resourceId: resourceId,
             });
             context.emitter.trigger('resourceRemove', {
                 resource: this,
@@ -17013,9 +17000,9 @@ var FullCalendar = (function (exports) {
                         type: 'ADD_RESOURCE',
                         resourceHash: (_a = {},
                             _a[resourceId] = internalResource,
-                            _a)
+                            _a),
                     });
-                }
+                },
             });
         };
         ResourceApi.prototype.getParent = function () {
@@ -17024,9 +17011,7 @@ var FullCalendar = (function (exports) {
             if (parentId) {
                 return new ResourceApi(context, context.getCurrentData().resourceSource[parentId]);
             }
-            else {
-                return null;
-            }
+            return null;
         };
         ResourceApi.prototype.getChildren = function () {
             var thisResourceId = this._resource.id;
@@ -17178,7 +17163,7 @@ var FullCalendar = (function (exports) {
         }
         this.dispatch({
             type: 'ADD_RESOURCE',
-            resourceHash: resourceHash
+            resourceHash: resourceHash,
         });
         if (scrollTo) {
             // TODO: wait til dispatch completes somehow
@@ -17190,15 +17175,15 @@ var FullCalendar = (function (exports) {
             revert: function () {
                 _this.dispatch({
                     type: 'REMOVE_RESOURCE',
-                    resourceId: resource.id
+                    resourceId: resource.id,
                 });
-            }
+            },
         });
         return resourceApi;
     };
     CalendarApi.prototype.getResourceById = function (id) {
         id = String(id);
-        var currentState = this.getCurrentData();
+        var currentState = this.getCurrentData(); // eslint-disable-line react/no-this-in-sfc
         if (currentState.resourceStore) { // guard against calendar with no resource functionality
             var rawResource = currentState.resourceStore[id];
             if (rawResource) {
@@ -17233,7 +17218,7 @@ var FullCalendar = (function (exports) {
     };
     CalendarApi.prototype.refetchResources = function () {
         this.dispatch({
-            type: 'REFETCH_RESOURCES'
+            type: 'REFETCH_RESOURCES',
         });
     };
     function transformDatePoint(dateSpan, context) {
@@ -17257,8 +17242,7 @@ var FullCalendar = (function (exports) {
             return _super !== null && _super.apply(this, arguments) || this;
         }
         ResourceSplitter.prototype.getKeyInfo = function (props) {
-            return __assign({ '': {} }, props.resourceStore // already has `ui` and `businessHours` keys!
-            );
+            return __assign({ '': {} }, props.resourceStore);
         };
         ResourceSplitter.prototype.getKeysForDateSpan = function (dateSpan) {
             return [dateSpan.resourceId || ''];
@@ -17273,16 +17257,16 @@ var FullCalendar = (function (exports) {
         return ResourceSplitter;
     }(Splitter));
 
-    function isPropsValidWithResources(props, context) {
+    function isPropsValidWithResources(combinedProps, context) {
         var splitter = new ResourceSplitter();
-        var sets = splitter.splitProps(__assign(__assign({}, props), { resourceStore: context.getCurrentData().resourceStore }));
+        var sets = splitter.splitProps(__assign(__assign({}, combinedProps), { resourceStore: context.getCurrentData().resourceStore }));
         for (var resourceId in sets) {
-            var props_1 = sets[resourceId];
+            var props = sets[resourceId];
             // merge in event data from the non-resource segment
             if (resourceId && sets['']) { // current segment is not the non-resource one, and there IS a non-resource one
-                props_1 = __assign(__assign({}, props_1), { eventStore: mergeEventStores(sets[''].eventStore, props_1.eventStore), eventUiBases: __assign(__assign({}, sets[''].eventUiBases), props_1.eventUiBases) });
+                props = __assign(__assign({}, props), { eventStore: mergeEventStores(sets[''].eventStore, props.eventStore), eventUiBases: __assign(__assign({}, sets[''].eventUiBases), props.eventUiBases) });
             }
-            if (!isPropsValid(props_1, context, { resourceId: resourceId }, filterConfig.bind(null, resourceId))) {
+            if (!isPropsValid(props, context, { resourceId: resourceId }, filterConfig.bind(null, resourceId))) {
                 return false;
             }
         }
@@ -17320,13 +17304,12 @@ var FullCalendar = (function (exports) {
             hit0.dateSpan.resourceId !== hit1.dateSpan.resourceId) {
             return false;
         }
+        return null;
     }
 
     EventApi.prototype.getResources = function () {
         var calendarApi = this._context.calendarApi;
-        return this._def.resourceIds.map(function (resourceId) {
-            return calendarApi.getResourceById(resourceId);
-        });
+        return this._def.resourceIds.map(function (resourceId) { return calendarApi.getResourceById(resourceId); });
     };
     EventApi.prototype.setResources = function (resources) {
         var resourceIds = [];
@@ -17352,20 +17335,20 @@ var FullCalendar = (function (exports) {
         }
         this.mutate({
             standardProps: {
-                resourceIds: resourceIds
-            }
+                resourceIds: resourceIds,
+            },
         });
     };
 
     var optionChangeHandlers = {
-        resources: handleResources
+        resources: handleResources,
     };
     function handleResources(newSourceInput, context) {
         var oldSourceInput = context.getCurrentData().resourceSource._raw;
         if (oldSourceInput !== newSourceInput) {
             context.dispatch({
                 type: 'RESET_RESOURCE_SOURCE',
-                resourceSourceInput: newSourceInput
+                resourceSourceInput: newSourceInput,
             });
         }
     }
@@ -17378,7 +17361,7 @@ var FullCalendar = (function (exports) {
         }
     }
 
-    var OPTION_REFINERS$5 = {
+    var OPTION_REFINERS$6 = {
         initialResources: identity,
         resources: identity,
         eventResourceEditable: Boolean,
@@ -17410,13 +17393,13 @@ var FullCalendar = (function (exports) {
         resourceGroupLaneClassNames: identity,
         resourceGroupLaneContent: identity,
         resourceGroupLaneDidMount: identity,
-        resourceGroupLaneWillUnmount: identity
+        resourceGroupLaneWillUnmount: identity,
     };
     var LISTENER_REFINERS$1 = {
         resourcesSet: identity,
         resourceAdd: identity,
         resourceChange: identity,
-        resourceRemove: identity
+        resourceRemove: identity,
     };
 
     registerResourceSourceDef({
@@ -17429,9 +17412,9 @@ var FullCalendar = (function (exports) {
         },
         fetch: function (arg, successCallback) {
             successCallback({
-                rawResources: arg.resourceSource.meta
+                rawResources: arg.resourceSource.meta,
             });
-        }
+        },
     });
 
     registerResourceSourceDef({
@@ -17449,15 +17432,14 @@ var FullCalendar = (function (exports) {
                 end: dateEnv.toDate(arg.range.end),
                 startStr: dateEnv.formatIso(arg.range.start),
                 endStr: dateEnv.formatIso(arg.range.end),
-                timeZone: dateEnv.timeZone
+                timeZone: dateEnv.timeZone,
             } : {};
             // TODO: make more dry with EventSourceFunc
             // TODO: accept a response?
             unpromisify(func.bind(null, publicArg), function (rawResources) {
                 success({ rawResources: rawResources }); // needs an object response
-            }, failure // send errorObj directly to failure callback
-            );
-        }
+            }, failure);
+        },
     });
 
     registerResourceSourceDef({
@@ -17466,7 +17448,7 @@ var FullCalendar = (function (exports) {
                 return {
                     url: refined.url,
                     method: (refined.method || 'GET').toUpperCase(),
-                    extraParams: refined.extraParams
+                    extraParams: refined.extraParams,
                 };
             }
             return null;
@@ -17479,7 +17461,7 @@ var FullCalendar = (function (exports) {
             }, function (message, xhr) {
                 failureCallback({ message: message, xhr: xhr });
             });
-        }
+        },
     });
     // TODO: somehow consolidate with event json feed
     function buildRequestParams$2(meta, range, context) {
@@ -17528,11 +17510,11 @@ var FullCalendar = (function (exports) {
             var hookProps = {
                 resource: new ResourceApi(context, props.resource),
                 date: props.date ? context.dateEnv.toDate(props.date) : null,
-                view: context.viewApi
+                view: context.viewApi,
             };
             var dataAttrs = {
                 'data-resource-id': props.resource.id,
-                'data-date': props.date ? formatDayString(props.date) : undefined
+                'data-date': props.date ? formatDayString(props.date) : undefined,
             };
             return (createElement(RenderHook, { hookProps: hookProps, classNames: options.resourceLabelClassNames, content: options.resourceLabelContent, defaultContent: renderInnerContent$6, didMount: options.resourceLabelDidMount, willUnmount: options.resourceLabelWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return props.children(rootElRef, classNames, // TODO: pass in 'fc-resource' ?
             dataAttrs, innerElRef, innerContent); }));
@@ -17542,6 +17524,23 @@ var FullCalendar = (function (exports) {
         return props.resource.title || props.resource.id;
     }
 
+    var ResourceCell = /** @class */ (function (_super) {
+        __extends(ResourceCell, _super);
+        function ResourceCell() {
+            return _super !== null && _super.apply(this, arguments) || this;
+        }
+        ResourceCell.prototype.render = function () {
+            var props = this.props;
+            return (createElement(ResourceLabelRoot, { resource: props.resource, date: props.date }, function (elRef, customClassNames, dataAttrs, innerElRef, innerContent) { return (createElement("th", __assign({ ref: elRef, className: ['fc-col-header-cell', 'fc-resource'].concat(customClassNames).join(' '), colSpan: props.colSpan }, dataAttrs),
+                createElement("div", { className: "fc-scrollgrid-sync-inner" },
+                    createElement("span", { className: [
+                            'fc-col-header-cell-cushion',
+                            props.isSticky ? 'fc-sticky' : '',
+                        ].join(' '), ref: innerElRef }, innerContent)))); }));
+        };
+        return ResourceCell;
+    }(BaseComponent));
+
     var ResourceDayHeader = /** @class */ (function (_super) {
         __extends(ResourceDayHeader, _super);
         function ResourceDayHeader() {
@@ -17553,24 +17552,18 @@ var FullCalendar = (function (exports) {
             var _this = this;
             var _a = this, props = _a.props, context = _a.context;
             var dateFormat = this.buildDateFormat(context.options.dayHeaderFormat, props.datesRepDistinctDays, props.dates.length);
-            return (createElement(NowTimer, { unit: 'day' }, function (nowDate, todayRange) {
+            return (createElement(NowTimer, { unit: "day" }, function (nowDate, todayRange) {
                 if (props.dates.length === 1) {
                     return _this.renderResourceRow(props.resources, props.dates[0]);
                 }
-                else {
-                    if (context.options.datesAboveResources) {
-                        return _this.renderDayAndResourceRows(props.dates, dateFormat, todayRange, props.resources);
-                    }
-                    else {
-                        return _this.renderResourceAndDayRows(props.resources, props.dates, dateFormat, todayRange);
-                    }
+                if (context.options.datesAboveResources) {
+                    return _this.renderDayAndResourceRows(props.dates, dateFormat, todayRange, props.resources);
                 }
+                return _this.renderResourceAndDayRows(props.resources, props.dates, dateFormat, todayRange);
             }));
         };
         ResourceDayHeader.prototype.renderResourceRow = function (resources, date) {
-            var resourceCells = resources.map(function (resource) {
-                return (createElement(ResourceCell, { key: resource.id, resource: resource, colSpan: 1, date: date }));
-            });
+            var resourceCells = resources.map(function (resource) { return (createElement(ResourceCell, { key: resource.id, resource: resource, colSpan: 1, date: date })); });
             return this.buildTr(resourceCells, 'resources');
         };
         ResourceDayHeader.prototype.renderDayAndResourceRows = function (dates, dateFormat, todayRange, resources) {
@@ -17600,8 +17593,8 @@ var FullCalendar = (function (exports) {
                 }
             }
             return (createElement(Fragment, null,
-                this.buildTr(resourceCells, 'day'),
-                this.buildTr(dateCells, 'resources')));
+                this.buildTr(resourceCells, 'resources'),
+                this.buildTr(dateCells, 'day')));
         };
         // a cell with date text. might have a resource associated with it
         ResourceDayHeader.prototype.renderDateCell = function (date, dateFormat, todayRange, colSpan, resource, isSticky) {
@@ -17609,10 +17602,8 @@ var FullCalendar = (function (exports) {
             var keyPostfix = resource ? ":" + resource.id : '';
             var extraHookProps = resource ? { resource: new ResourceApi(this.context, resource) } : {};
             var extraDataAttrs = resource ? { 'data-resource-id': resource.id } : {};
-            return props.datesRepDistinctDays ?
-                createElement(TableDateCell, { key: date.toISOString() + keyPostfix, date: date, dateProfile: props.dateProfile, todayRange: todayRange, colCnt: props.dates.length * props.resources.length, dayHeaderFormat: dateFormat, colSpan: colSpan, isSticky: isSticky, extraHookProps: extraHookProps, extraDataAttrs: extraDataAttrs }) :
-                createElement(TableDowCell // we can't leverage the pure-componentness becausae the extra* props are new every time :(
-                , { key: date.getUTCDay() + keyPostfix, dow: date.getUTCDay(), dayHeaderFormat: dateFormat, colSpan: colSpan, isSticky: isSticky, extraHookProps: extraHookProps, extraDataAttrs: extraDataAttrs });
+            return props.datesRepDistinctDays ? (createElement(TableDateCell, { key: date.toISOString() + keyPostfix, date: date, dateProfile: props.dateProfile, todayRange: todayRange, colCnt: props.dates.length * props.resources.length, dayHeaderFormat: dateFormat, colSpan: colSpan, isSticky: isSticky, extraHookProps: extraHookProps, extraDataAttrs: extraDataAttrs })) : (createElement(TableDowCell // we can't leverage the pure-componentness becausae the extra* props are new every time :(
+            , { key: date.getUTCDay() + keyPostfix, dow: date.getUTCDay(), dayHeaderFormat: dateFormat, colSpan: colSpan, isSticky: isSticky, extraHookProps: extraHookProps, extraDataAttrs: extraDataAttrs }));
         };
         ResourceDayHeader.prototype.buildTr = function (cells, key) {
             var renderIntro = this.props.renderIntro;
@@ -17620,7 +17611,7 @@ var FullCalendar = (function (exports) {
                 cells = [createElement("td", { key: 0 }, "\u00A0")];
             }
             return (createElement("tr", { key: key },
-                renderIntro && renderIntro(),
+                renderIntro && renderIntro(key),
                 cells));
         };
         return ResourceDayHeader;
@@ -17628,22 +17619,22 @@ var FullCalendar = (function (exports) {
     function buildDateFormat(dayHeaderFormat, datesRepDistinctDays, dayCnt) {
         return dayHeaderFormat || computeFallbackHeaderFormat(datesRepDistinctDays, dayCnt);
     }
-    var ResourceCell = /** @class */ (function (_super) {
-        __extends(ResourceCell, _super);
-        function ResourceCell() {
-            return _super !== null && _super.apply(this, arguments) || this;
+
+    var ResourceIndex = /** @class */ (function () {
+        function ResourceIndex(resources) {
+            var indicesById = {};
+            var ids = [];
+            for (var i = 0; i < resources.length; i += 1) {
+                var id = resources[i].id;
+                ids.push(id);
+                indicesById[id] = i;
+            }
+            this.ids = ids;
+            this.indicesById = indicesById;
+            this.length = resources.length;
         }
-        ResourceCell.prototype.render = function () {
-            var props = this.props;
-            return (createElement(ResourceLabelRoot, { resource: props.resource, date: props.date }, function (elRef, customClassNames, dataAttrs, innerElRef, innerContent) { return (createElement("th", __assign({ ref: elRef, className: ['fc-col-header-cell', 'fc-resource'].concat(customClassNames).join(' '), colSpan: props.colSpan }, dataAttrs),
-                createElement("div", { className: 'fc-scrollgrid-sync-inner' },
-                    createElement("span", { className: [
-                            'fc-col-header-cell-cushion',
-                            props.isSticky ? 'fc-sticky' : ''
-                        ].join(' '), ref: innerElRef }, innerContent)))); }));
-        };
-        return ResourceCell;
-    }(BaseComponent));
+        return ResourceIndex;
+    }());
 
     var AbstractResourceDayTableModel = /** @class */ (function () {
         function AbstractResourceDayTableModel(dayTableModel, resources, context) {
@@ -17658,10 +17649,10 @@ var FullCalendar = (function (exports) {
         AbstractResourceDayTableModel.prototype.buildCells = function () {
             var _a = this, rowCnt = _a.rowCnt, dayTableModel = _a.dayTableModel, resources = _a.resources;
             var rows = [];
-            for (var row = 0; row < rowCnt; row++) {
+            for (var row = 0; row < rowCnt; row += 1) {
                 var rowCells = [];
-                for (var dateCol = 0; dateCol < dayTableModel.colCnt; dateCol++) {
-                    for (var resourceCol = 0; resourceCol < resources.length; resourceCol++) {
+                for (var dateCol = 0; dateCol < dayTableModel.colCnt; dateCol += 1) {
+                    for (var resourceCol = 0; resourceCol < resources.length; resourceCol += 1) {
                         var resource = resources[resourceCol];
                         var extraHookProps = { resource: new ResourceApi(this.context, resource) };
                         var extraDataAttrs = { 'data-resource-id': resource.id };
@@ -17673,7 +17664,7 @@ var FullCalendar = (function (exports) {
                             resource: resource,
                             extraHookProps: extraHookProps,
                             extraDataAttrs: extraDataAttrs,
-                            extraClassNames: extraClassNames
+                            extraClassNames: extraClassNames,
                         };
                     }
                 }
@@ -17683,6 +17674,7 @@ var FullCalendar = (function (exports) {
         };
         return AbstractResourceDayTableModel;
     }());
+
     /*
     resources over dates
     */
@@ -17703,12 +17695,13 @@ var FullCalendar = (function (exports) {
                     firstCol: this.computeCol(dateStartI, resourceI),
                     lastCol: this.computeCol(dateEndI, resourceI),
                     isStart: true,
-                    isEnd: true
-                }
+                    isEnd: true,
+                },
             ];
         };
         return ResourceDayTableModel;
     }(AbstractResourceDayTableModel));
+
     /*
     dates over resources
     */
@@ -17725,63 +17718,20 @@ var FullCalendar = (function (exports) {
         */
         DayResourceTableModel.prototype.computeColRanges = function (dateStartI, dateEndI, resourceI) {
             var segs = [];
-            for (var i = dateStartI; i <= dateEndI; i++) {
+            for (var i = dateStartI; i <= dateEndI; i += 1) {
                 var col = this.computeCol(i, resourceI);
                 segs.push({
                     firstCol: col,
-                    lastCol: col,
-                    isStart: i === dateStartI,
-                    isEnd: i === dateEndI
-                });
-            }
-            return segs;
-        };
-        return DayResourceTableModel;
-    }(AbstractResourceDayTableModel));
-    var ResourceIndex = /** @class */ (function () {
-        function ResourceIndex(resources) {
-            var indicesById = {};
-            var ids = [];
-            for (var i = 0; i < resources.length; i++) {
-                var id = resources[i].id;
-                ids.push(id);
-                indicesById[id] = i;
-            }
-            this.ids = ids;
-            this.indicesById = indicesById;
-            this.length = resources.length;
-        }
-        return ResourceIndex;
-    }());
-    /*
-    TODO: just use ResourceHash somehow? could then use the generic ResourceSplitter
-    */
-    var VResourceSplitter = /** @class */ (function (_super) {
-        __extends(VResourceSplitter, _super);
-        function VResourceSplitter() {
-            return _super !== null && _super.apply(this, arguments) || this;
-        }
-        VResourceSplitter.prototype.getKeyInfo = function (props) {
-            var resourceDayTableModel = props.resourceDayTableModel;
-            var hash = mapHash(resourceDayTableModel.resourceIndex.indicesById, function (i) {
-                return resourceDayTableModel.resources[i]; // has `ui` AND `businessHours` keys!
-            }); // :(
-            hash[''] = {};
-            return hash;
-        };
-        VResourceSplitter.prototype.getKeysForDateSpan = function (dateSpan) {
-            return [dateSpan.resourceId || ''];
-        };
-        VResourceSplitter.prototype.getKeysForEventDef = function (eventDef) {
-            var resourceIds = eventDef.resourceIds;
-            if (!resourceIds.length) {
-                return [''];
+                    lastCol: col,
+                    isStart: i === dateStartI,
+                    isEnd: i === dateEndI,
+                });
             }
-            return resourceIds;
+            return segs;
         };
-        return VResourceSplitter;
-    }(Splitter));
-    // joiner
+        return DayResourceTableModel;
+    }(AbstractResourceDayTableModel));
+
     var NO_SEGS = []; // for memoizing
     var VResourceJoiner = /** @class */ (function () {
         function VResourceJoiner() {
@@ -17822,7 +17772,7 @@ var FullCalendar = (function (exports) {
                 bgEventSegs: this.joinBgEvents.apply(this, __spreadArrays([resourceDayTable], bgEventSets)),
                 eventDrag: this.joinEventDrags.apply(this, __spreadArrays([resourceDayTable], eventDrags)),
                 eventResize: this.joinEventResizes.apply(this, __spreadArrays([resourceDayTable], eventResizes)),
-                eventSelection: eventSelection
+                eventSelection: eventSelection,
             };
         };
         VResourceJoiner.prototype.joinSegs = function (resourceDayTable) {
@@ -17832,7 +17782,7 @@ var FullCalendar = (function (exports) {
             }
             var resourceCnt = resourceDayTable.resources.length;
             var transformedSegs = [];
-            for (var i = 0; i < resourceCnt; i++) {
+            for (var i = 0; i < resourceCnt; i += 1) {
                 for (var _a = 0, _b = segGroups[i]; _a < _b.length; _a++) {
                     var seg = _b[_a];
                     transformedSegs.push.apply(transformedSegs, this.transformSeg(seg, resourceDayTable, i));
@@ -17853,7 +17803,7 @@ var FullCalendar = (function (exports) {
         VResourceJoiner.prototype.expandSegs = function (resourceDayTable, segs) {
             var resourceCnt = resourceDayTable.resources.length;
             var transformedSegs = [];
-            for (var i = 0; i < resourceCnt; i++) {
+            for (var i = 0; i < resourceCnt; i += 1) {
                 for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) {
                     var seg = segs_1[_i];
                     transformedSegs.push.apply(transformedSegs, this.transformSeg(seg, resourceDayTable, i));
@@ -17871,14 +17821,13 @@ var FullCalendar = (function (exports) {
             var transformedSegs = [];
             var anyInteractions = false;
             var isEvent = false;
-            for (var i = 0; i < resourceCnt; i++) {
+            for (var i = 0; i < resourceCnt; i += 1) {
                 var interaction = interactions[i];
                 if (interaction) {
                     anyInteractions = true;
                     for (var _a = 0, _b = interaction.segs; _a < _b.length; _a++) {
                         var seg = _b[_a];
-                        transformedSegs.push.apply(transformedSegs, this.transformSeg(seg, resourceDayTable, i) // TODO: templateify Interaction::segs
-                        );
+                        transformedSegs.push.apply(transformedSegs, this.transformSeg(seg, resourceDayTable, i));
                     }
                     __assign(affectedInstances, interaction.affectedInstances);
                     isEvent = isEvent || interaction.isEvent;
@@ -17886,8 +17835,7 @@ var FullCalendar = (function (exports) {
                 if (interactions[resourceCnt]) { // one beyond. the all-resource
                     for (var _c = 0, _d = interactions[resourceCnt].segs; _c < _d.length; _c++) {
                         var seg = _d[_c];
-                        transformedSegs.push.apply(transformedSegs, this.transformSeg(seg, resourceDayTable, i) // TODO: templateify Interaction::segs
-                        );
+                        transformedSegs.push.apply(transformedSegs, this.transformSeg(seg, resourceDayTable, i));
                     }
                 }
             }
@@ -17895,24 +17843,47 @@ var FullCalendar = (function (exports) {
                 return {
                     affectedInstances: affectedInstances,
                     segs: transformedSegs,
-                    isEvent: isEvent
+                    isEvent: isEvent,
                 };
             }
-            else {
-                return null;
-            }
+            return null;
         };
         return VResourceJoiner;
     }());
 
+    /*
+    TODO: just use ResourceHash somehow? could then use the generic ResourceSplitter
+    */
+    var VResourceSplitter = /** @class */ (function (_super) {
+        __extends(VResourceSplitter, _super);
+        function VResourceSplitter() {
+            return _super !== null && _super.apply(this, arguments) || this;
+        }
+        VResourceSplitter.prototype.getKeyInfo = function (props) {
+            var resourceDayTableModel = props.resourceDayTableModel;
+            var hash = mapHash(resourceDayTableModel.resourceIndex.indicesById, function (i) { return resourceDayTableModel.resources[i]; }); // :(
+            hash[''] = {};
+            return hash;
+        };
+        VResourceSplitter.prototype.getKeysForDateSpan = function (dateSpan) {
+            return [dateSpan.resourceId || ''];
+        };
+        VResourceSplitter.prototype.getKeysForEventDef = function (eventDef) {
+            var resourceIds = eventDef.resourceIds;
+            if (!resourceIds.length) {
+                return [''];
+            }
+            return resourceIds;
+        };
+        return VResourceSplitter;
+    }(Splitter));
+
     /*
     doesn't accept grouping
     */
     function flattenResources(resourceStore, orderSpecs) {
         return buildRowNodes(resourceStore, [], orderSpecs, false, {}, true)
-            .map(function (node) {
-            return node.resource;
-        });
+            .map(function (node) { return node.resource; });
     }
     function buildRowNodes(resourceStore, groupSpecs, orderSpecs, isVGrouping, expansions, expansionDefault) {
         var complexNodes = buildHierarchy(resourceStore, isVGrouping ? -1 : 1, groupSpecs, orderSpecs);
@@ -17921,7 +17892,7 @@ var FullCalendar = (function (exports) {
         return flatNodes;
     }
     function flattenNodes(complexNodes, res, isVGrouping, rowSpans, depth, expansions, expansionDefault) {
-        for (var i = 0; i < complexNodes.length; i++) {
+        for (var i = 0; i < complexNodes.length; i += 1) {
             var complexNode = complexNodes[i];
             var group = complexNode.group;
             if (group) {
@@ -17954,7 +17925,7 @@ var FullCalendar = (function (exports) {
                     isExpanded: isExpanded,
                     hasChildren: Boolean(complexNode.children.length),
                     resource: complexNode.resource,
-                    resourceFields: complexNode.resourceFields
+                    resourceFields: complexNode.resourceFields,
                 });
                 if (isExpanded) {
                     flattenNodes(complexNode.children, res, isVGrouping, rowSpans, depth + 1, expansions, expansionDefault);
@@ -17980,7 +17951,7 @@ var FullCalendar = (function (exports) {
             nodeHash[resourceId] = {
                 resource: resource,
                 resourceFields: buildResourceFields(resource),
-                children: []
+                children: [],
             };
         }
         for (var resourceId in resourceStore) {
@@ -18009,7 +17980,7 @@ var FullCalendar = (function (exports) {
         var newGroupIndex;
         // find an existing group that matches, or determine the position for a new group
         if (groupSpec.order) {
-            for (newGroupIndex = 0; newGroupIndex < nodes.length; newGroupIndex++) {
+            for (newGroupIndex = 0; newGroupIndex < nodes.length; newGroupIndex += 1) {
                 var node = nodes[newGroupIndex];
                 if (node.group) {
                     var cmp = flexibleCompare(groupValue, node.group.value) * groupSpec.order;
@@ -18024,7 +17995,7 @@ var FullCalendar = (function (exports) {
             }
         }
         else { // the groups are unordered
-            for (newGroupIndex = 0; newGroupIndex < nodes.length; newGroupIndex++) {
+            for (newGroupIndex = 0; newGroupIndex < nodes.length; newGroupIndex += 1) {
                 var node = nodes[newGroupIndex];
                 if (node.group && groupValue === node.group.value) {
                     groupNode = node;
@@ -18036,9 +18007,9 @@ var FullCalendar = (function (exports) {
             groupNode = {
                 group: {
                     value: groupValue,
-                    spec: groupSpec
+                    spec: groupSpec,
                 },
-                children: []
+                children: [],
             };
             nodes.splice(newGroupIndex, 0, groupNode);
         }
@@ -18046,7 +18017,7 @@ var FullCalendar = (function (exports) {
     }
     function insertResourceNodeInSiblings(resourceNode, siblings, orderSpecs) {
         var i;
-        for (i = 0; i < siblings.length; i++) {
+        for (i = 0; i < siblings.length; i += 1) {
             var cmp = compareByFieldSpecs(siblings[i].resourceFields, resourceNode.resourceFields, orderSpecs); // TODO: pass in ResourceApi?
             if (cmp > 0) { // went 1 past. insert at i
                 break;
@@ -18066,9 +18037,14 @@ var FullCalendar = (function (exports) {
 
     var resourceCommonPlugin = createPlugin({
         deps: [
-            premiumCommonPlugin
+            premiumCommonPlugin,
+        ],
+        reducers: [
+            reduceResources,
+        ],
+        isLoadingFuncs: [
+            function (state) { return state.resourceSource && state.resourceSource.isFetching; },
         ],
-        reducers: [reduceResources],
         eventRefiners: EVENT_REFINERS$1,
         eventDefMemberAdders: [generateEventDefResourceMembers],
         isDraggableTransformers: [transformIsDraggable],
@@ -18083,11 +18059,23 @@ var FullCalendar = (function (exports) {
         eventResizeJoinTransforms: [transformEventResizeJoin],
         eventDropTransformers: [transformEventDrop],
         optionChangeHandlers: optionChangeHandlers,
-        optionRefiners: OPTION_REFINERS$5,
+        optionRefiners: OPTION_REFINERS$6,
         listenerRefiners: LISTENER_REFINERS$1,
-        propSetHandlers: { resourceStore: handleResourceStore }
+        propSetHandlers: { resourceStore: handleResourceStore },
     });
 
+    var ResourceDayTableJoiner = /** @class */ (function (_super) {
+        __extends(ResourceDayTableJoiner, _super);
+        function ResourceDayTableJoiner() {
+            return _super !== null && _super.apply(this, arguments) || this;
+        }
+        ResourceDayTableJoiner.prototype.transformSeg = function (seg, resourceDayTableModel, resourceI) {
+            var colRanges = resourceDayTableModel.computeColRanges(seg.firstCol, seg.lastCol, resourceI);
+            return colRanges.map(function (colRange) { return (__assign(__assign(__assign({}, seg), colRange), { isStart: seg.isStart && colRange.isStart, isEnd: seg.isEnd && colRange.isEnd })); });
+        };
+        return ResourceDayTableJoiner;
+    }(VResourceJoiner));
+
     var ResourceDayTable = /** @class */ (function (_super) {
         __extends(ResourceDayTable, _super);
         function ResourceDayTable() {
@@ -18112,12 +18100,8 @@ var FullCalendar = (function (exports) {
             var _a = this, props = _a.props, context = _a.context;
             var resourceDayTableModel = props.resourceDayTableModel, nextDayThreshold = props.nextDayThreshold, dateProfile = props.dateProfile;
             var splitProps = this.splitter.splitProps(props);
-            this.slicers = mapHash(splitProps, function (split, resourceId) {
-                return _this.slicers[resourceId] || new DayTableSlicer();
-            });
-            var slicedProps = mapHash(this.slicers, function (slicer, resourceId) {
-                return slicer.sliceProps(splitProps[resourceId], dateProfile, nextDayThreshold, context, resourceDayTableModel.dayTableModel);
-            });
+            this.slicers = mapHash(splitProps, function (split, resourceId) { return _this.slicers[resourceId] || new DayTableSlicer(); });
+            var slicedProps = mapHash(this.slicers, function (slicer, resourceId) { return slicer.sliceProps(splitProps[resourceId], dateProfile, nextDayThreshold, context, resourceDayTableModel.dayTableModel); });
             this.allowAcrossResources = resourceDayTableModel.dayTableModel.colCnt === 1; // hack for EventResizing
             return (createElement(Table, __assign({ forPrint: props.forPrint, ref: this.tableRef, elRef: this.handleRootEl }, this.joiner.joinProps(slicedProps, resourceDayTableModel), { cells: resourceDayTableModel.cells, dateProfile: dateProfile, 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 })));
         };
@@ -18132,34 +18116,22 @@ var FullCalendar = (function (exports) {
                     dateSpan: {
                         range: rawHit.dateSpan.range,
                         allDay: rawHit.dateSpan.allDay,
-                        resourceId: this.props.resourceDayTableModel.cells[rawHit.row][rawHit.col].resource.id
+                        resourceId: this.props.resourceDayTableModel.cells[rawHit.row][rawHit.col].resource.id,
                     },
                     dayEl: rawHit.dayEl,
                     rect: {
                         left: rawHit.relativeRect.left,
                         right: rawHit.relativeRect.right,
                         top: rawHit.relativeRect.top,
-                        bottom: rawHit.relativeRect.bottom
+                        bottom: rawHit.relativeRect.bottom,
                     },
-                    layer: 0
+                    layer: 0,
                 };
             }
+            return null;
         };
         return ResourceDayTable;
     }(DateComponent));
-    var ResourceDayTableJoiner = /** @class */ (function (_super) {
-        __extends(ResourceDayTableJoiner, _super);
-        function ResourceDayTableJoiner() {
-            return _super !== null && _super.apply(this, arguments) || this;
-        }
-        ResourceDayTableJoiner.prototype.transformSeg = function (seg, resourceDayTableModel, resourceI) {
-            var colRanges = resourceDayTableModel.computeColRanges(seg.firstCol, seg.lastCol, resourceI);
-            return colRanges.map(function (colRange) {
-                return __assign(__assign(__assign({}, seg), colRange), { isStart: seg.isStart && colRange.isStart, isEnd: seg.isEnd && colRange.isEnd });
-            });
-        };
-        return ResourceDayTableJoiner;
-    }(VResourceJoiner));
 
     var ResourceDayTableView = /** @class */ (function (_super) {
         __extends(ResourceDayTableView, _super);
@@ -18178,8 +18150,7 @@ var FullCalendar = (function (exports) {
             var resourceOrderSpecs = options.resourceOrder || DEFAULT_RESOURCE_ORDER;
             var resources = this.flattenResources(props.resourceStore, resourceOrderSpecs);
             var resourceDayTableModel = this.buildResourceDayTableModel(props.dateProfile, context.dateProfileGenerator, resources, options.datesAboveResources, context);
-            var headerContent = options.dayHeaders &&
-                createElement(ResourceDayHeader, { ref: this.headerRef, resources: resources, dateProfile: props.dateProfile, dates: resourceDayTableModel.dayTableModel.headerDates, datesRepDistinctDays: true });
+            var headerContent = options.dayHeaders && (createElement(ResourceDayHeader, { ref: this.headerRef, resources: resources, dateProfile: props.dateProfile, dates: resourceDayTableModel.dayTableModel.headerDates, datesRepDistinctDays: true }));
             var bodyContent = function (contentArg) { return (createElement(ResourceDayTable, { ref: _this.tableRef, dateProfile: props.dateProfile, resourceDayTableModel: resourceDayTableModel, businessHours: props.businessHours, eventStore: props.eventStore, eventUiBases: props.eventUiBases, dateSelection: props.dateSelection, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, nextDayThreshold: options.nextDayThreshold, tableMinWidth: contentArg.tableMinWidth, colGroupNode: contentArg.tableColGroupNode, dayMaxEvents: options.dayMaxEvents, dayMaxEventRows: options.dayMaxEventRows, showWeekNumbers: options.weekNumbers, expandRows: !props.isHeightAuto, headerAlignElRef: _this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint })); };
             return options.dayMinWidth
                 ? this.renderHScrollLayout(headerContent, bodyContent, resourceDayTableModel.colCnt, options.dayMinWidth)
@@ -18198,33 +18169,46 @@ var FullCalendar = (function (exports) {
         deps: [
             premiumCommonPlugin,
             resourceCommonPlugin,
-            dayGridPlugin
+            dayGridPlugin,
         ],
         initialView: 'resourceDayGridDay',
         views: {
             resourceDayGrid: {
                 type: 'dayGrid',
                 component: ResourceDayTableView,
-                needsResourceData: true
+                needsResourceData: true,
             },
             resourceDayGridDay: {
                 type: 'resourceDayGrid',
-                duration: { days: 1 }
+                duration: { days: 1 },
             },
             resourceDayGridWeek: {
                 type: 'resourceDayGrid',
-                duration: { weeks: 1 }
+                duration: { weeks: 1 },
             },
             resourceDayGridMonth: {
                 type: 'resourceDayGrid',
                 duration: { months: 1 },
                 // TODO: wish we didn't have to C&P from dayGrid's file
                 monthMode: true,
-                fixedWeekCount: true
-            }
-        }
+                fixedWeekCount: true,
+            },
+        },
     });
 
+    var ResourceDayTimeColsJoiner = /** @class */ (function (_super) {
+        __extends(ResourceDayTimeColsJoiner, _super);
+        function ResourceDayTimeColsJoiner() {
+            return _super !== null && _super.apply(this, arguments) || this;
+        }
+        ResourceDayTimeColsJoiner.prototype.transformSeg = function (seg, resourceDayTable, resourceI) {
+            return [
+                __assign(__assign({}, seg), { col: resourceDayTable.computeCol(seg.col, resourceI) }),
+            ];
+        };
+        return ResourceDayTimeColsJoiner;
+    }(VResourceJoiner));
+
     var ResourceDayTimeCols = /** @class */ (function (_super) {
         __extends(ResourceDayTimeCols, _super);
         function ResourceDayTimeCols() {
@@ -18252,12 +18236,8 @@ var FullCalendar = (function (exports) {
             var dateProfile = props.dateProfile, resourceDayTableModel = props.resourceDayTableModel;
             var dayRanges = this.dayRanges = this.buildDayRanges(resourceDayTableModel.dayTableModel, dateProfile, dateEnv);
             var splitProps = this.splitter.splitProps(props);
-            this.slicers = mapHash(splitProps, function (split, resourceId) {
-                return _this.slicers[resourceId] || new DayTimeColsSlicer();
-            });
-            var slicedProps = mapHash(this.slicers, function (slicer, resourceId) {
-                return slicer.sliceProps(splitProps[resourceId], dateProfile, null, context, dayRanges);
-            });
+            this.slicers = mapHash(splitProps, function (split, resourceId) { return _this.slicers[resourceId] || new DayTimeColsSlicer(); });
+            var slicedProps = mapHash(this.slicers, function (slicer, resourceId) { return slicer.sliceProps(splitProps[resourceId], dateProfile, null, context, dayRanges); });
             this.allowAcrossResources = dayRanges.length === 1;
             return ( // TODO: would move this further down hierarchy, but sliceNowDate needs it
             createElement(NowTimer, { unit: options.nowIndicator ? 'minute' : 'day' }, function (nowDate, todayRange) { return (createElement(TimeCols, __assign({ ref: _this.timeColsRef, rootElRef: _this.handleRootEl }, _this.joiner.joinProps(slicedProps, resourceDayTableModel), { dateProfile: dateProfile, axis: props.axis, slotDuration: props.slotDuration, slatMetas: props.slatMetas, cells: resourceDayTableModel.cells[0], tableColGroupNode: props.tableColGroupNode, tableMinWidth: props.tableMinWidth, clientWidth: props.clientWidth, clientHeight: props.clientHeight, expandRows: props.expandRows, nowDate: nowDate, nowIndicatorSegs: options.nowIndicator && _this.buildNowIndicatorSegs(nowDate), todayRange: todayRange, onScrollTopRequest: props.onScrollTopRequest, forPrint: props.forPrint, onSlatCoords: props.onSlatCoords }))); }));
@@ -18274,33 +18254,22 @@ var FullCalendar = (function (exports) {
                     dateSpan: {
                         range: rawHit.dateSpan.range,
                         allDay: rawHit.dateSpan.allDay,
-                        resourceId: this.props.resourceDayTableModel.cells[0][rawHit.col].resource.id
+                        resourceId: this.props.resourceDayTableModel.cells[0][rawHit.col].resource.id,
                     },
                     dayEl: rawHit.dayEl,
                     rect: {
                         left: rawHit.relativeRect.left,
                         right: rawHit.relativeRect.right,
                         top: rawHit.relativeRect.top,
-                        bottom: rawHit.relativeRect.bottom
+                        bottom: rawHit.relativeRect.bottom,
                     },
-                    layer: 0
+                    layer: 0,
                 };
             }
+            return null;
         };
         return ResourceDayTimeCols;
     }(DateComponent));
-    var ResourceDayTimeColsJoiner = /** @class */ (function (_super) {
-        __extends(ResourceDayTimeColsJoiner, _super);
-        function ResourceDayTimeColsJoiner() {
-            return _super !== null && _super.apply(this, arguments) || this;
-        }
-        ResourceDayTimeColsJoiner.prototype.transformSeg = function (seg, resourceDayTable, resourceI) {
-            return [
-                __assign(__assign({}, seg), { col: resourceDayTable.computeCol(seg.col, resourceI) })
-            ];
-        };
-        return ResourceDayTimeColsJoiner;
-    }(VResourceJoiner));
 
     var ResourceDayTimeColsView = /** @class */ (function (_super) {
         __extends(ResourceDayTimeColsView, _super);
@@ -18324,10 +18293,9 @@ var FullCalendar = (function (exports) {
             var dayMinWidth = options.dayMinWidth;
             var hasAttachedAxis = !dayMinWidth;
             var hasDetachedAxis = dayMinWidth;
-            var headerContent = options.dayHeaders &&
-                createElement(ResourceDayHeader, { resources: resources, dates: resourceDayTableModel.dayTableModel.headerDates, dateProfile: dateProfile, datesRepDistinctDays: true, renderIntro: hasAttachedAxis ? this.renderHeadAxis : null });
-            var allDayContent = (options.allDaySlot !== false) && (function (contentArg) { return (createElement(ResourceDayTable, __assign({}, splitProps['allDay'], { dateProfile: dateProfile, resourceDayTableModel: resourceDayTableModel, 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()))); });
-            var timeGridContent = function (contentArg) { return (createElement(ResourceDayTimeCols, __assign({}, splitProps['timed'], { dateProfile: dateProfile, axis: hasAttachedAxis, slotDuration: options.slotDuration, slatMetas: slatMetas, resourceDayTableModel: resourceDayTableModel, tableColGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, onSlatCoords: _this.handleSlatCoords, expandRows: contentArg.expandRows, forPrint: props.forPrint, onScrollTopRequest: _this.handleScrollTopRequest }))); };
+            var headerContent = options.dayHeaders && (createElement(ResourceDayHeader, { resources: resources, dates: resourceDayTableModel.dayTableModel.headerDates, dateProfile: dateProfile, datesRepDistinctDays: true, renderIntro: hasAttachedAxis ? this.renderHeadAxis : null }));
+            var allDayContent = (options.allDaySlot !== false) && (function (contentArg) { return (createElement(ResourceDayTable, __assign({}, splitProps.allDay, { dateProfile: dateProfile, resourceDayTableModel: resourceDayTableModel, 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()))); });
+            var timeGridContent = function (contentArg) { return (createElement(ResourceDayTimeCols, __assign({}, splitProps.timed, { dateProfile: dateProfile, axis: hasAttachedAxis, slotDuration: options.slotDuration, slatMetas: slatMetas, resourceDayTableModel: resourceDayTableModel, tableColGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, onSlatCoords: _this.handleSlatCoords, expandRows: contentArg.expandRows, forPrint: props.forPrint, onScrollTopRequest: _this.handleScrollTopRequest }))); };
             return hasDetachedAxis
                 ? this.renderHScrollLayout(headerContent, allDayContent, timeGridContent, resourceDayTableModel.colCnt, dayMinWidth, slatMetas, this.state.slatCoords)
                 : this.renderSimpleLayout(headerContent, allDayContent, timeGridContent);
@@ -18345,24 +18313,24 @@ var FullCalendar = (function (exports) {
         deps: [
             premiumCommonPlugin,
             resourceCommonPlugin,
-            timeGridPlugin
+            timeGridPlugin,
         ],
         initialView: 'resourceTimeGridDay',
         views: {
             resourceTimeGrid: {
                 type: 'timeGrid',
                 component: ResourceDayTimeColsView,
-                needsResourceData: true
+                needsResourceData: true,
             },
             resourceTimeGridDay: {
                 type: 'resourceTimeGrid',
-                duration: { days: 1 }
+                duration: { days: 1 },
             },
             resourceTimeGridWeek: {
                 type: 'resourceTimeGrid',
-                duration: { weeks: 1 }
-            }
-        }
+                duration: { weeks: 1 },
+            },
+        },
     });
 
     /*
@@ -18372,8 +18340,8 @@ var FullCalendar = (function (exports) {
     function ExpanderIcon(_a) {
         var depth = _a.depth, hasChildren = _a.hasChildren, isExpanded = _a.isExpanded, onExpanderClick = _a.onExpanderClick;
         var nodes = [];
-        for (var i = 0; i < depth; i++) {
-            nodes.push(createElement("span", { className: 'fc-icon' }));
+        for (var i = 0; i < depth; i += 1) {
+            nodes.push(createElement("span", { className: "fc-icon" }));
         }
         var iconClassNames = ['fc-icon'];
         if (hasChildren) {
@@ -18389,11 +18357,35 @@ var FullCalendar = (function (exports) {
         return createElement.apply(void 0, __spreadArrays([Fragment, {}], nodes));
     }
 
+    function refineHookProps$1(raw) {
+        return {
+            resource: new ResourceApi(raw.context, raw.resource),
+            fieldValue: raw.fieldValue,
+            view: raw.context.viewApi,
+        };
+    }
+
+    var SpreadsheetIndividualCellInner = /** @class */ (function (_super) {
+        __extends(SpreadsheetIndividualCellInner, _super);
+        function SpreadsheetIndividualCellInner() {
+            return _super !== null && _super.apply(this, arguments) || this;
+        }
+        SpreadsheetIndividualCellInner.prototype.render = function () {
+            var props = this.props;
+            return (createElement(ContentHook, { hookProps: props.hookProps, content: props.colSpec.cellContent, defaultContent: renderResourceInner }, function (innerElRef, innerContent) { return (createElement("span", { className: "fc-datagrid-cell-main", ref: innerElRef }, innerContent)); }));
+        };
+        return SpreadsheetIndividualCellInner;
+    }(BaseComponent));
+    function renderResourceInner(hookProps) {
+        return hookProps.fieldValue || createElement(Fragment, null, "\u00A0");
+    }
+
+    // worth making a PureComponent? (because of innerHeight)
     var SpreadsheetIndividualCell = /** @class */ (function (_super) {
         __extends(SpreadsheetIndividualCell, _super);
         function SpreadsheetIndividualCell() {
             var _this = _super !== null && _super.apply(this, arguments) || this;
-            _this.refineHookProps = memoizeObjArg(refineHookProps$2);
+            _this.refineHookProps = memoizeObjArg(refineHookProps$1);
             _this.normalizeClassNames = buildClassNameNormalizer();
             _this.onExpanderClick = function (ev) {
                 var props = _this.props;
@@ -18401,7 +18393,7 @@ var FullCalendar = (function (exports) {
                     _this.context.dispatch({
                         type: 'SET_RESOURCE_ENTITY_EXPANDED',
                         id: props.resource.id,
-                        isExpanded: !props.isExpanded
+                        isExpanded: !props.isExpanded,
                     });
                 }
             };
@@ -18414,39 +18406,20 @@ var FullCalendar = (function (exports) {
             var hookProps = this.refineHookProps({
                 resource: props.resource,
                 fieldValue: props.fieldValue,
-                context: context
+                context: context,
             });
             var customClassNames = this.normalizeClassNames(colSpec.cellClassNames, hookProps);
-            return (createElement(MountHook, { hookProps: hookProps, didMount: colSpec.cellDidMount, willUnmount: colSpec.cellWillUnmount }, function (rootElRef) { return (createElement("td", { className: ['fc-datagrid-cell', 'fc-resource'].concat(customClassNames).join(' '), "data-resource-id": props.resource.id, ref: rootElRef },
-                createElement("div", { className: 'fc-datagrid-cell-frame', style: { height: props.innerHeight } },
-                    createElement("div", { className: 'fc-datagrid-cell-cushion fc-scrollgrid-sync-inner' },
-                        colSpec.isMain &&
-                            createElement(ExpanderIcon, { depth: props.depth, hasChildren: props.hasChildren, isExpanded: props.isExpanded, onExpanderClick: _this.onExpanderClick }),
+            return (createElement(MountHook, { hookProps: hookProps, didMount: colSpec.cellDidMount, willUnmount: colSpec.cellWillUnmount }, function (rootElRef) { return (createElement("td", { ref: rootElRef, "data-resource-id": props.resource.id, className: [
+                    'fc-datagrid-cell',
+                    'fc-resource',
+                ].concat(customClassNames).join(' ') },
+                createElement("div", { className: "fc-datagrid-cell-frame", style: { height: props.innerHeight } },
+                    createElement("div", { className: "fc-datagrid-cell-cushion fc-scrollgrid-sync-inner" },
+                        colSpec.isMain && (createElement(ExpanderIcon, { depth: props.depth, hasChildren: props.hasChildren, isExpanded: props.isExpanded, onExpanderClick: _this.onExpanderClick })),
                         createElement(SpreadsheetIndividualCellInner, { hookProps: hookProps, colSpec: colSpec }))))); }));
         };
         return SpreadsheetIndividualCell;
     }(BaseComponent));
-    var SpreadsheetIndividualCellInner = /** @class */ (function (_super) {
-        __extends(SpreadsheetIndividualCellInner, _super);
-        function SpreadsheetIndividualCellInner() {
-            return _super !== null && _super.apply(this, arguments) || this;
-        }
-        SpreadsheetIndividualCellInner.prototype.render = function () {
-            var props = this.props;
-            return (createElement(ContentHook, { hookProps: props.hookProps, content: props.colSpec.cellContent, defaultContent: renderResourceInner }, function (innerElRef, innerContent) { return (createElement("span", { className: 'fc-datagrid-cell-main', ref: innerElRef }, innerContent)); }));
-        };
-        return SpreadsheetIndividualCellInner;
-    }(BaseComponent));
-    function renderResourceInner(hookProps) {
-        return hookProps.fieldValue || createElement(Fragment, null, "\u00A0");
-    }
-    function refineHookProps$2(raw) {
-        return {
-            resource: new ResourceApi(raw.context, raw.resource),
-            fieldValue: raw.fieldValue,
-            view: raw.context.viewApi
-        };
-    }
 
     // for VERTICAL cell grouping, in spreadsheet area
     var SpreadsheetGroupCell = /** @class */ (function (_super) {
@@ -18459,16 +18432,15 @@ var FullCalendar = (function (exports) {
             var colSpec = props.colSpec;
             var hookProps = {
                 groupValue: props.fieldValue,
-                view: context.viewApi
+                view: context.viewApi,
             };
             // a grouped cell. no data that is specific to this specific resource
             // `colSpec` is for the group. a GroupSpec :(
             return (createElement(RenderHook, { hookProps: hookProps, classNames: colSpec.cellClassNames, content: colSpec.cellContent, defaultContent: renderGroupInner, didMount: colSpec.cellDidMount, willUnmount: colSpec.cellWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return (
             // TODO: make data-attr with group value?
             createElement("td", { className: ['fc-datagrid-cell', 'fc-resource-group'].concat(classNames).join(' '), rowSpan: props.rowSpan, ref: rootElRef },
-                createElement("div", { className: 'fc-datagrid-cell-frame fc-datagrid-cell-frame-liquid' },
-                    " ",
-                    createElement("div", { className: 'fc-datagrid-cell-cushion fc-sticky', ref: innerElRef }, innerContent)))); }));
+                createElement("div", { className: "fc-datagrid-cell-frame fc-datagrid-cell-frame-liquid" },
+                    createElement("div", { className: "fc-datagrid-cell-cushion fc-sticky", ref: innerElRef }, innerContent)))); }));
         };
         return SpreadsheetGroupCell;
     }(BaseComponent));
@@ -18488,9 +18460,9 @@ var FullCalendar = (function (exports) {
             return (createElement("tr", null, props.colSpecs.map(function (colSpec, i) {
                 var rowSpan = rowSpans[i];
                 if (rowSpan === 0) { // not responsible for group-based rows. VRowGroup is
-                    return;
+                    return null;
                 }
-                else if (rowSpan == null) {
+                if (rowSpan == null) {
                     rowSpan = 1;
                 }
                 var fieldValue = colSpec.field ? resourceFields[colSpec.field] :
@@ -18498,15 +18470,13 @@ var FullCalendar = (function (exports) {
                 if (rowSpan > 1) {
                     return (createElement(SpreadsheetGroupCell, { key: i, colSpec: colSpec, fieldValue: fieldValue, rowSpan: rowSpan }));
                 }
-                else {
-                    return (createElement(SpreadsheetIndividualCell, { key: i, colSpec: colSpec, resource: resource, fieldValue: fieldValue, depth: depth, hasChildren: props.hasChildren, isExpanded: props.isExpanded, innerHeight: props.innerHeight }));
-                }
+                return (createElement(SpreadsheetIndividualCell, { key: i, colSpec: colSpec, resource: resource, fieldValue: fieldValue, depth: depth, hasChildren: props.hasChildren, isExpanded: props.isExpanded, innerHeight: props.innerHeight }));
             })));
         };
         return SpreadsheetRow;
     }(BaseComponent));
     SpreadsheetRow.addPropsEquality({
-        rowSpans: isArraysEqual
+        rowSpans: isArraysEqual,
     });
 
     // for HORIZONTAL cell grouping, in spreadsheet area
@@ -18520,7 +18490,7 @@ var FullCalendar = (function (exports) {
                 _this.context.dispatch({
                     type: 'SET_RESOURCE_ENTITY_EXPANDED',
                     id: props.id,
-                    isExpanded: !props.isExpanded
+                    isExpanded: !props.isExpanded,
                 });
             };
             return _this;
@@ -18531,16 +18501,20 @@ var FullCalendar = (function (exports) {
             var hookProps = { groupValue: props.group.value, view: context.viewApi };
             var spec = props.group.spec;
             return (createElement("tr", null,
-                createElement(RenderHook, { hookProps: hookProps, classNames: spec.labelClassNames, content: spec.labelContent, defaultContent: renderCellInner, didMount: spec.labelDidMount, willUnmount: spec.labelWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("td", { className: ['fc-datagrid-cell', 'fc-resource-group', context.theme.getClass('tableCellShaded')].concat(classNames).join(' '), colSpan: props.spreadsheetColCnt, ref: rootElRef },
-                    createElement("div", { className: 'fc-datagrid-cell-frame', style: { height: props.innerHeight } },
-                        createElement("div", { className: 'fc-datagrid-cell-cushion fc-scrollgrid-sync-inner', ref: _this.innerInnerRef },
+                createElement(RenderHook, { hookProps: hookProps, classNames: spec.labelClassNames, content: spec.labelContent, defaultContent: renderCellInner, didMount: spec.labelDidMount, willUnmount: spec.labelWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("td", { ref: rootElRef, colSpan: props.spreadsheetColCnt, className: [
+                        'fc-datagrid-cell',
+                        'fc-resource-group',
+                        context.theme.getClass('tableCellShaded'),
+                    ].concat(classNames).join(' ') },
+                    createElement("div", { className: "fc-datagrid-cell-frame", style: { height: props.innerHeight } },
+                        createElement("div", { className: "fc-datagrid-cell-cushion fc-scrollgrid-sync-inner", ref: _this.innerInnerRef },
                             createElement(ExpanderIcon, { depth: 0, hasChildren: true, isExpanded: props.isExpanded, onExpanderClick: _this.onExpanderClick }),
-                            createElement("span", { className: 'fc-datagrid-cell-main', ref: innerElRef }, innerContent))))); })));
+                            createElement("span", { className: "fc-datagrid-cell-main", ref: innerElRef }, innerContent))))); })));
         };
         return SpreadsheetGroupRow;
     }(BaseComponent));
     SpreadsheetGroupRow.addPropsEquality({
-        group: isGroupsEqual
+        group: isGroupsEqual,
     });
     function renderCellInner(hookProps) {
         return hookProps.groupValue || createElement(Fragment, null, "\u00A0");
@@ -18563,24 +18537,26 @@ var FullCalendar = (function (exports) {
             rowInnerHeights = rowInnerHeights.slice(); // copy, because we're gonna pop
             if (superHeaderRendering) {
                 var rowInnerHeight_1 = rowInnerHeights.shift();
-                rowNodes.push(createElement("tr", { key: 'row-super' },
-                    createElement(RenderHook, { hookProps: hookProps, classNames: superHeaderRendering.headerClassNames, content: superHeaderRendering.headerContent, didMount: superHeaderRendering.headerDidMount, willUnmount: superHeaderRendering.headerWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("th", { colSpan: colSpecs.length, className: ['fc-datagrid-cell', 'fc-datagrid-cell-super'].concat(classNames).join(' '), ref: rootElRef },
-                        createElement("div", { className: 'fc-datagrid-cell-frame', style: { height: rowInnerHeight_1 } },
-                            createElement("div", { className: 'fc-datagrid-cell-cushion fc-scrollgrid-sync-inner', ref: innerElRef }, innerContent)))); })));
+                rowNodes.push(createElement("tr", { key: "row-super" },
+                    createElement(RenderHook, { hookProps: hookProps, classNames: superHeaderRendering.headerClassNames, content: superHeaderRendering.headerContent, didMount: superHeaderRendering.headerDidMount, willUnmount: superHeaderRendering.headerWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("th", { colSpan: colSpecs.length, ref: rootElRef, className: [
+                            'fc-datagrid-cell',
+                            'fc-datagrid-cell-super',
+                        ].concat(classNames).join(' ') },
+                        createElement("div", { className: "fc-datagrid-cell-frame", style: { height: rowInnerHeight_1 } },
+                            createElement("div", { className: "fc-datagrid-cell-cushion fc-scrollgrid-sync-inner", ref: innerElRef }, innerContent)))); })));
             }
             var rowInnerHeight = rowInnerHeights.shift();
-            rowNodes.push(createElement("tr", { key: 'row' }, colSpecs.map(function (colSpec, i) {
+            rowNodes.push(createElement("tr", { key: "row" }, colSpecs.map(function (colSpec, i) {
                 var isLastCol = i === (colSpecs.length - 1);
                 // need empty inner div for abs positioning for resizer
                 return (createElement(RenderHook, { key: i, hookProps: hookProps, classNames: colSpec.headerClassNames, content: colSpec.headerContent, didMount: colSpec.headerDidMount, willUnmount: colSpec.headerWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("th", { ref: rootElRef, className: ['fc-datagrid-cell'].concat(classNames).join(' ') },
-                    createElement("div", { className: 'fc-datagrid-cell-frame', style: { height: rowInnerHeight } },
-                        createElement("div", { className: 'fc-datagrid-cell-cushion fc-scrollgrid-sync-inner' },
-                            colSpec.isMain &&
-                                createElement("span", { className: 'fc-datagrid-expander fc-datagrid-expander-placeholder' },
-                                    createElement("span", { className: 'fc-icon' })),
-                            createElement("span", { className: 'fc-datagrid-cell-main', ref: innerElRef }, innerContent)),
+                    createElement("div", { className: "fc-datagrid-cell-frame", style: { height: rowInnerHeight } },
+                        createElement("div", { className: "fc-datagrid-cell-cushion fc-scrollgrid-sync-inner" },
+                            colSpec.isMain && (createElement("span", { className: "fc-datagrid-expander fc-datagrid-expander-placeholder" },
+                                createElement("span", { className: "fc-icon" }))),
+                            createElement("span", { className: "fc-datagrid-cell-main", ref: innerElRef }, innerContent)),
                         !isLastCol &&
-                            createElement("div", { className: 'fc-datagrid-cell-resizer', ref: _this.resizerElRefs.createRef(i) })))); }));
+                            createElement("div", { className: "fc-datagrid-cell-resizer", ref: _this.resizerElRefs.createRef(i) })))); }));
             })));
             return (createElement(Fragment, null, rowNodes));
         };
@@ -18610,7 +18586,7 @@ var FullCalendar = (function (exports) {
                 var currentWidths_1; // of all columns
                 dragging.emitter.on('dragstart', function () {
                     var allCells = findElements(elementClosest(resizerEl, 'tr'), 'th');
-                    currentWidths_1 = allCells.map(function (resizerEl) { return (elementClosest(resizerEl, 'th').getBoundingClientRect().width); });
+                    currentWidths_1 = allCells.map(function (cellEl) { return (cellEl.getBoundingClientRect().width); });
                     startWidth_1 = currentWidths_1[index];
                 });
                 dragging.emitter.on('dragmove', function (pev) {
@@ -18622,20 +18598,36 @@ var FullCalendar = (function (exports) {
                 dragging.setAutoScrollEnabled(false); // because gets weird with auto-scrolling time area
                 return dragging;
             }
+            return null;
         };
         return SpreadsheetHeader;
     }(BaseComponent));
 
+    var ResourceTimelineLaneMisc = /** @class */ (function (_super) {
+        __extends(ResourceTimelineLaneMisc, _super);
+        function ResourceTimelineLaneMisc() {
+            return _super !== null && _super.apply(this, arguments) || this;
+        }
+        ResourceTimelineLaneMisc.prototype.render = function () {
+            var _a = this, props = _a.props, context = _a.context;
+            var hookProps = { resource: new ResourceApi(context, props.resource) }; // just easier to make directly
+            return (createElement(ContentHook, { hookProps: hookProps, content: context.options.resourceLaneContent }, function (innerElRef, innerContent) { return (innerContent && // TODO: test how this would interfere with height
+                createElement("div", { className: "fc-timeline-lane-misc", ref: innerElRef }, innerContent)); }));
+        };
+        return ResourceTimelineLaneMisc;
+    }(BaseComponent));
+
     var ResourceTimelineLane = /** @class */ (function (_super) {
         __extends(ResourceTimelineLane, _super);
         function ResourceTimelineLane() {
             var _this = _super !== null && _super.apply(this, arguments) || this;
-            _this.refineHookProps = memoizeObjArg(refineHookProps$3);
+            _this.refineHookProps = memoizeObjArg(refineHookProps$2);
             _this.normalizeClassNames = buildClassNameNormalizer();
             _this.handleHeightChange = function (innerEl, isStable) {
                 if (_this.props.onHeightChange) {
-                    _this.props.onHeightChange(elementClosest(innerEl, 'tr'), // would want to use own <tr> ref, but not guaranteed to be ready when this fires
-                    isStable);
+                    _this.props.onHeightChange(
+                    // would want to use own <tr> ref, but not guaranteed to be ready when this fires
+                    elementClosest(innerEl, 'tr'), isStable);
                 }
             };
             return _this;
@@ -18648,28 +18640,15 @@ var FullCalendar = (function (exports) {
             var customClassNames = this.normalizeClassNames(options.resourceLaneClassNames, hookProps);
             return (createElement("tr", { ref: props.elRef },
                 createElement(MountHook, { hookProps: hookProps, didMount: options.resourceLaneDidMount, willUnmount: options.resourceLaneWillUnmount }, function (rootElRef) { return (createElement("td", { ref: rootElRef, className: ['fc-timeline-lane', 'fc-resource'].concat(customClassNames).join(' '), "data-resource-id": props.resource.id },
-                    createElement("div", { className: 'fc-timeline-lane-frame', style: { height: props.innerHeight } },
+                    createElement("div", { className: "fc-timeline-lane-frame", style: { height: props.innerHeight } },
                         createElement(ResourceTimelineLaneMisc, { resource: props.resource }),
                         createElement(TimelineLane, { dateProfile: props.dateProfile, tDateProfile: props.tDateProfile, nowDate: props.nowDate, todayRange: props.todayRange, nextDayThreshold: props.nextDayThreshold, businessHours: props.businessHours, eventStore: props.eventStore, eventUiBases: props.eventUiBases, dateSelection: props.dateSelection, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, timelineCoords: props.timelineCoords, onHeightChange: _this.handleHeightChange })))); }))); // important NOT to do liquid-height. dont want to shrink height smaller than content
         };
         return ResourceTimelineLane;
     }(BaseComponent));
-    var ResourceTimelineLaneMisc = /** @class */ (function (_super) {
-        __extends(ResourceTimelineLaneMisc, _super);
-        function ResourceTimelineLaneMisc() {
-            return _super !== null && _super.apply(this, arguments) || this;
-        }
-        ResourceTimelineLaneMisc.prototype.render = function () {
-            var _a = this, props = _a.props, context = _a.context;
-            var hookProps = { resource: new ResourceApi(context, props.resource) }; // just easier to make directly
-            return (createElement(ContentHook, { hookProps: hookProps, content: context.options.resourceLaneContent }, function (innerElRef, innerContent) { return (innerContent && // TODO: test how this would interfere with height
-                createElement("div", { className: 'fc-timeline-lane-misc', ref: innerElRef }, innerContent)); }));
-        };
-        return ResourceTimelineLaneMisc;
-    }(BaseComponent));
-    function refineHookProps$3(raw) {
+    function refineHookProps$2(raw) {
         return {
-            resource: new ResourceApi(raw.context, raw.resource)
+            resource: new ResourceApi(raw.context, raw.resource),
         };
     }
 
@@ -18687,12 +18666,38 @@ var FullCalendar = (function (exports) {
             var renderingHooks = this.props.renderingHooks;
             var hookProps = { groupValue: props.groupValue, view: this.context.viewApi };
             return (createElement("tr", { ref: props.elRef },
-                createElement(RenderHook, { hookProps: hookProps, classNames: renderingHooks.laneClassNames, content: renderingHooks.laneContent, didMount: renderingHooks.laneDidMount, willUnmount: renderingHooks.laneWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("td", { className: ['fc-timeline-lane', 'fc-resource-group', _this.context.theme.getClass('tableCellShaded')].concat(classNames).join(' '), ref: rootElRef },
+                createElement(RenderHook, { hookProps: hookProps, classNames: renderingHooks.laneClassNames, content: renderingHooks.laneContent, didMount: renderingHooks.laneDidMount, willUnmount: renderingHooks.laneWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("td", { ref: rootElRef, className: [
+                        'fc-timeline-lane',
+                        'fc-resource-group',
+                        _this.context.theme.getClass('tableCellShaded'),
+                    ].concat(classNames).join(' ') },
                     createElement("div", { style: { height: props.innerHeight }, ref: innerElRef }, innerContent))); })));
         };
         return DividerRow;
     }(BaseComponent));
 
+    var ResourceTimelineLanesBody = /** @class */ (function (_super) {
+        __extends(ResourceTimelineLanesBody, _super);
+        function ResourceTimelineLanesBody() {
+            return _super !== null && _super.apply(this, arguments) || this;
+        }
+        ResourceTimelineLanesBody.prototype.render = function () {
+            var _a = this, props = _a.props, context = _a.context;
+            var rowElRefs = props.rowElRefs, innerHeights = props.innerHeights;
+            return (createElement("tbody", null, props.rowNodes.map(function (node, index) {
+                if (node.group) {
+                    return (createElement(DividerRow, { key: node.id, elRef: rowElRefs.createRef(node.id), groupValue: node.group.value, renderingHooks: node.group.spec, innerHeight: innerHeights[index] || '' }));
+                }
+                if (node.resource) {
+                    var resource = node.resource;
+                    return (createElement(ResourceTimelineLane, __assign({ key: node.id, elRef: rowElRefs.createRef(node.id) }, props.splitProps[resource.id], { resource: resource, dateProfile: props.dateProfile, tDateProfile: props.tDateProfile, nowDate: props.nowDate, todayRange: props.todayRange, nextDayThreshold: context.options.nextDayThreshold, businessHours: resource.businessHours || props.fallbackBusinessHours, innerHeight: innerHeights[index] || '', timelineCoords: props.slatCoords, onHeightChange: props.onRowHeightChange })));
+                }
+                return null;
+            })));
+        };
+        return ResourceTimelineLanesBody;
+    }(BaseComponent));
+
     var ResourceTimelineLanes = /** @class */ (function (_super) {
         __extends(ResourceTimelineLanes, _super);
         function ResourceTimelineLanes() {
@@ -18706,7 +18711,7 @@ var FullCalendar = (function (exports) {
             return (createElement("table", { ref: this.rootElRef, className: 'fc-scrollgrid-sync-table ' + context.theme.getClass('table'), style: {
                     minWidth: props.tableMinWidth,
                     width: props.clientWidth,
-                    height: props.minHeight
+                    height: props.minHeight,
                 } },
                 createElement(ResourceTimelineLanesBody, { rowElRefs: this.rowElRefs, rowNodes: props.rowNodes, dateProfile: props.dateProfile, tDateProfile: props.tDateProfile, nowDate: props.nowDate, todayRange: props.todayRange, splitProps: props.splitProps, fallbackBusinessHours: props.fallbackBusinessHours, slatCoords: props.slatCoords, innerHeights: props.innerHeights, onRowHeightChange: props.onRowHeightChange })));
         };
@@ -18724,8 +18729,7 @@ var FullCalendar = (function (exports) {
         ResourceTimelineLanes.prototype.updateCoords = function () {
             var props = this.props;
             if (props.onRowCoords && props.clientWidth !== null) { // a populated clientWidth means sizing has stabilized
-                this.props.onRowCoords(new PositionCache(this.rootElRef.current, collectRowEls(this.rowElRefs.currentMap, props.rowNodes), false, true // isVertical
-                ));
+                this.props.onRowCoords(new PositionCache(this.rootElRef.current, collectRowEls(this.rowElRefs.currentMap, props.rowNodes), false, true));
             }
         };
         return ResourceTimelineLanes;
@@ -18733,26 +18737,6 @@ var FullCalendar = (function (exports) {
     function collectRowEls(elMap, rowNodes) {
         return rowNodes.map(function (rowNode) { return elMap[rowNode.id]; });
     }
-    var ResourceTimelineLanesBody = /** @class */ (function (_super) {
-        __extends(ResourceTimelineLanesBody, _super);
-        function ResourceTimelineLanesBody() {
-            return _super !== null && _super.apply(this, arguments) || this;
-        }
-        ResourceTimelineLanesBody.prototype.render = function () {
-            var _a = this, props = _a.props, context = _a.context;
-            var rowElRefs = props.rowElRefs, innerHeights = props.innerHeights;
-            return (createElement("tbody", null, props.rowNodes.map(function (node, index) {
-                if (node.group) {
-                    return (createElement(DividerRow, { key: node.id, elRef: rowElRefs.createRef(node.id), groupValue: node.group.value, renderingHooks: node.group.spec, innerHeight: innerHeights[index] || '' }));
-                }
-                else if (node.resource) {
-                    var resource = node.resource;
-                    return (createElement(ResourceTimelineLane, __assign({ key: node.id, elRef: rowElRefs.createRef(node.id) }, props.splitProps[resource.id], { resource: resource, dateProfile: props.dateProfile, tDateProfile: props.tDateProfile, nowDate: props.nowDate, todayRange: props.todayRange, nextDayThreshold: context.options.nextDayThreshold, businessHours: resource.businessHours || props.fallbackBusinessHours, innerHeight: innerHeights[index] || '', timelineCoords: props.slatCoords, onHeightChange: props.onRowHeightChange })));
-                }
-            })));
-        };
-        return ResourceTimelineLanesBody;
-    }(BaseComponent));
 
     var ResourceTimelineGrid = /** @class */ (function (_super) {
         __extends(ResourceTimelineGrid, _super);
@@ -18763,7 +18747,7 @@ var FullCalendar = (function (exports) {
             _this.bgSlicer = new TimelineLaneSlicer();
             _this.slatsRef = createRef(); // needed for Hit creation :(
             _this.state = {
-                slatCoords: null
+                slatCoords: null,
             };
             _this.handleEl = function (el) {
                 if (el) {
@@ -18797,13 +18781,17 @@ var FullCalendar = (function (exports) {
             var bgLaneProps = splitProps[''];
             var bgSlicedProps = this.bgSlicer.sliceProps(bgLaneProps, dateProfile, tDateProfile.isTimeScale ? null : props.nextDayThreshold, context, // wish we didn't need to pass in the rest of these args...
             dateProfile, context.dateProfileGenerator, tDateProfile, context.dateEnv);
-            return (createElement("div", { ref: this.handleEl, className: 'fc-timeline-body', style: { minWidth: props.tableMinWidth } },
+            // WORKAROUND: make ignore slatCoords when out of sync with dateProfile
+            var slatCoords = state.slatCoords && state.slatCoords.dateProfile === props.dateProfile ? state.slatCoords : null;
+            return (createElement("div", { ref: this.handleEl, className: "fc-timeline-body", style: { minWidth: props.tableMinWidth } },
                 createElement(NowTimer, { unit: timerUnit }, function (nowDate, todayRange) { return (createElement(Fragment, null,
                     createElement(TimelineSlats, { ref: _this.slatsRef, dateProfile: dateProfile, tDateProfile: tDateProfile, nowDate: nowDate, todayRange: todayRange, clientWidth: props.clientWidth, tableColGroupNode: props.tableColGroupNode, tableMinWidth: props.tableMinWidth, onCoords: _this.handleSlatCoords, onScrollLeftRequest: props.onScrollLeftRequest }),
-                    createElement(TimelineLaneBg, { businessHourSegs: hasResourceBusinessHours ? null : bgSlicedProps.businessHourSegs, bgEventSegs: bgSlicedProps.bgEventSegs, timelineCoords: state.slatCoords, eventResizeSegs: (bgSlicedProps.eventResize ? bgSlicedProps.eventResize.segs : []) /* empty array will result in unnecessary rerenders? */, dateSelectionSegs: bgSlicedProps.dateSelectionSegs, nowDate: nowDate, todayRange: todayRange }),
-                    createElement(ResourceTimelineLanes, { rowNodes: props.rowNodes, dateProfile: dateProfile, tDateProfile: props.tDateProfile, nowDate: nowDate, todayRange: todayRange, splitProps: splitProps, fallbackBusinessHours: hasResourceBusinessHours ? props.businessHours : null, clientWidth: props.clientWidth, minHeight: props.expandRows ? props.clientHeight : '', tableMinWidth: props.tableMinWidth, innerHeights: props.rowInnerHeights, slatCoords: state.slatCoords, onRowCoords: _this.handleRowCoords, onRowHeightChange: props.onRowHeightChange }),
-                    (context.options.nowIndicator && state.slatCoords && state.slatCoords.isDateInRange(nowDate)) &&
-                        createElement(NowIndicatorRoot, { isAxis: false, date: nowDate }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("div", { ref: rootElRef, className: ['fc-timeline-now-indicator-line'].concat(classNames).join(' '), style: { left: state.slatCoords.dateToCoord(nowDate) } }, innerContent)); }))); })));
+                    createElement(TimelineLaneBg, { businessHourSegs: hasResourceBusinessHours ? null : bgSlicedProps.businessHourSegs, bgEventSegs: bgSlicedProps.bgEventSegs, timelineCoords: slatCoords, 
+                        // empty array will result in unnecessary rerenders?
+                        eventResizeSegs: (bgSlicedProps.eventResize ? bgSlicedProps.eventResize.segs : []), dateSelectionSegs: bgSlicedProps.dateSelectionSegs, nowDate: nowDate, todayRange: todayRange }),
+                    createElement(ResourceTimelineLanes, { rowNodes: props.rowNodes, dateProfile: dateProfile, tDateProfile: props.tDateProfile, nowDate: nowDate, todayRange: todayRange, splitProps: splitProps, fallbackBusinessHours: hasResourceBusinessHours ? props.businessHours : null, clientWidth: props.clientWidth, minHeight: props.expandRows ? props.clientHeight : '', tableMinWidth: props.tableMinWidth, innerHeights: props.rowInnerHeights, slatCoords: slatCoords, onRowCoords: _this.handleRowCoords, onRowHeightChange: props.onRowHeightChange }),
+                    (context.options.nowIndicator && slatCoords && slatCoords.isDateInRange(nowDate)) && (createElement("div", { className: "fc-timeline-now-indicator-container" },
+                        createElement(NowIndicatorRoot, { isAxis: false, date: nowDate }, function (rootElRef, classNames, innerElRef, innerContent) { return (createElement("div", { ref: rootElRef, className: ['fc-timeline-now-indicator-line'].concat(classNames).join(' '), style: { left: slatCoords.dateToCoord(nowDate) } }, innerContent)); }))))); })));
         };
         // Hit System
         // ------------------------------------------------------------------------------------------
@@ -18820,20 +18808,21 @@ var FullCalendar = (function (exports) {
                             dateSpan: {
                                 range: slatHit.dateSpan.range,
                                 allDay: slatHit.dateSpan.allDay,
-                                resourceId: resource.id
+                                resourceId: resource.id,
                             },
                             rect: {
                                 left: slatHit.left,
                                 right: slatHit.right,
                                 top: rowCoords.tops[rowIndex],
-                                bottom: rowCoords.bottoms[rowIndex]
+                                bottom: rowCoords.bottoms[rowIndex],
                             },
                             dayEl: slatHit.dayEl,
-                            layer: 0
+                            layer: 0,
                         };
                     }
                 }
             }
+            return null;
         };
         return ResourceTimelineGrid;
     }(DateComponent));
@@ -18849,6 +18838,7 @@ var FullCalendar = (function (exports) {
     }
 
     var MIN_RESOURCE_AREA_WIDTH = 30; // definitely bigger than scrollbars
+    // RENAME?
     var ResourceTimelineViewLayout = /** @class */ (function (_super) {
         __extends(ResourceTimelineViewLayout, _super);
         function ResourceTimelineViewLayout() {
@@ -18858,7 +18848,7 @@ var FullCalendar = (function (exports) {
             _this.spreadsheetHeaderChunkElRef = createRef();
             _this.rootElRef = createRef();
             _this.state = {
-                resourceAreaWidthOverride: null
+                resourceAreaWidthOverride: null,
             };
             return _this;
         }
@@ -18877,18 +18867,19 @@ var FullCalendar = (function (exports) {
                         {
                             key: 'datagrid',
                             elRef: this.spreadsheetHeaderChunkElRef,
+                            // TODO: allow the content to specify this. have general-purpose 'content' with obj with keys
                             tableClassName: 'fc-datagrid-header',
-                            rowContent: props.spreadsheetHeaderRows
+                            rowContent: props.spreadsheetHeaderRows,
                         },
                         {
                             key: 'divider',
-                            outerContent: (createElement("td", { className: 'fc-resource-timeline-divider ' + context.theme.getClass('tableCellShaded') }))
+                            outerContent: (createElement("td", { className: 'fc-resource-timeline-divider ' + context.theme.getClass('tableCellShaded') })),
                         },
                         {
                             key: 'timeline',
-                            content: props.timeHeaderContent
-                        }
-                    ]
+                            content: props.timeHeaderContent,
+                        },
+                    ],
                 },
                 {
                     type: 'body',
@@ -18900,19 +18891,19 @@ var FullCalendar = (function (exports) {
                         {
                             key: 'datagrid',
                             tableClassName: 'fc-datagrid-body',
-                            rowContent: props.spreadsheetBodyRows
+                            rowContent: props.spreadsheetBodyRows,
                         },
                         {
                             key: 'divider',
-                            outerContent: (createElement("td", { className: 'fc-resource-timeline-divider ' + context.theme.getClass('tableCellShaded') }))
+                            outerContent: (createElement("td", { className: 'fc-resource-timeline-divider ' + context.theme.getClass('tableCellShaded') })),
                         },
                         {
                             key: 'timeline',
                             scrollerElRef: this.timeBodyScrollerElRef,
-                            content: props.timeBodyContent
-                        }
-                    ]
-                }
+                            content: props.timeBodyContent,
+                        },
+                    ],
+                },
             ];
             if (stickyFooterScrollbar) {
                 sections.push({
@@ -18922,17 +18913,17 @@ var FullCalendar = (function (exports) {
                     chunks: [
                         {
                             key: 'datagrid',
-                            content: renderScrollShim
+                            content: renderScrollShim,
                         },
                         {
                             key: 'divider',
-                            outerContent: (createElement("td", { className: 'fc-resource-timeline-divider ' + context.theme.getClass('tableCellShaded') }))
+                            outerContent: (createElement("td", { className: 'fc-resource-timeline-divider ' + context.theme.getClass('tableCellShaded') })),
                         },
                         {
                             key: 'timeline',
-                            content: renderScrollShim
-                        }
-                    ]
+                            content: renderScrollShim,
+                        },
+                    ],
                 });
             }
             var resourceAreaWidth = state.resourceAreaWidthOverride != null
@@ -18941,7 +18932,7 @@ var FullCalendar = (function (exports) {
             return (createElement(ScrollGrid, { ref: this.scrollGridRef, elRef: this.rootElRef, liquid: !props.isHeightAuto && !props.forPrint, colGroups: [
                     { cols: props.spreadsheetCols, width: resourceAreaWidth },
                     { cols: [] },
-                    { cols: props.timeCols }
+                    { cols: props.timeCols },
                 ], sections: sections }));
         };
         ResourceTimelineViewLayout.prototype.forceTimeScroll = function (left) {
@@ -18985,7 +18976,7 @@ var FullCalendar = (function (exports) {
                     newWidth = Math.max(newWidth, MIN_RESOURCE_AREA_WIDTH);
                     newWidth = Math.min(newWidth, viewWidth_1 - MIN_RESOURCE_AREA_WIDTH);
                     _this.setState({
-                        resourceAreaWidthOverride: newWidth
+                        resourceAreaWidthOverride: newWidth,
                     });
                 });
                 dragging.setAutoScrollEnabled(false); // because gets weird with auto-scrolling time area
@@ -19020,7 +19011,7 @@ var FullCalendar = (function (exports) {
             };
             _this.handleMaxCushionWidth = function (slotCushionMaxWidth) {
                 _this.setState({
-                    slotCushionMaxWidth: Math.ceil(slotCushionMaxWidth) // for less rerendering TODO: DRY
+                    slotCushionMaxWidth: Math.ceil(slotCushionMaxWidth),
                 });
             };
             // Scrolling
@@ -19048,17 +19039,18 @@ var FullCalendar = (function (exports) {
                     }
                     return true;
                 }
+                return null;
             };
             // Resource INDIVIDUAL-Column Area Resizing
             // ------------------------------------------------------------------------------------------
             _this.handleColWidthChange = function (colWidths) {
                 _this.setState({
-                    spreadsheetColWidths: colWidths
+                    spreadsheetColWidths: colWidths,
                 });
             };
             _this.state = {
                 resourceAreaWidth: context.options.resourceAreaWidth,
-                spreadsheetColWidths: []
+                spreadsheetColWidths: [],
             };
             return _this;
         }
@@ -19073,7 +19065,7 @@ var FullCalendar = (function (exports) {
                 'fc-resource-timeline',
                 this.hasNesting(rowNodes) ? '' : 'fc-resource-timeline-flat',
                 'fc-timeline',
-                options.eventOverlap === false ? 'fc-timeline-overlap-disabled' : 'fc-timeline-overlap-enabled'
+                options.eventOverlap === false ? 'fc-timeline-overlap-disabled' : 'fc-timeline-overlap-enabled',
             ];
             var slotMinWidth = options.slotMinWidth;
             var slatCols = buildSlatCols(tDateProfile, slotMinWidth || this.computeFallbackSlotMinWidth(tDateProfile));
@@ -19086,9 +19078,10 @@ var FullCalendar = (function (exports) {
                 if (node.group) {
                     return (createElement(SpreadsheetGroupRow, { key: node.id, id: node.id, spreadsheetColCnt: colSpecs.length, isExpanded: node.isExpanded, group: node.group, innerHeight: rowSyncHeights[index] || '' }));
                 }
-                else if (node.resource) {
+                if (node.resource) {
                     return (createElement(SpreadsheetRow, { key: node.id, colSpecs: colSpecs, rowSpans: node.rowSpans, depth: node.depth, isExpanded: node.isExpanded, hasChildren: node.hasChildren, resource: node.resource, innerHeight: rowSyncHeights[index] || '' }));
                 }
+                return null;
             });
         };
         ResourceTimelineView.prototype.componentDidMount = function () {
@@ -19099,9 +19092,7 @@ var FullCalendar = (function (exports) {
             if (!this.props.forPrint) { // because print-view is always zero?
                 return { resourceScroll: this.queryResourceScroll() };
             }
-            else {
-                return {};
-            }
+            return {};
         };
         ResourceTimelineView.prototype.componentDidUpdate = function (prevProps, prevState, snapshot) {
             this.renderedRowNodes = this.rowNodes;
@@ -19123,7 +19114,7 @@ var FullCalendar = (function (exports) {
                 var trBottoms = rowCoords.bottoms;
                 var scrollTop = layout.getResourceScroll();
                 var scroll_1 = {};
-                for (var i = 0; i < trBottoms.length; i++) {
+                for (var i = 0; i < trBottoms.length; i += 1) {
                     var rowNode = renderedRowNodes[i];
                     var elBottom = trBottoms[i] - scrollTop; // from the top of the scroller
                     if (elBottom > 0) {
@@ -19134,27 +19125,26 @@ var FullCalendar = (function (exports) {
                 }
                 return scroll_1;
             }
+            return null;
         };
         return ResourceTimelineView;
     }(BaseComponent));
     ResourceTimelineView.addStateEquality({
-        spreadsheetColWidths: isArraysEqual
+        spreadsheetColWidths: isArraysEqual,
     });
     function buildRowIndex(rowNodes) {
         var rowIdToIndex = {};
-        for (var i = 0; i < rowNodes.length; i++) {
+        for (var i = 0; i < rowNodes.length; i += 1) {
             rowIdToIndex[rowNodes[i].id] = i;
         }
         return rowIdToIndex;
     }
     function buildSpreadsheetCols(colSpecs, forcedWidths, fallbackWidth) {
         if (fallbackWidth === void 0) { fallbackWidth = ''; }
-        return colSpecs.map(function (colSpec, i) {
-            return {
-                className: colSpec.isMain ? 'fc-main-col' : '',
-                width: forcedWidths[i] || colSpec.width || fallbackWidth
-            };
-        });
+        return colSpecs.map(function (colSpec, i) { return ({
+            className: colSpec.isMain ? 'fc-main-col' : '',
+            width: forcedWidths[i] || colSpec.width || fallbackWidth,
+        }); });
     }
     function hasNesting(nodes) {
         for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {
@@ -19162,7 +19152,7 @@ var FullCalendar = (function (exports) {
             if (node.group) {
                 return true;
             }
-            else if (node.resource) {
+            if (node.resource) {
                 if (node.hasChildren) {
                     return true;
                 }
@@ -19178,7 +19168,7 @@ var FullCalendar = (function (exports) {
                 headerClassNames: options.resourceAreaHeaderClassNames,
                 headerContent: options.resourceAreaHeaderContent || 'Resources',
                 headerDidMount: options.resourceAreaHeaderDidMount,
-                headerWillUnmount: options.resourceAreaHeaderWillUnmount
+                headerWillUnmount: options.resourceAreaHeaderWillUnmount,
             });
         }
         else if (options.resourceAreaHeaderContent) { // weird way to determine if content
@@ -19186,7 +19176,7 @@ var FullCalendar = (function (exports) {
                 headerClassNames: options.resourceAreaHeaderClassNames,
                 headerContent: options.resourceAreaHeaderContent,
                 headerDidMount: options.resourceAreaHeaderDidMount,
-                headerWillUnmount: options.resourceAreaHeaderWillUnmount
+                headerWillUnmount: options.resourceAreaHeaderWillUnmount,
             };
         }
         var plainColSpecs = [];
@@ -19225,7 +19215,7 @@ var FullCalendar = (function (exports) {
                     laneClassNames: options.resourceGroupLaneClassNames,
                     laneContent: options.resourceGroupLaneContent,
                     laneDidMount: options.resourceGroupLaneDidMount,
-                    laneWillUnmount: options.resourceGroupLaneWillUnmount
+                    laneWillUnmount: options.resourceGroupLaneWillUnmount,
                 });
             }
         }
@@ -19251,7 +19241,7 @@ var FullCalendar = (function (exports) {
             isVGrouping: isVGrouping,
             groupSpecs: groupSpecs,
             colSpecs: groupColSpecs.concat(plainColSpecs),
-            orderSpecs: plainOrderSpecs
+            orderSpecs: plainOrderSpecs,
         };
     }
 
@@ -19259,7 +19249,7 @@ var FullCalendar = (function (exports) {
         deps: [
             premiumCommonPlugin,
             resourceCommonPlugin,
-            timelinePlugin
+            timelinePlugin,
         ],
         initialView: 'resourceTimelineDay',
         views: {
@@ -19269,25 +19259,25 @@ var FullCalendar = (function (exports) {
                 needsResourceData: true,
                 resourceAreaWidth: '30%',
                 resourcesInitiallyExpanded: true,
-                eventResizableFromStart: true // TODO: not DRY with this same setting in the main timeline config
+                eventResizableFromStart: true,
             },
             resourceTimelineDay: {
                 type: 'resourceTimeline',
-                duration: { days: 1 }
+                duration: { days: 1 },
             },
             resourceTimelineWeek: {
                 type: 'resourceTimeline',
-                duration: { weeks: 1 }
+                duration: { weeks: 1 },
             },
             resourceTimelineMonth: {
                 type: 'resourceTimeline',
-                duration: { months: 1 }
+                duration: { months: 1 },
             },
             resourceTimelineYear: {
                 type: 'resourceTimeline',
-                duration: { years: 1 }
-            }
-        }
+                duration: { years: 1 },
+            },
+        },
     });
 
     globalPlugins.push(interactionPlugin, dayGridPlugin, timeGridPlugin, listPlugin, plugin, googleCalendarPlugin, scrollGridPlugin, adaptivePlugin, timelinePlugin, resourceCommonPlugin, resourceDayGridPlugin, resourceTimeGridPlugin, resourceTimelinePlugin);
@@ -19396,6 +19386,7 @@ var FullCalendar = (function (exports) {
     exports.applyMutationToEventStore = applyMutationToEventStore;
     exports.applyStyle = applyStyle;
     exports.applyStyleProp = applyStyleProp;
+    exports.asCleanDays = asCleanDays;
     exports.asRoughMinutes = asRoughMinutes;
     exports.asRoughMs = asRoughMs;
     exports.asRoughSeconds = asRoughSeconds;
@@ -19466,6 +19457,7 @@ var FullCalendar = (function (exports) {
     exports.formatIsoTimeString = formatIsoTimeString;
     exports.formatRange = formatRange;
     exports.getAllowYScrolling = getAllowYScrolling;
+    exports.getCanVGrowWithinCell = getCanVGrowWithinCell;
     exports.getClippingParents = getClippingParents;
     exports.getDateMeta = getDateMeta;
     exports.getDayClassNames = getDayClassNames;
@@ -19491,7 +19483,6 @@ var FullCalendar = (function (exports) {
     exports.guid = guid;
     exports.hasBgRendering = hasBgRendering;
     exports.hasShrinkWidth = hasShrinkWidth;
-    exports.htmlToElement = htmlToElement;
     exports.identity = identity;
     exports.interactionSettingsStore = interactionSettingsStore;
     exports.interactionSettingsToStore = interactionSettingsToStore;
@@ -19506,7 +19497,6 @@ var FullCalendar = (function (exports) {
     exports.isMultiDayRange = isMultiDayRange;
     exports.isPropsEqual = isPropsEqual;
     exports.isPropsValid = isPropsValid;
-    exports.isSingleDay = isSingleDay;
     exports.isValidDate = isValidDate;
     exports.listenBySelector = listenBySelector;
     exports.mapHash = mapHash;
@@ -19551,11 +19541,14 @@ var FullCalendar = (function (exports) {
     exports.startOfDay = startOfDay;
     exports.translateRect = translateRect;
     exports.triggerDateSelect = triggerDateSelect;
+    exports.unmountComponentAtNode = unmountComponentAtNode$1;
     exports.unpromisify = unpromisify;
     exports.version = version;
     exports.whenTransitionDone = whenTransitionDone;
     exports.wholeDivideDurations = wholeDivideDurations;
 
+    Object.defineProperty(exports, '__esModule', { value: true });
+
     return exports;
 
 }({}));
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/main.min.css b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/main.min.css
index 87c960e4115135ee4801bceee22290a9cf92ff5d..aaec7e82bf11efccaa165af43346d084a284556a 100644
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/main.min.css
+++ b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/main.min.css
@@ -1 +1 @@
-.fc-icon,.fc-unselectable{-moz-user-select:none;-ms-user-select:none}.fc .fc-button,.fc-icon{text-transform:none;text-align:center}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc .fc-button:not(:disabled),.fc a[data-navlink],.fc-event.fc-event-draggable,.fc-event[href]{cursor:pointer}.fc-unselectable{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.fc{display:flex;flex-direction:column;font-size:1em}.fc .fc-button,.fc-icon{display:inline-block;font-weight:400}.fc,.fc *,.fc :after,.fc :before{box-sizing:border-box}.fc table{border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{vertical-align:top;padding:0}.fc .fc-button,.fc .fc-button .fc-icon,.fc .fc-button-group,.fc .fc-timegrid-slot-label{vertical-align:middle}.fc a[data-navlink]:hover{text-decoration:underline}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-theme-standard td,.fc-theme-standard th{border:1px solid #ddd;border:1px solid var(--fc-border-color,#ddd)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:fcicons;src:url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBfAAAAC8AAAAYGNtYXAXVtKNAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5ZgYydxIAAAF4AAAFNGhlYWQUJ7cIAAAGrAAAADZoaGVhB20DzAAABuQAAAAkaG10eCIABhQAAAcIAAAALGxvY2ED4AU6AAAHNAAAABhtYXhwAA8AjAAAB0wAAAAgbmFtZXsr690AAAdsAAABhnBvc3QAAwAAAAAI9AAAACAAAwPAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpBgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6Qb//f//AAAAAAAg6QD//f//AAH/4xcEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAWIAjQKeAskAEwAAJSc3NjQnJiIHAQYUFwEWMjc2NCcCnuLiDQ0MJAz/AA0NAQAMJAwNDcni4gwjDQwM/wANIwz/AA0NDCMNAAAAAQFiAI0CngLJABMAACUBNjQnASYiBwYUHwEHBhQXFjI3AZ4BAA0N/wAMJAwNDeLiDQ0MJAyNAQAMIw0BAAwMDSMM4uINIwwNDQAAAAIA4gC3Ax4CngATACcAACUnNzY0JyYiDwEGFB8BFjI3NjQnISc3NjQnJiIPAQYUHwEWMjc2NCcB87e3DQ0MIw3VDQ3VDSMMDQ0BK7e3DQ0MJAzVDQ3VDCQMDQ3zuLcMJAwNDdUNIwzWDAwNIwy4twwkDA0N1Q0jDNYMDA0jDAAAAgDiALcDHgKeABMAJwAAJTc2NC8BJiIHBhQfAQcGFBcWMjchNzY0LwEmIgcGFB8BBwYUFxYyNwJJ1Q0N1Q0jDA0Nt7cNDQwjDf7V1Q0N1QwkDA0Nt7cNDQwkDLfWDCMN1Q0NDCQMt7gMIw0MDNYMIw3VDQ0MJAy3uAwjDQwMAAADAFUAAAOrA1UAMwBoAHcAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMhMjY1NCYjISIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAAVYRGRkR/qoRGRkRA1UFBAUOCQkVDAsZDf2rDRkLDBUJCA4FBQUFBQUOCQgVDAsZDQJVDRkLDBUJCQ4FBAVVAgECBQMCBwQECAX9qwQJAwQHAwMFAQICAgIBBQMDBwQDCQQCVQUIBAQHAgMFAgEC/oAZEhEZGRESGQAAAAADAFUAAAOrA1UAMwBoAIkAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMzFRQWMzI2PQEzMjY1NCYrATU0JiMiBh0BIyIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAgBkSEhmAERkZEYAZEhIZgBEZGREDVQUEBQ4JCRUMCxkN/asNGQsMFQkIDgUFBQUFBQ4JCBUMCxkNAlUNGQsMFQkJDgUEBVUCAQIFAwIHBAQIBf2rBAkDBAcDAwUBAgICAgEFAwMHBAMJBAJVBQgEBAcCAwUCAQL+gIASGRkSgBkSERmAEhkZEoAZERIZAAABAOIAjQMeAskAIAAAExcHBhQXFjI/ARcWMjc2NC8BNzY0JyYiDwEnJiIHBhQX4uLiDQ0MJAzi4gwkDA0N4uINDQwkDOLiDCQMDQ0CjeLiDSMMDQ3h4Q0NDCMN4uIMIw0MDOLiDAwNIwwAAAABAAAAAQAAa5n0y18PPPUACwQAAAAAANivOVsAAAAA2K85WwAAAAADqwNVAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAOrAAEAAAAAAAAAAAAAAAAAAAALBAAAAAAAAAAAAAAAAgAAAAQAAWIEAAFiBAAA4gQAAOIEAABVBAAAVQQAAOIAAAAAAAoAFAAeAEQAagCqAOoBngJkApoAAQAAAAsAigADAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGZjaWNvbnMAZgBjAGkAYwBvAG4Ac1ZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGZjaWNvbnMAZgBjAGkAYwBvAG4Ac2ZjaWNvbnMAZgBjAGkAYwBvAG4Ac1JlZ3VsYXIAUgBlAGcAdQBsAGEAcmZjaWNvbnMAZgBjAGkAYwBvAG4Ac0ZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") format('truetype');font-weight:400;font-style:normal}.fc-icon{width:1em;height:1em;-webkit-user-select:none;user-select:none;font-family:fcicons!important;speak:none;font-style:normal;font-variant:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fc-icon-chevron-left:before{content:"\e900"}.fc-icon-chevron-right:before{content:"\e901"}.fc-icon-chevrons-left:before{content:"\e902"}.fc-icon-chevrons-right:before{content:"\e903"}.fc-icon-minus-square:before{content:"\e904"}.fc-icon-plus-square:before{content:"\e905"}.fc-icon-x:before{content:"\e906"}.fc .fc-button{overflow:visible;text-transform:none;margin:0;font-family:inherit}.fc .fc-button::-moz-focus-inner{padding:0;border-style:none}.fc .fc-button{-webkit-appearance:button;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.4em .65em;font-size:1em;line-height:1.5;border-radius:.25em}.fc .fc-button:hover{text-decoration:none}.fc .fc-button:focus{outline:0;box-shadow:0 0 0 .2rem rgba(44,62,80,.25)}.fc .fc-button-primary:focus,.fc .fc-button-primary:not(:disabled).fc-button-active:focus,.fc .fc-button-primary:not(:disabled):active:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button:disabled{opacity:.65}.fc .fc-button-primary{color:#fff;color:var(--fc-button-text-color,#fff);background-color:#2C3E50;background-color:var(--fc-button-bg-color,#2C3E50);border-color:#2C3E50;border-color:var(--fc-button-border-color,#2C3E50)}.fc .fc-button-primary:hover{color:#fff;color:var(--fc-button-text-color,#fff);background-color:#1e2b37;background-color:var(--fc-button-hover-bg-color,#1e2b37);border-color:#1a252f;border-color:var(--fc-button-hover-border-color,#1a252f)}.fc .fc-button-primary:disabled{color:#fff;color:var(--fc-button-text-color,#fff);background-color:#2C3E50;background-color:var(--fc-button-bg-color,#2C3E50);border-color:#2C3E50;border-color:var(--fc-button-border-color,#2C3E50)}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{color:#fff;color:var(--fc-button-text-color,#fff);background-color:#1a252f;background-color:var(--fc-button-active-bg-color,#1a252f);border-color:#151e27;border-color:var(--fc-button-active-border-color,#151e27)}.fc .fc-button .fc-icon{font-size:1.5em}.fc .fc-button-group{position:relative;display:inline-flex}.fc .fc-button-group>.fc-button{position:relative;flex:1 1 auto}.fc .fc-button-group>.fc-button.fc-button-active,.fc .fc-button-group>.fc-button:active,.fc .fc-button-group>.fc-button:focus,.fc .fc-button-group>.fc-button:hover{z-index:1}.fc-direction-ltr .fc-button-group>.fc-button:not(:first-child){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){margin-right:-1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-top-left-radius:0;border-bottom-left-radius:0}.fc .fc-toolbar{display:flex;justify-content:space-between;align-items:center}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:1.5em}.fc .fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc .fc-toolbar-title{font-size:1.75em;margin:0}.fc-direction-ltr .fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-direction-rtl .fc-toolbar>*>:not(:first-child){margin-right:.75em}.fc-direction-rtl .fc-toolbar-ltr{flex-direction:row-reverse}.fc .fc-scroller{-webkit-overflow-scrolling:touch;position:relative}.fc .fc-scroller-liquid{height:100%}.fc .fc-scroller-liquid-absolute{position:absolute;top:0;right:0;left:0;bottom:0}.fc .fc-scroller-harness{position:relative;overflow:hidden;direction:ltr}.fc .fc-scroller-harness-liquid{height:100%}.fc-direction-rtl .fc-scroller-harness>.fc-scroller{direction:rtl}.fc-theme-standard .fc-scrollgrid{border:1px solid #ddd;border:1px solid var(--fc-border-color,#ddd)}.fc .fc-scrollgrid,.fc .fc-scrollgrid>tfoot>tr>*,.fc .fc-scrollgrid>thead>tr>*{border-bottom-width:0}.fc .fc-scrollgrid,.fc .fc-scrollgrid table{width:100%;table-layout:fixed}.fc .fc-scrollgrid table{border-top-style:hidden;border-left-style:hidden;border-right-style:hidden}.fc .fc-scrollgrid>tbody table,.fc .fc-scrollgrid>tfoot table{border-bottom-style:hidden}.fc .fc-scrollgrid{border-collapse:separate;border-right-width:0}.fc .fc-scrollgrid>*>tr>*{border-top-width:0;border-left-width:0}.fc .fc-scrollgrid-liquid{height:100%}.fc .fc-scrollgrid-section,.fc .fc-scrollgrid-section>td{height:0}.fc .fc-scrollgrid-section table{height:1px}.fc .fc-scrollgrid-section-liquid{height:auto}.fc .fc-scrollgrid-section-liquid>td{height:100%}.fc .fc-scrollgrid-section-sticky>*{background:var(--fc-page-bg-color,#fff);position:-webkit-sticky;position:sticky;z-index:2}.fc .fc-scrollgrid>thead>.fc-scrollgrid-section-sticky>*{top:0}.fc .fc-scrollgrid>tfoot>.fc-scrollgrid-section-sticky>*{bottom:0}.fc .fc-scrollgrid-sticky-shim{height:1px;margin-bottom:-1px}.fc .fc-sticky{position:-webkit-sticky;position:sticky}.fc .fc-view-harness{flex-grow:1;position:relative}.fc .fc-bg-event,.fc .fc-highlight,.fc .fc-non-business,.fc .fc-view-harness-active>.fc-view{position:absolute;left:0;bottom:0;top:0;right:0}.fc .fc-col-header-cell-cushion{display:inline-block;padding:2px 4px}.fc .fc-non-business{background:rgba(215,215,215,.3);background:var(--fc-non-business-color,rgba(215,215,215,.3))}.fc .fc-bg-event{background:var(--fc-bg-event-color,#8fdf82);opacity:.3;opacity:var(--fc-bg-event-opacity,.3)}.fc .fc-bg-event .fc-event-title{margin:.5em;font-size:.85em;font-size:var(--fc-small-font-size,.85em);font-style:italic}.fc .fc-highlight{background:rgba(188,232,241,.3);background:var(--fc-highlight-color,rgba(188,232,241,.3))}.fc .fc-cell-shaded,.fc .fc-day-disabled{background:rgba(208,208,208,.3);background:var(--fc-neutral-bg-color,rgba(208,208,208,.3))}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event .fc-event-main{position:relative;z-index:2}.fc-event-dragging:not(.fc-event-selected){opacity:.75}.fc-event-dragging.fc-event-selected{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-event .fc-event-resizer{display:none;position:absolute;z-index:4}.fc-event-selected .fc-event-resizer,.fc-event:hover .fc-event-resizer,.fc-h-event{display:block}.fc-event-selected .fc-event-resizer{border-radius:4px;border-radius:calc(var(--fc-event-resizer-dot-total-width,8px)/ 2);border-width:1px;border-width:var(--fc-event-resizer-dot-border-width,1px);width:8px;width:var(--fc-event-resizer-dot-total-width,8px);height:8px;height:var(--fc-event-resizer-dot-total-width,8px);border-style:solid;border-color:inherit;background:var(--fc-page-bg-color,#fff)}.fc-event-selected .fc-event-resizer:before{content:'';position:absolute;top:-20px;left:-20px;right:-20px;bottom:-20px}.fc-event-selected{box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event-selected:before{content:"";position:absolute;z-index:3;top:0;left:0;right:0;bottom:0}.fc-event-selected:after{content:"";background:rgba(0,0,0,.25);background:var(--fc-event-selected-overlay-color,rgba(0,0,0,.25));position:absolute;z-index:1;top:-1px;left:-1px;right:-1px;bottom:-1px}.fc-h-event{border:1px solid #3788d8;border:1px solid var(--fc-event-bg-color,#3788d8);background-color:#3788d8;background-color:var(--fc-event-border-color,#3788d8)}.fc-h-event .fc-event-main{color:#fff;color:var(--fc-event-text-color,#fff)}.fc-h-event .fc-event-main-frame{display:flex}.fc-h-event .fc-event-time{max-width:100%;overflow:hidden}.fc-h-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-width:0}.fc-h-event .fc-event-title{display:inline-block;vertical-align:top;left:0;right:0;max-width:100%;overflow:hidden}.fc-h-event.fc-event-selected:before{top:-10px;bottom:-10px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-top-left-radius:0;border-bottom-left-radius:0;border-left-width:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-top-right-radius:0;border-bottom-right-radius:0;border-right-width:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{top:0;bottom:0;width:8px;width:var(--fc-event-resizer-thickness,8px)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end{cursor:w-resize;left:-4px;left:calc(var(--fc-event-resizer-thickness,8px)/ -2)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start{cursor:e-resize;right:-4px;right:calc(var(--fc-event-resizer-thickness,8px)/ -2)}.fc-h-event.fc-event-selected .fc-event-resizer{top:50%;margin-top:-4px;margin-top:calc(var(--fc-event-resizer-dot-total-width,8px)/ -2)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end{left:-4px;left:calc(var(--fc-event-resizer-dot-total-width,8px)/ -2)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start{right:-4px;right:calc(var(--fc-event-resizer-dot-total-width,8px)/ -2)}:root{--fc-daygrid-event-dot-width:8px;--fc-list-event-dot-width:10px;--fc-list-event-hover-bg-color:#f5f5f5}.fc .fc-popover{position:fixed;top:0;box-shadow:0 2px 6px rgba(0,0,0,.15)}.fc .fc-popover-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:3px 4px}.fc .fc-popover-title{margin:0 2px}.fc .fc-popover-close{cursor:pointer;opacity:.65;font-size:1.1em}.fc-theme-standard .fc-popover{border:1px solid #ddd;border:1px solid var(--fc-border-color,#ddd);background:var(--fc-page-bg-color,#fff)}.fc-theme-standard .fc-popover-header{background:rgba(208,208,208,.3);background:var(--fc-neutral-bg-color,rgba(208,208,208,.3))}.fc-daygrid-day-events:after,.fc-daygrid-day-events:before,.fc-daygrid-day-frame:after,.fc-daygrid-day-frame:before,.fc-daygrid-event-harness:after,.fc-daygrid-event-harness:before{content:"";clear:both;display:table}.fc .fc-daygrid-body{position:relative;z-index:1}.fc .fc-daygrid-day.fc-day-today{background-color:rgba(255,220,40,.15);background-color:var(--fc-today-bg-color,rgba(255,220,40,.15))}.fc .fc-daygrid-day-frame{position:relative;min-height:100%}.fc .fc-daygrid-day-top{position:relative;z-index:4;display:flex;flex-direction:row-reverse}.fc .fc-day-other .fc-daygrid-day-top{opacity:.3}.fc .fc-daygrid-day-number{padding:4px}.fc .fc-daygrid-day-events{margin-top:1px}.fc .fc-daygrid-body-balanced .fc-daygrid-day-events{position:absolute;left:0;right:0}.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events{position:relative;min-height:2em}.fc .fc-daygrid-body-natural .fc-daygrid-day-events{margin-bottom:1em}.fc .fc-daygrid-event-harness{position:relative}.fc .fc-daygrid-event-harness-abs{position:absolute;top:0;left:0;right:0}.fc .fc-daygrid-bg-harness{position:absolute;top:0;bottom:0}.fc .fc-daygrid-day-bg .fc-non-business{z-index:1}.fc .fc-daygrid-day-bg .fc-bg-event{z-index:2}.fc .fc-daygrid-day-bg .fc-highlight{z-index:3}.fc .fc-daygrid-event{z-index:6;margin-top:1px}.fc .fc-daygrid-event.fc-event-mirror{z-index:7}.fc .fc-daygrid-day-bottom{position:relative;z-index:4;font-size:.85em;margin:2px 3px 0}.fc .fc-daygrid-more-link{cursor:pointer}.fc .fc-daygrid-week-number{position:absolute;z-index:5;top:0;padding:2px;min-width:1.5em;text-align:center;background-color:rgba(208,208,208,.3);background-color:var(--fc-neutral-bg-color,rgba(208,208,208,.3));color:grey;color:var(--fc-neutral-text-color,grey)}.fc .fc-more-popover{z-index:8}.fc .fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc-direction-rtl .fc-daygrid-event.fc-event-end{margin-left:2px}.fc-direction-ltr .fc-daygrid-event.fc-event-end,.fc-direction-rtl .fc-daygrid-event.fc-event-start{margin-right:2px}.fc-direction-ltr .fc-daygrid-week-number{left:0;border-radius:0 0 3px}.fc-direction-rtl .fc-daygrid-week-number{right:0;border-radius:0 0 0 3px}.fc-liquid-hack .fc-daygrid-day-frame{position:static}.fc-daygrid-event{position:relative;white-space:nowrap;border-radius:3px;font-size:.85em;font-size:var(--fc-small-font-size,.85em)}.fc-daygrid-block-event .fc-event-time{font-weight:700}.fc-daygrid-block-event .fc-event-time,.fc-daygrid-block-event .fc-event-title{padding:1px}.fc-daygrid-dot-event{display:block;padding:2px 0;overflow:hidden}.fc-daygrid-dot-event .fc-event-title{font-weight:700}.fc-daygrid-dot-event .fc-event-time,.fc-daygrid-dot-event .fc-event-title{display:inline-block}.fc-daygrid-dot-event.fc-event-mirror,.fc-daygrid-dot-event:hover{background:rgba(0,0,0,.1)}.fc-daygrid-event-dot{display:inline-block;margin:0 4px;box-sizing:content-box;width:0;height:0;border:4px solid #3788d8;border:calc(var(--fc-daygrid-event-dot-width,8px)/ 2) solid var(--fc-event-border-color,#3788d8);border-radius:4px;border-radius:calc(var(--fc-daygrid-event-dot-width,8px)/ 2)}.fc-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}.fc-v-event{display:block;border:1px solid #3788d8;border:1px solid var(--fc-event-border-color,#3788d8);background-color:#3788d8;background-color:var(--fc-event-bg-color,#3788d8)}.fc-v-event .fc-event-main{color:#fff;color:var(--fc-event-text-color,#fff);height:100%}.fc-v-event .fc-event-main-frame{height:100%;display:flex;flex-direction:column}.fc-v-event .fc-event-time{flex-grow:0;flex-shrink:0;max-height:100%;overflow:hidden}.fc-v-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-height:0}.fc-v-event .fc-event-title{top:0;bottom:0;max-height:100%;overflow:hidden}.fc-v-event:not(.fc-event-start){border-top-width:0;border-top-left-radius:0;border-top-right-radius:0}.fc-v-event:not(.fc-event-end){border-bottom-width:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-v-event.fc-event-selected:before{left:-10px;right:-10px}.fc-v-event .fc-event-resizer-start{cursor:n-resize}.fc-v-event .fc-event-resizer-end{cursor:s-resize}.fc-v-event:not(.fc-event-selected) .fc-event-resizer{height:8px;height:var(--fc-event-resizer-thickness,8px);left:0;right:0}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start{top:-4px;top:calc(var(--fc-event-resizer-thickness,8px)/ -2)}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end{bottom:-4px;bottom:calc(var(--fc-event-resizer-thickness,8px)/ -2)}.fc-v-event.fc-event-selected .fc-event-resizer{left:50%;margin-left:-4px;margin-left:calc(var(--fc-event-resizer-dot-total-width,8px)/ -2)}.fc-v-event.fc-event-selected .fc-event-resizer-start{top:-4px;top:calc(var(--fc-event-resizer-dot-total-width,8px)/ -2)}.fc-v-event.fc-event-selected .fc-event-resizer-end{bottom:-4px;bottom:calc(var(--fc-event-resizer-dot-total-width,8px)/ -2)}.fc .fc-timegrid .fc-daygrid-body{z-index:2}.fc .fc-timegrid-axis-chunk>table,.fc .fc-timegrid-body{z-index:1;position:relative}.fc .fc-timegrid-divider{padding:0 0 2px}.fc .fc-timegrid-body{min-height:100%}.fc .fc-timegrid-axis-chunk{position:relative}.fc .fc-timegrid-slots{position:relative;z-index:2}.fc .fc-timegrid-slot{height:1.5em;border-bottom:0}.fc .fc-timegrid-slot-minor{border-top-style:dotted}.fc .fc-timegrid-slot-label-cushion{display:inline-block;white-space:nowrap}.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{padding:0 4px}.fc .fc-timegrid-axis-frame-liquid{height:100%}.fc .fc-timegrid-axis-frame{overflow:hidden;display:flex;align-items:center;justify-content:flex-end}.fc .fc-timegrid-axis-cushion{max-width:60px;flex-shrink:0}.fc-direction-ltr .fc-timegrid-slot-label-frame{text-align:right}.fc-direction-rtl .fc-timegrid-slot-label-frame{text-align:left}.fc-liquid-hack .fc-timegrid-axis-frame-liquid{height:auto;position:absolute;top:0;right:0;bottom:0;left:0}.fc .fc-timegrid-col.fc-day-today{background-color:rgba(255,220,40,.15);background-color:var(--fc-today-bg-color,rgba(255,220,40,.15))}.fc .fc-timegrid-col-frame{min-height:100%;position:relative}.fc-liquid-hack .fc-timegrid-col-frame{height:auto;position:absolute;top:0;right:0;bottom:0;left:0}.fc-media-screen .fc-timegrid-cols{position:absolute;top:0;left:0;right:0;bottom:0}.fc-media-screen .fc-timegrid-cols>table{height:100%}.fc-media-screen .fc-timegrid-col-bg,.fc-media-screen .fc-timegrid-col-events,.fc-media-screen .fc-timegrid-now-indicator-container{position:absolute;top:0;left:0;right:0}.fc-media-screen .fc-timegrid-event-harness{position:absolute}.fc .fc-timegrid-col-bg,.fc .fc-timegrid-col-bg .fc-non-business{z-index:1}.fc .fc-timegrid-col-bg .fc-bg-event{z-index:2}.fc .fc-timegrid-col-bg .fc-highlight,.fc .fc-timegrid-col-events{z-index:3}.fc .fc-timegrid-bg-harness{position:absolute;left:0;right:0}.fc .fc-timegrid-now-indicator-container{bottom:0;overflow:hidden}.fc-direction-ltr .fc-timegrid-col-events{margin:0 2.5% 0 2px}.fc-direction-rtl .fc-timegrid-col-events{margin:0 2px 0 2.5%}.fc-timegrid-event-harness-inset .fc-timegrid-event,.fc-timegrid-event.fc-event-mirror{box-shadow:0 0 0 1px #fff;box-shadow:0 0 0 1px var(--fc-page-bg-color,#fff)}.fc-timegrid-event{font-size:.85em;font-size:var(--fc-small-font-size,.85em);border-radius:3px}.fc-timegrid-event .fc-event-main{padding:1px 1px 0}.fc-timegrid-event .fc-event-time{white-space:nowrap;font-size:.85em;font-size:var(--fc-small-font-size,.85em);margin-bottom:1px}.fc-timegrid-event-condensed .fc-event-main-frame{flex-direction:row;overflow:hidden}.fc-timegrid-event-condensed .fc-event-time:after{content:'\00a0-\00a0'}.fc-timegrid-event-condensed .fc-event-title{font-size:.85em;font-size:var(--fc-small-font-size,.85em)}.fc-media-screen .fc-timegrid-event{position:absolute;top:0;bottom:1px;left:0;right:0}.fc .fc-timegrid-now-indicator-line{position:absolute;z-index:4;left:0;right:0;border-style:solid;border-color:red;border-color:var(--fc-now-indicator-color,red);border-width:1px 0 0}.fc .fc-timegrid-now-indicator-arrow{position:absolute;z-index:4;margin-top:-5px;border-style:solid;border-color:red;border-color:var(--fc-now-indicator-color,red)}.fc-direction-ltr .fc-timegrid-now-indicator-arrow{left:0;border-width:5px 0 5px 6px;border-top-color:transparent;border-bottom-color:transparent}.fc-direction-rtl .fc-timegrid-now-indicator-arrow{right:0;border-width:5px 6px 5px 0;border-top-color:transparent;border-bottom-color:transparent}.fc-theme-standard .fc-list{border:1px solid #ddd;border:1px solid var(--fc-border-color,#ddd)}.fc .fc-list-empty{background-color:rgba(208,208,208,.3);background-color:var(--fc-neutral-bg-color,rgba(208,208,208,.3));height:100%;display:flex;justify-content:center;align-items:center}.fc .fc-list-empty-cushion{margin:5em 0}.fc .fc-list-table{width:100%;border-style:hidden}.fc .fc-list-table tr>*{border-left:0;border-right:0}.fc .fc-list-sticky .fc-list-day>*{position:-webkit-sticky;position:sticky;top:0;background:var(--fc-page-bg-color,#fff)}.fc .fc-list-table th{padding:0}.fc .fc-list-day-cushion,.fc .fc-list-table td{padding:8px 14px}.fc .fc-list-day-cushion:after{content:"";clear:both;display:table}.fc-theme-standard .fc-list-day-cushion{background-color:rgba(208,208,208,.3);background-color:var(--fc-neutral-bg-color,rgba(208,208,208,.3))}.fc-direction-ltr .fc-list-day-text,.fc-direction-rtl .fc-list-day-side-text{float:left}.fc-direction-ltr .fc-list-day-side-text,.fc-direction-rtl .fc-list-day-text{float:right}.fc-direction-ltr .fc-list-table .fc-list-event-graphic{padding-right:0}.fc-direction-rtl .fc-list-table .fc-list-event-graphic{padding-left:0}.fc .fc-list-event.fc-event-forced-url{cursor:pointer}.fc .fc-list-event:hover td{background-color:#f5f5f5;background-color:var(--fc-list-event-hover-bg-color,#f5f5f5)}.fc .fc-list-event-graphic,.fc .fc-list-event-time{white-space:nowrap;width:1px}.fc .fc-list-event-dot{display:inline-block;box-sizing:content-box;width:0;height:0;border:5px solid #3788d8;border:calc(var(--fc-list-event-dot-width,10px)/ 2) solid var(--fc-event-border-color,#3788d8);border-radius:5px;border-radius:calc(var(--fc-list-event-dot-width,10px)/ 2)}.fc .fc-list-event-title a{color:inherit;text-decoration:none}.fc .fc-list-event.fc-event-forced-url:hover a{text-decoration:underline}.fc-theme-bootstrap a:not([href]){color:inherit}.fc .fc-event,.fc .fc-scrollgrid table tr{-moz-column-break-inside:avoid;break-inside:avoid}.fc-media-print{display:block;max-width:100%}.fc-media-print .fc-bg-event,.fc-media-print .fc-non-business,.fc-media-print .fc-timegrid-axis-chunk,.fc-media-print .fc-timegrid-slots,.fc-media-print .fc-timeline-slots{display:none}.fc-media-print .fc-h-event,.fc-media-print .fc-toolbar button,.fc-media-print .fc-v-event{color:#000!important;background:#fff!important}.fc-media-print .fc-event,.fc-media-print .fc-event-main{color:#000!important}.fc-media-print .fc-timegrid-event{margin:.5em 0}.fc .fc-timeline-body{min-height:100%;position:relative;z-index:1}.fc .fc-timeline-slots{position:absolute;z-index:1;top:0;bottom:0}.fc .fc-timeline-slots>table{height:100%}.fc .fc-timeline-slot-minor{border-style:dotted}.fc .fc-timeline-slot-frame{display:flex;align-items:center;justify-content:center}.fc .fc-timeline-header-row-chrono .fc-timeline-slot-frame{justify-content:flex-start}.fc .fc-timeline-slot-cushion{padding:4px 5px;white-space:nowrap}.fc-direction-ltr .fc-timeline-slot{border-right:0!important}.fc-direction-rtl .fc-timeline-slot{border-left:0!important}.fc .fc-timeline-now-indicator-arrow,.fc .fc-timeline-now-indicator-line{position:absolute;z-index:4;top:0;border-style:solid;border-color:red;border-color:var(--fc-now-indicator-color,red)}.fc .fc-timeline-now-indicator-arrow{margin:0 -6px;border-width:6px 5px 0;border-left-color:transparent;border-right-color:transparent}.fc .fc-timeline-now-indicator-line{margin:0 -1px;bottom:0;border-width:0 0 0 1px}.fc .fc-timeline-events{position:relative;z-index:3;width:0}.fc .fc-timeline-event-harness{position:absolute;top:0}.fc-timeline-event{z-index:1;position:relative;display:flex;align-items:center;border-radius:0;padding:2px 1px;margin-bottom:1px;font-size:.85em;font-size:var(--fc-small-font-size,.85em)}.fc .fc-timeline-bg,.fc .fc-timeline-bg-harness{position:absolute;top:0;bottom:0}.fc-timeline-event.fc-event-mirror{z-index:2}.fc-timeline-event .fc-event-main{flex-grow:1;flex-shrink:1;min-width:0}.fc-timeline-event .fc-event-time{font-weight:700}.fc-timeline-event .fc-event-time,.fc-timeline-event .fc-event-title{white-space:nowrap;padding:0 2px}.fc-direction-ltr .fc-timeline-event.fc-event-end{margin-right:1px}.fc-direction-rtl .fc-timeline-event.fc-event-end{margin-left:1px}.fc-timeline-overlap-disabled .fc-timeline-event{padding-top:5px;padding-bottom:5px;margin-bottom:0}.fc-timeline-event:not(.fc-event-end):after,.fc-timeline-event:not(.fc-event-start):before{content:"";flex-grow:0;flex-shrink:0;opacity:.5;width:0;height:0;margin:0 1px;border:5px solid #000;border-top-color:transparent;border-bottom-color:transparent}.fc-direction-ltr .fc-timeline-event:not(.fc-event-start):before,.fc-direction-rtl .fc-timeline-event:not(.fc-event-end):after{border-left:0}.fc-direction-ltr .fc-timeline-event:not(.fc-event-end):after,.fc-direction-rtl .fc-timeline-event:not(.fc-event-start):before{border-right:0}.fc .fc-timeline-bg{z-index:2;width:0;left:0;right:0}.fc .fc-timeline-bg .fc-non-business{z-index:1}.fc .fc-timeline-bg .fc-bg-event{z-index:2}.fc .fc-timeline-bg .fc-highlight{z-index:3}.fc .fc-resource-timeline-divider{width:3px;cursor:col-resize}.fc .fc-resource-timeline .fc-resource-group:not([rowspan]){background:rgba(208,208,208,.3);background:var(--fc-neutral-bg-color,rgba(208,208,208,.3))}.fc .fc-timeline-lane-frame{position:relative}.fc .fc-timeline-overlap-enabled .fc-timeline-lane-frame .fc-timeline-events{box-sizing:content-box;padding-bottom:10px}.fc-datagrid-cell-frame-liquid{height:100%}.fc-liquid-hack .fc-datagrid-cell-frame-liquid{height:auto;position:absolute;top:0;right:0;bottom:0;left:0}.fc .fc-datagrid-header .fc-datagrid-cell-frame{position:relative;display:flex;justify-content:flex-start;align-items:center}.fc .fc-datagrid-cell-resizer{position:absolute;z-index:1;top:0;bottom:0;width:5px;cursor:col-resize}.fc .fc-datagrid-cell-cushion{padding:8px;white-space:nowrap;overflow:hidden}.fc .fc-datagrid-expander{cursor:pointer;opacity:.65}.fc .fc-datagrid-expander .fc-icon{display:inline-block;width:1em}.fc .fc-datagrid-expander-placeholder{cursor:auto}.fc .fc-resource-timeline-flat .fc-datagrid-expander-placeholder{display:none}.fc-direction-ltr .fc-datagrid-cell-resizer{right:-3px}.fc-direction-rtl .fc-datagrid-cell-resizer{left:-3px}.fc-direction-ltr .fc-datagrid-expander{margin-right:3px}.fc-direction-rtl .fc-datagrid-expander{margin-left:3px}
\ No newline at end of file
+.fc-icon,.fc-unselectable{-webkit-user-select:none;-ms-user-select:none}.fc .fc-button,.fc-icon{text-transform:none;text-align:center}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc .fc-button:not(:disabled),.fc a[data-navlink],.fc-event.fc-event-draggable,.fc-event[href]{cursor:pointer}.fc-unselectable{-moz-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.fc{display:flex;flex-direction:column;font-size:1em}.fc .fc-button,.fc-icon{display:inline-block;font-weight:400;-moz-user-select:none}.fc,.fc *,.fc :after,.fc :before{box-sizing:border-box}.fc table{border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{vertical-align:top;padding:0}.fc .fc-button,.fc .fc-button .fc-icon,.fc .fc-button-group,.fc .fc-timegrid-slot-label{vertical-align:middle}.fc a[data-navlink]:hover{text-decoration:underline}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-theme-standard td,.fc-theme-standard th{border:1px solid #ddd;border:1px solid var(--fc-border-color,#ddd)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:fcicons;src:url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBfAAAAC8AAAAYGNtYXAXVtKNAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5ZgYydxIAAAF4AAAFNGhlYWQUJ7cIAAAGrAAAADZoaGVhB20DzAAABuQAAAAkaG10eCIABhQAAAcIAAAALGxvY2ED4AU6AAAHNAAAABhtYXhwAA8AjAAAB0wAAAAgbmFtZXsr690AAAdsAAABhnBvc3QAAwAAAAAI9AAAACAAAwPAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpBgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6Qb//f//AAAAAAAg6QD//f//AAH/4xcEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAWIAjQKeAskAEwAAJSc3NjQnJiIHAQYUFwEWMjc2NCcCnuLiDQ0MJAz/AA0NAQAMJAwNDcni4gwjDQwM/wANIwz/AA0NDCMNAAAAAQFiAI0CngLJABMAACUBNjQnASYiBwYUHwEHBhQXFjI3AZ4BAA0N/wAMJAwNDeLiDQ0MJAyNAQAMIw0BAAwMDSMM4uINIwwNDQAAAAIA4gC3Ax4CngATACcAACUnNzY0JyYiDwEGFB8BFjI3NjQnISc3NjQnJiIPAQYUHwEWMjc2NCcB87e3DQ0MIw3VDQ3VDSMMDQ0BK7e3DQ0MJAzVDQ3VDCQMDQ3zuLcMJAwNDdUNIwzWDAwNIwy4twwkDA0N1Q0jDNYMDA0jDAAAAgDiALcDHgKeABMAJwAAJTc2NC8BJiIHBhQfAQcGFBcWMjchNzY0LwEmIgcGFB8BBwYUFxYyNwJJ1Q0N1Q0jDA0Nt7cNDQwjDf7V1Q0N1QwkDA0Nt7cNDQwkDLfWDCMN1Q0NDCQMt7gMIw0MDNYMIw3VDQ0MJAy3uAwjDQwMAAADAFUAAAOrA1UAMwBoAHcAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMhMjY1NCYjISIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAAVYRGRkR/qoRGRkRA1UFBAUOCQkVDAsZDf2rDRkLDBUJCA4FBQUFBQUOCQgVDAsZDQJVDRkLDBUJCQ4FBAVVAgECBQMCBwQECAX9qwQJAwQHAwMFAQICAgIBBQMDBwQDCQQCVQUIBAQHAgMFAgEC/oAZEhEZGRESGQAAAAADAFUAAAOrA1UAMwBoAIkAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMzFRQWMzI2PQEzMjY1NCYrATU0JiMiBh0BIyIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAgBkSEhmAERkZEYAZEhIZgBEZGREDVQUEBQ4JCRUMCxkN/asNGQsMFQkIDgUFBQUFBQ4JCBUMCxkNAlUNGQsMFQkJDgUEBVUCAQIFAwIHBAQIBf2rBAkDBAcDAwUBAgICAgEFAwMHBAMJBAJVBQgEBAcCAwUCAQL+gIASGRkSgBkSERmAEhkZEoAZERIZAAABAOIAjQMeAskAIAAAExcHBhQXFjI/ARcWMjc2NC8BNzY0JyYiDwEnJiIHBhQX4uLiDQ0MJAzi4gwkDA0N4uINDQwkDOLiDCQMDQ0CjeLiDSMMDQ3h4Q0NDCMN4uIMIw0MDOLiDAwNIwwAAAABAAAAAQAAa5n0y18PPPUACwQAAAAAANivOVsAAAAA2K85WwAAAAADqwNVAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAOrAAEAAAAAAAAAAAAAAAAAAAALBAAAAAAAAAAAAAAAAgAAAAQAAWIEAAFiBAAA4gQAAOIEAABVBAAAVQQAAOIAAAAAAAoAFAAeAEQAagCqAOoBngJkApoAAQAAAAsAigADAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGZjaWNvbnMAZgBjAGkAYwBvAG4Ac1ZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGZjaWNvbnMAZgBjAGkAYwBvAG4Ac2ZjaWNvbnMAZgBjAGkAYwBvAG4Ac1JlZ3VsYXIAUgBlAGcAdQBsAGEAcmZjaWNvbnMAZgBjAGkAYwBvAG4Ac0ZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") format('truetype');font-weight:400;font-style:normal}.fc-icon{width:1em;height:1em;user-select:none;font-family:fcicons!important;speak:none;font-style:normal;font-variant:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fc .fc-scroller-harness-liquid,.fc .fc-scroller-liquid,.fc .fc-scrollgrid-liquid{height:100%}.fc-icon-chevron-left:before{content:"\e900"}.fc-icon-chevron-right:before{content:"\e901"}.fc-icon-chevrons-left:before{content:"\e902"}.fc-icon-chevrons-right:before{content:"\e903"}.fc-icon-minus-square:before{content:"\e904"}.fc-icon-plus-square:before{content:"\e905"}.fc-icon-x:before{content:"\e906"}.fc .fc-button{overflow:visible;text-transform:none;margin:0;font-family:inherit}.fc .fc-button::-moz-focus-inner{padding:0;border-style:none}.fc .fc-button{-webkit-appearance:button;-webkit-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.4em .65em;font-size:1em;line-height:1.5;border-radius:.25em}.fc .fc-button:hover{text-decoration:none}.fc .fc-button:focus{outline:0;box-shadow:0 0 0 .2rem rgba(44,62,80,.25)}.fc .fc-button-primary:focus,.fc .fc-button-primary:not(:disabled).fc-button-active:focus,.fc .fc-button-primary:not(:disabled):active:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button:disabled{opacity:.65}.fc .fc-button-primary{color:#fff;color:var(--fc-button-text-color,#fff);background-color:#2C3E50;background-color:var(--fc-button-bg-color,#2C3E50);border-color:#2C3E50;border-color:var(--fc-button-border-color,#2C3E50)}.fc .fc-button-primary:hover{color:#fff;color:var(--fc-button-text-color,#fff);background-color:#1e2b37;background-color:var(--fc-button-hover-bg-color,#1e2b37);border-color:#1a252f;border-color:var(--fc-button-hover-border-color,#1a252f)}.fc .fc-button-primary:disabled{color:#fff;color:var(--fc-button-text-color,#fff);background-color:#2C3E50;background-color:var(--fc-button-bg-color,#2C3E50);border-color:#2C3E50;border-color:var(--fc-button-border-color,#2C3E50)}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{color:#fff;color:var(--fc-button-text-color,#fff);background-color:#1a252f;background-color:var(--fc-button-active-bg-color,#1a252f);border-color:#151e27;border-color:var(--fc-button-active-border-color,#151e27)}.fc .fc-button .fc-icon{font-size:1.5em}.fc .fc-button-group{position:relative;display:inline-flex}.fc .fc-button-group>.fc-button{position:relative;flex:1 1 auto}.fc .fc-button-group>.fc-button.fc-button-active,.fc .fc-button-group>.fc-button:active,.fc .fc-button-group>.fc-button:focus,.fc .fc-button-group>.fc-button:hover{z-index:1}.fc-direction-ltr .fc-button-group>.fc-button:not(:first-child){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){margin-right:-1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-top-left-radius:0;border-bottom-left-radius:0}.fc .fc-toolbar{display:flex;justify-content:space-between;align-items:center}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:1.5em}.fc .fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc .fc-toolbar-title{font-size:1.75em;margin:0}.fc-direction-ltr .fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-direction-rtl .fc-toolbar>*>:not(:first-child){margin-right:.75em}.fc-direction-rtl .fc-toolbar-ltr{flex-direction:row-reverse}.fc .fc-scroller{-webkit-overflow-scrolling:touch;position:relative}.fc .fc-scroller-liquid-absolute{position:absolute;top:0;right:0;left:0;bottom:0}.fc .fc-scroller-harness{position:relative;overflow:hidden;direction:ltr}.fc-direction-rtl .fc-scroller-harness>.fc-scroller{direction:rtl}.fc-theme-standard .fc-scrollgrid{border:1px solid #ddd;border:1px solid var(--fc-border-color,#ddd)}.fc .fc-scrollgrid,.fc .fc-scrollgrid-section-footer>*,.fc .fc-scrollgrid-section-header>*{border-bottom-width:0}.fc .fc-scrollgrid,.fc .fc-scrollgrid table{width:100%;table-layout:fixed}.fc .fc-scrollgrid table{border-top-style:hidden;border-left-style:hidden;border-right-style:hidden}.fc .fc-scrollgrid{border-collapse:separate;border-right-width:0}.fc .fc-scrollgrid-section,.fc .fc-scrollgrid-section table,.fc .fc-scrollgrid-section>td{height:1px}.fc .fc-scrollgrid-section-liquid{height:auto}.fc .fc-scrollgrid-section-liquid>td{height:100%}.fc .fc-scrollgrid-section>*{border-top-width:0;border-left-width:0}.fc .fc-scrollgrid-section-body table,.fc .fc-scrollgrid-section-footer table{border-bottom-style:hidden}.fc .fc-scrollgrid-section-sticky>*{background:var(--fc-page-bg-color,#fff);position:-webkit-sticky;position:sticky;z-index:2}.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky>*{top:0}.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky>*{bottom:0}.fc .fc-scrollgrid-sticky-shim{height:1px;margin-bottom:-1px}.fc-sticky{position:-webkit-sticky;position:sticky}.fc .fc-view-harness{flex-grow:1;position:relative}.fc .fc-bg-event,.fc .fc-highlight,.fc .fc-non-business,.fc .fc-view-harness-active>.fc-view{position:absolute;top:0;left:0;right:0;bottom:0}.fc .fc-col-header-cell-cushion{display:inline-block;padding:2px 4px}.fc .fc-non-business{background:rgba(215,215,215,.3);background:var(--fc-non-business-color,rgba(215,215,215,.3))}.fc .fc-bg-event{background:var(--fc-bg-event-color,#8fdf82);opacity:.3;opacity:var(--fc-bg-event-opacity,.3)}.fc .fc-bg-event .fc-event-title{margin:.5em;font-size:.85em;font-size:var(--fc-small-font-size,.85em);font-style:italic}.fc .fc-highlight{background:rgba(188,232,241,.3);background:var(--fc-highlight-color,rgba(188,232,241,.3))}.fc .fc-cell-shaded,.fc .fc-day-disabled{background:rgba(208,208,208,.3);background:var(--fc-neutral-bg-color,rgba(208,208,208,.3))}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event .fc-event-main{position:relative;z-index:2}.fc-event-dragging:not(.fc-event-selected){opacity:.75}.fc-event-dragging.fc-event-selected{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-event .fc-event-resizer{display:none;position:absolute;z-index:4}.fc-event-selected .fc-event-resizer,.fc-event:hover .fc-event-resizer,.fc-h-event{display:block}.fc-event-selected .fc-event-resizer{border-radius:4px;border-radius:calc(var(--fc-event-resizer-dot-total-width,8px)/ 2);border-width:1px;border-width:var(--fc-event-resizer-dot-border-width,1px);width:8px;width:var(--fc-event-resizer-dot-total-width,8px);height:8px;height:var(--fc-event-resizer-dot-total-width,8px);border-style:solid;border-color:inherit;background:var(--fc-page-bg-color,#fff)}.fc-event-selected .fc-event-resizer:before{content:'';position:absolute;top:-20px;left:-20px;right:-20px;bottom:-20px}.fc-event-selected{box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event-selected:before{content:"";position:absolute;z-index:3;top:0;left:0;right:0;bottom:0}.fc-event-selected:after{content:"";background:rgba(0,0,0,.25);background:var(--fc-event-selected-overlay-color,rgba(0,0,0,.25));position:absolute;z-index:1;top:-1px;left:-1px;right:-1px;bottom:-1px}.fc-h-event{border:1px solid #3788d8;border:1px solid var(--fc-event-border-color,#3788d8);background-color:#3788d8;background-color:var(--fc-event-bg-color,#3788d8)}.fc-h-event .fc-event-main{color:#fff;color:var(--fc-event-text-color,#fff)}.fc-h-event .fc-event-main-frame{display:flex}.fc-h-event .fc-event-time{max-width:100%;overflow:hidden}.fc-h-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-width:0}.fc-h-event .fc-event-title{display:inline-block;vertical-align:top;left:0;right:0;max-width:100%;overflow:hidden}.fc-h-event.fc-event-selected:before{top:-10px;bottom:-10px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-top-left-radius:0;border-bottom-left-radius:0;border-left-width:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-top-right-radius:0;border-bottom-right-radius:0;border-right-width:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{top:0;bottom:0;width:8px;width:var(--fc-event-resizer-thickness,8px)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end{cursor:w-resize;left:-4px;left:calc(var(--fc-event-resizer-thickness,8px)/ -2)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start{cursor:e-resize;right:-4px;right:calc(var(--fc-event-resizer-thickness,8px)/ -2)}.fc-h-event.fc-event-selected .fc-event-resizer{top:50%;margin-top:-4px;margin-top:calc(var(--fc-event-resizer-dot-total-width,8px)/ -2)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end{left:-4px;left:calc(var(--fc-event-resizer-dot-total-width,8px)/ -2)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start{right:-4px;right:calc(var(--fc-event-resizer-dot-total-width,8px)/ -2)}:root{--fc-daygrid-event-dot-width:8px;--fc-list-event-dot-width:10px;--fc-list-event-hover-bg-color:#f5f5f5}.fc .fc-popover{position:fixed;top:0;box-shadow:0 2px 6px rgba(0,0,0,.15)}.fc .fc-popover-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:3px 4px}.fc .fc-popover-title{margin:0 2px}.fc .fc-popover-close{cursor:pointer;opacity:.65;font-size:1.1em}.fc-theme-standard .fc-popover{border:1px solid #ddd;border:1px solid var(--fc-border-color,#ddd);background:var(--fc-page-bg-color,#fff)}.fc-theme-standard .fc-popover-header{background:rgba(208,208,208,.3);background:var(--fc-neutral-bg-color,rgba(208,208,208,.3))}.fc-daygrid-day-events:after,.fc-daygrid-day-events:before,.fc-daygrid-day-frame:after,.fc-daygrid-day-frame:before,.fc-daygrid-event-harness:after,.fc-daygrid-event-harness:before{content:"";clear:both;display:table}.fc .fc-daygrid-body{position:relative;z-index:1}.fc .fc-daygrid-day.fc-day-today{background-color:rgba(255,220,40,.15);background-color:var(--fc-today-bg-color,rgba(255,220,40,.15))}.fc .fc-daygrid-day-frame{position:relative;min-height:100%}.fc .fc-daygrid-day-top{display:flex;flex-direction:row-reverse}.fc .fc-day-other .fc-daygrid-day-top{opacity:.3}.fc .fc-daygrid-day-number{position:relative;z-index:4;padding:4px}.fc .fc-daygrid-day-events{margin-top:1px}.fc .fc-daygrid-body-balanced .fc-daygrid-day-events{position:absolute;left:0;right:0}.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events{position:relative;min-height:2em}.fc .fc-daygrid-body-natural .fc-daygrid-day-events{margin-bottom:1em}.fc .fc-daygrid-event-harness{position:relative}.fc .fc-daygrid-event-harness-abs{position:absolute;top:0;left:0;right:0}.fc .fc-daygrid-bg-harness{position:absolute;top:0;bottom:0}.fc .fc-daygrid-day-bg .fc-non-business{z-index:1}.fc .fc-daygrid-day-bg .fc-bg-event{z-index:2}.fc .fc-daygrid-day-bg .fc-highlight{z-index:3}.fc .fc-daygrid-event{z-index:6;margin-top:1px}.fc .fc-daygrid-event.fc-event-mirror{z-index:7}.fc .fc-daygrid-day-bottom{font-size:.85em;margin:2px 3px 0}.fc .fc-daygrid-more-link{position:relative;z-index:4;cursor:pointer}.fc .fc-daygrid-week-number{position:absolute;z-index:5;top:0;padding:2px;min-width:1.5em;text-align:center;background-color:rgba(208,208,208,.3);background-color:var(--fc-neutral-bg-color,rgba(208,208,208,.3));color:grey;color:var(--fc-neutral-text-color,grey)}.fc .fc-more-popover{z-index:8}.fc .fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc-direction-rtl .fc-daygrid-event.fc-event-end{margin-left:2px}.fc-direction-ltr .fc-daygrid-event.fc-event-end,.fc-direction-rtl .fc-daygrid-event.fc-event-start{margin-right:2px}.fc-direction-ltr .fc-daygrid-week-number{left:0;border-radius:0 0 3px}.fc-direction-rtl .fc-daygrid-week-number{right:0;border-radius:0 0 0 3px}.fc-liquid-hack .fc-daygrid-day-frame{position:static}.fc-daygrid-event{position:relative;white-space:nowrap;border-radius:3px;font-size:.85em;font-size:var(--fc-small-font-size,.85em)}.fc-daygrid-block-event .fc-event-time{font-weight:700}.fc-daygrid-block-event .fc-event-time,.fc-daygrid-block-event .fc-event-title{padding:1px}.fc-daygrid-dot-event{display:flex;align-items:center;padding:2px 0}.fc-daygrid-dot-event .fc-event-title{flex-grow:1;flex-shrink:1;min-width:0;overflow:hidden;font-weight:700}.fc-daygrid-dot-event.fc-event-mirror,.fc-daygrid-dot-event:hover{background:rgba(0,0,0,.1)}.fc-daygrid-dot-event.fc-event-selected:before{top:-10px;bottom:-10px}.fc-daygrid-event-dot{margin:0 4px;box-sizing:content-box;width:0;height:0;border:4px solid #3788d8;border:calc(var(--fc-daygrid-event-dot-width,8px)/ 2) solid var(--fc-event-border-color,#3788d8);border-radius:4px;border-radius:calc(var(--fc-daygrid-event-dot-width,8px)/ 2)}.fc-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}.fc-v-event{display:block;border:1px solid #3788d8;border:1px solid var(--fc-event-border-color,#3788d8);background-color:#3788d8;background-color:var(--fc-event-bg-color,#3788d8)}.fc-v-event .fc-event-main{color:#fff;color:var(--fc-event-text-color,#fff);height:100%}.fc-v-event .fc-event-main-frame{height:100%;display:flex;flex-direction:column}.fc-v-event .fc-event-time{flex-grow:0;flex-shrink:0;max-height:100%;overflow:hidden}.fc-v-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-height:0}.fc-v-event .fc-event-title{top:0;bottom:0;max-height:100%;overflow:hidden}.fc-v-event:not(.fc-event-start){border-top-width:0;border-top-left-radius:0;border-top-right-radius:0}.fc-v-event:not(.fc-event-end){border-bottom-width:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-v-event.fc-event-selected:before{left:-10px;right:-10px}.fc-v-event .fc-event-resizer-start{cursor:n-resize}.fc-v-event .fc-event-resizer-end{cursor:s-resize}.fc-v-event:not(.fc-event-selected) .fc-event-resizer{height:8px;height:var(--fc-event-resizer-thickness,8px);left:0;right:0}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start{top:-4px;top:calc(var(--fc-event-resizer-thickness,8px)/ -2)}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end{bottom:-4px;bottom:calc(var(--fc-event-resizer-thickness,8px)/ -2)}.fc-v-event.fc-event-selected .fc-event-resizer{left:50%;margin-left:-4px;margin-left:calc(var(--fc-event-resizer-dot-total-width,8px)/ -2)}.fc-v-event.fc-event-selected .fc-event-resizer-start{top:-4px;top:calc(var(--fc-event-resizer-dot-total-width,8px)/ -2)}.fc-v-event.fc-event-selected .fc-event-resizer-end{bottom:-4px;bottom:calc(var(--fc-event-resizer-dot-total-width,8px)/ -2)}.fc .fc-timegrid .fc-daygrid-body{z-index:2}.fc .fc-timegrid-axis-chunk>table,.fc .fc-timegrid-body,.fc .fc-timegrid-slots{position:relative;z-index:1}.fc .fc-timegrid-divider{padding:0 0 2px}.fc .fc-timegrid-body{min-height:100%}.fc .fc-timegrid-axis-chunk{position:relative}.fc .fc-timegrid-slot{height:1.5em;border-bottom:0}.fc .fc-timegrid-slot:empty:before{content:'\00a0'}.fc .fc-timegrid-slot-minor{border-top-style:dotted}.fc .fc-timegrid-slot-label-cushion{display:inline-block;white-space:nowrap}.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{padding:0 4px}.fc .fc-timegrid-axis-frame-liquid{height:100%}.fc .fc-timegrid-axis-frame{overflow:hidden;display:flex;align-items:center;justify-content:flex-end}.fc .fc-timegrid-axis-cushion{max-width:60px;flex-shrink:0}.fc-direction-ltr .fc-timegrid-slot-label-frame{text-align:right}.fc-direction-rtl .fc-timegrid-slot-label-frame{text-align:left}.fc-liquid-hack .fc-timegrid-axis-frame-liquid{height:auto;position:absolute;top:0;right:0;bottom:0;left:0}.fc .fc-timegrid-col.fc-day-today{background-color:rgba(255,220,40,.15);background-color:var(--fc-today-bg-color,rgba(255,220,40,.15))}.fc .fc-timegrid-col-frame{min-height:100%;position:relative}.fc-liquid-hack .fc-timegrid-col-frame{height:auto;position:absolute;top:0;right:0;bottom:0;left:0}.fc-media-screen .fc-timegrid-cols{position:absolute;top:0;left:0;right:0;bottom:0}.fc-media-screen .fc-timegrid-cols>table{height:100%}.fc-media-screen .fc-timegrid-col-bg,.fc-media-screen .fc-timegrid-col-events,.fc-media-screen .fc-timegrid-now-indicator-container{position:absolute;top:0;left:0;right:0}.fc-media-screen .fc-timegrid-event-harness{position:absolute}.fc .fc-timegrid-col-bg{z-index:2}.fc .fc-timegrid-col-bg .fc-non-business{z-index:1}.fc .fc-timegrid-col-bg .fc-bg-event{z-index:2}.fc .fc-timegrid-col-bg .fc-highlight,.fc .fc-timegrid-col-events{z-index:3}.fc .fc-timegrid-bg-harness{position:absolute;left:0;right:0}.fc .fc-timegrid-now-indicator-container{bottom:0;overflow:hidden}.fc-direction-ltr .fc-timegrid-col-events{margin:0 2.5% 0 2px}.fc-direction-rtl .fc-timegrid-col-events{margin:0 2px 0 2.5%}.fc-timegrid-event-harness-inset .fc-timegrid-event,.fc-timegrid-event.fc-event-mirror{box-shadow:0 0 0 1px #fff;box-shadow:0 0 0 1px var(--fc-page-bg-color,#fff)}.fc-timegrid-event{font-size:.85em;font-size:var(--fc-small-font-size,.85em);border-radius:3px}.fc-timegrid-event .fc-event-main{padding:1px 1px 0}.fc-timegrid-event .fc-event-time{white-space:nowrap;font-size:.85em;font-size:var(--fc-small-font-size,.85em);margin-bottom:1px}.fc-timegrid-event-condensed .fc-event-main-frame{flex-direction:row;overflow:hidden}.fc-timegrid-event-condensed .fc-event-time:after{content:'\00a0-\00a0'}.fc-timegrid-event-condensed .fc-event-title{font-size:.85em;font-size:var(--fc-small-font-size,.85em)}.fc-media-screen .fc-timegrid-event{position:absolute;top:0;bottom:1px;left:0;right:0}.fc .fc-timegrid-now-indicator-line{position:absolute;z-index:4;left:0;right:0;border-style:solid;border-color:red;border-color:var(--fc-now-indicator-color,red);border-width:1px 0 0}.fc .fc-timegrid-now-indicator-arrow{position:absolute;z-index:4;margin-top:-5px;border-style:solid;border-color:red;border-color:var(--fc-now-indicator-color,red)}.fc-direction-ltr .fc-timegrid-now-indicator-arrow{left:0;border-width:5px 0 5px 6px;border-top-color:transparent;border-bottom-color:transparent}.fc-direction-rtl .fc-timegrid-now-indicator-arrow{right:0;border-width:5px 6px 5px 0;border-top-color:transparent;border-bottom-color:transparent}.fc-theme-standard .fc-list{border:1px solid #ddd;border:1px solid var(--fc-border-color,#ddd)}.fc .fc-list-empty{background-color:rgba(208,208,208,.3);background-color:var(--fc-neutral-bg-color,rgba(208,208,208,.3));height:100%;display:flex;justify-content:center;align-items:center}.fc .fc-list-empty-cushion{margin:5em 0}.fc .fc-list-table{width:100%;border-style:hidden}.fc .fc-list-table tr>*{border-left:0;border-right:0}.fc .fc-list-sticky .fc-list-day>*{position:-webkit-sticky;position:sticky;top:0;background:var(--fc-page-bg-color,#fff)}.fc .fc-list-table th{padding:0}.fc .fc-list-day-cushion,.fc .fc-list-table td{padding:8px 14px}.fc .fc-list-day-cushion:after{content:"";clear:both;display:table}.fc-theme-standard .fc-list-day-cushion{background-color:rgba(208,208,208,.3);background-color:var(--fc-neutral-bg-color,rgba(208,208,208,.3))}.fc-direction-ltr .fc-list-day-text,.fc-direction-rtl .fc-list-day-side-text{float:left}.fc-direction-ltr .fc-list-day-side-text,.fc-direction-rtl .fc-list-day-text{float:right}.fc-direction-ltr .fc-list-table .fc-list-event-graphic{padding-right:0}.fc-direction-rtl .fc-list-table .fc-list-event-graphic{padding-left:0}.fc .fc-list-event.fc-event-forced-url{cursor:pointer}.fc .fc-list-event:hover td{background-color:#f5f5f5;background-color:var(--fc-list-event-hover-bg-color,#f5f5f5)}.fc .fc-list-event-graphic,.fc .fc-list-event-time{white-space:nowrap;width:1px}.fc .fc-list-event-dot{display:inline-block;box-sizing:content-box;width:0;height:0;border:5px solid #3788d8;border:calc(var(--fc-list-event-dot-width,10px)/ 2) solid var(--fc-event-border-color,#3788d8);border-radius:5px;border-radius:calc(var(--fc-list-event-dot-width,10px)/ 2)}.fc .fc-list-event-title a{color:inherit;text-decoration:none}.fc .fc-list-event.fc-event-forced-url:hover a{text-decoration:underline}.fc-theme-bootstrap a:not([href]){color:inherit}.fc .fc-event,.fc .fc-scrollgrid table tr{-moz-column-break-inside:avoid;break-inside:avoid}.fc-media-print{display:block;max-width:100%}.fc-media-print .fc-bg-event,.fc-media-print .fc-non-business,.fc-media-print .fc-timegrid-axis-chunk,.fc-media-print .fc-timegrid-slots,.fc-media-print .fc-timeline-slots{display:none}.fc-media-print .fc-h-event,.fc-media-print .fc-toolbar button,.fc-media-print .fc-v-event{color:#000!important;background:#fff!important}.fc-media-print .fc-event,.fc-media-print .fc-event-main{color:#000!important}.fc-media-print .fc-timegrid-event{margin:.5em 0}.fc .fc-timeline-body{min-height:100%;position:relative;z-index:1}.fc .fc-timeline-slots{position:absolute;z-index:1;top:0;bottom:0}.fc .fc-timeline-slots>table{height:100%}.fc .fc-timeline-slot-minor{border-style:dotted}.fc .fc-timeline-slot-frame{display:flex;align-items:center;justify-content:center}.fc .fc-timeline-header-row-chrono .fc-timeline-slot-frame{justify-content:flex-start}.fc .fc-timeline-slot-cushion{padding:4px 5px;white-space:nowrap}.fc-direction-ltr .fc-timeline-slot{border-right:0!important}.fc-direction-rtl .fc-timeline-slot{border-left:0!important}.fc .fc-timeline-now-indicator-container{position:absolute;z-index:4;top:0;bottom:0;left:0;right:0;width:0}.fc .fc-timeline-now-indicator-arrow,.fc .fc-timeline-now-indicator-line{position:absolute;top:0;border-style:solid;border-color:red;border-color:var(--fc-now-indicator-color,red)}.fc .fc-timeline-now-indicator-arrow{margin:0 -6px;border-width:6px 5px 0;border-left-color:transparent;border-right-color:transparent}.fc .fc-timeline-now-indicator-line{margin:0 -1px;bottom:0;border-width:0 0 0 1px}.fc .fc-timeline-events{position:relative;z-index:3;width:0}.fc .fc-timeline-event-harness{position:absolute;top:0}.fc-timeline-event{z-index:1;position:relative;display:flex;align-items:center;border-radius:0;padding:2px 1px;margin-bottom:1px;font-size:.85em;font-size:var(--fc-small-font-size,.85em)}.fc .fc-timeline-bg,.fc .fc-timeline-bg-harness{position:absolute;top:0;bottom:0}.fc-timeline-event.fc-event-mirror{z-index:2}.fc-timeline-event .fc-event-main{flex-grow:1;flex-shrink:1;min-width:0}.fc-timeline-event .fc-event-time{font-weight:700}.fc-timeline-event .fc-event-time,.fc-timeline-event .fc-event-title{white-space:nowrap;padding:0 2px}.fc-direction-ltr .fc-timeline-event.fc-event-end{margin-right:1px}.fc-direction-rtl .fc-timeline-event.fc-event-end{margin-left:1px}.fc-timeline-overlap-disabled .fc-timeline-event{padding-top:5px;padding-bottom:5px;margin-bottom:0}.fc-timeline-event:not(.fc-event-end):after,.fc-timeline-event:not(.fc-event-start):before{content:"";flex-grow:0;flex-shrink:0;opacity:.5;width:0;height:0;margin:0 1px;border:5px solid #000;border-top-color:transparent;border-bottom-color:transparent}.fc-direction-ltr .fc-timeline-event:not(.fc-event-start):before,.fc-direction-rtl .fc-timeline-event:not(.fc-event-end):after{border-left:0}.fc-direction-ltr .fc-timeline-event:not(.fc-event-end):after,.fc-direction-rtl .fc-timeline-event:not(.fc-event-start):before{border-right:0}.fc .fc-timeline-bg{z-index:2;width:0;left:0;right:0}.fc .fc-timeline-bg .fc-non-business{z-index:1}.fc .fc-timeline-bg .fc-bg-event{z-index:2}.fc .fc-timeline-bg .fc-highlight{z-index:3}.fc .fc-resource-timeline-divider{width:3px;cursor:col-resize}.fc .fc-resource-timeline .fc-resource-group:not([rowspan]){background:rgba(208,208,208,.3);background:var(--fc-neutral-bg-color,rgba(208,208,208,.3))}.fc .fc-timeline-lane-frame{position:relative}.fc .fc-timeline-overlap-enabled .fc-timeline-lane-frame .fc-timeline-events{box-sizing:content-box;padding-bottom:10px}.fc-datagrid-cell-frame-liquid{height:100%}.fc-liquid-hack .fc-datagrid-cell-frame-liquid{height:auto;position:absolute;top:0;right:0;bottom:0;left:0}.fc .fc-datagrid-header .fc-datagrid-cell-frame{position:relative;display:flex;justify-content:flex-start;align-items:center}.fc .fc-datagrid-cell-resizer{position:absolute;z-index:1;top:0;bottom:0;width:5px;cursor:col-resize}.fc .fc-datagrid-cell-cushion{padding:8px;white-space:nowrap;overflow:hidden}.fc .fc-datagrid-expander{cursor:pointer;opacity:.65}.fc .fc-datagrid-expander .fc-icon{display:inline-block;width:1em}.fc .fc-datagrid-expander-placeholder{cursor:auto}.fc .fc-resource-timeline-flat .fc-datagrid-expander-placeholder{display:none}.fc-direction-ltr .fc-datagrid-cell-resizer{right:-3px}.fc-direction-rtl .fc-datagrid-cell-resizer{left:-3px}.fc-direction-ltr .fc-datagrid-expander{margin-right:3px}.fc-direction-rtl .fc-datagrid-expander{margin-left:3px}
\ No newline at end of file
diff --git a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/main.min.js b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/main.min.js
index 408ec46633f1984ca694723826f951a7df6d4b30..dae286dfb7ee4618fa0a4a3c899df4ab3d442a2e 100644
--- a/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/main.min.js
+++ b/AKPlan/static/AKPlan/vendor/fullcalendar-scheduler/main.min.js
@@ -1,6 +1,6 @@
 /*!
-FullCalendar Scheduler v5.1.0
+FullCalendar Scheduler v5.5.1
 Docs & License: https://fullcalendar.io/scheduler
 (c) 2020 Adam Shaw
 */
-var FullCalendar=function(e){"use strict";var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,n)};function n(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}var r=function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};function o(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),o=0;for(t=0;t<n;t++)for(var i=arguments[t],a=0,s=i.length;a<s;a++,o++)r[o]=i[a];return r}var i,a,s,l,u,c,d,p={},f=[],h=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;function g(e,t){for(var n in t)e[n]=t[n];return e}function v(e){var t=e.parentNode;t&&t.removeChild(e)}function m(e,t,n){var r,o=arguments,i={};for(r in t)"key"!==r&&"ref"!==r&&(i[r]=t[r]);if(arguments.length>3)for(n=[n],r=3;r<arguments.length;r++)n.push(o[r]);if(null!=n&&(i.children=n),"function"==typeof e&&null!=e.defaultProps)for(r in e.defaultProps)void 0===i[r]&&(i[r]=e.defaultProps[r]);return y(e,i,t&&t.key,t&&t.ref,null)}function y(e,t,n,r,o){var a={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:o};return null==o&&(a.__v=a),i.vnode&&i.vnode(a),a}function S(e){return e.children}function E(e,t){this.props=e,this.context=t}function C(e,t){if(null==t)return e.__?C(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e)return n.__e;return"function"==typeof e.type?C(e):null}function b(e){var t,n;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e){e.__e=e.__c.base=n.__e;break}return b(e)}}function D(e){(!e.__d&&(e.__d=!0)&&a.push(e)&&!s++||u!==i.debounceRendering)&&((u=i.debounceRendering)||l)(R)}function R(){for(var e;s=a.length;)e=a.sort((function(e,t){return e.__v.__b-t.__v.__b})),a=[],e.some((function(e){var t,n,r,o,i,a,s;e.__d&&(a=(i=(t=e).__v).__e,(s=t.__P)&&(n=[],(r=g({},i)).__v=r,o=P(s,i,r,t.__n,void 0!==s.ownerSVGElement,null,n,null==a?C(i):a),I(n,i),o!=a&&b(i)))}))}function w(e,t,n,r,o,i,a,s,l){var u,c,d,h,g,m,y,S=n&&n.__k||f,E=S.length;if(s==p&&(s=null!=i?i[0]:E?C(n,0):null),u=0,t.__k=T(t.__k,(function(n){if(null!=n){if(n.__=t,n.__b=t.__b+1,null===(d=S[u])||d&&n.key==d.key&&n.type===d.type)S[u]=void 0;else for(c=0;c<E;c++){if((d=S[c])&&n.key==d.key&&n.type===d.type){S[c]=void 0;break}d=null}if(h=P(e,n,d=d||p,r,o,i,a,s,l),(c=n.ref)&&d.ref!=c&&(y||(y=[]),d.ref&&y.push(d.ref,null,n),y.push(c,n.__c||h,n)),null!=h){var f;if(null==m&&(m=h),void 0!==n.__d)f=n.__d,n.__d=void 0;else if(i==d||h!=s||null==h.parentNode){e:if(null==s||s.parentNode!==e)e.appendChild(h),f=null;else{for(g=s,c=0;(g=g.nextSibling)&&c<E;c+=2)if(g==h)break e;e.insertBefore(h,s),f=s}"option"==t.type&&(e.value="")}s=void 0!==f?f:h.nextSibling,"function"==typeof t.type&&(t.__d=s)}else s&&d.__e==s&&s.parentNode!=e&&(s=C(d))}return u++,n})),t.__e=m,null!=i&&"function"!=typeof t.type)for(u=i.length;u--;)null!=i[u]&&v(i[u]);for(u=E;u--;)null!=S[u]&&H(S[u],S[u]);if(y)for(u=0;u<y.length;u++)_(y[u],y[++u],y[++u])}function T(e,t,n){if(null==n&&(n=[]),null==e||"boolean"==typeof e)t&&n.push(t(null));else if(Array.isArray(e))for(var r=0;r<e.length;r++)T(e[r],t,n);else n.push(t?t("string"==typeof e||"number"==typeof e?y(null,e,null,null,e):null!=e.__e||null!=e.__c?y(e.type,e.props,e.key,null,e.__v):e):e);return n}function x(e,t,n){"-"===t[0]?e.setProperty(t,n):e[t]="number"==typeof n&&!1===h.test(t)?n+"px":null==n?"":n}function k(e,t,n,r,o){var i,a,s,l,u;if(o?"className"===t&&(t="class"):"class"===t&&(t="className"),"style"===t)if(i=e.style,"string"==typeof n)i.cssText=n;else{if("string"==typeof r&&(i.cssText="",r=null),r)for(l in r)n&&l in n||x(i,l,"");if(n)for(u in n)r&&n[u]===r[u]||x(i,u,n[u])}else"o"===t[0]&&"n"===t[1]?(a=t!==(t=t.replace(/Capture$/,"")),s=t.toLowerCase(),t=(s in e?s:t).slice(2),n?(r||e.addEventListener(t,M,a),(e.l||(e.l={}))[t]=n):e.removeEventListener(t,M,a)):"list"!==t&&"tagName"!==t&&"form"!==t&&"type"!==t&&"size"!==t&&!o&&t in e?e[t]=null==n?"":n:"function"!=typeof n&&"dangerouslySetInnerHTML"!==t&&(t!==(t=t.replace(/^xlink:?/,""))?null==n||!1===n?e.removeAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase()):e.setAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase(),n):null==n||!1===n&&!/^ar/.test(t)?e.removeAttribute(t):e.setAttribute(t,n))}function M(e){this.l[e.type](i.event?i.event(e):e)}function P(e,t,n,r,o,a,s,l,u){var c,d,p,f,h,v,m,y,C,b,D=t.type;if(void 0!==t.constructor)return null;(c=i.__b)&&c(t);try{e:if("function"==typeof D){if(y=t.props,C=(c=D.contextType)&&r[c.__c],b=c?C?C.props.value:c.__:r,n.__c?m=(d=t.__c=n.__c).__=d.__E:("prototype"in D&&D.prototype.render?t.__c=d=new D(y,b):(t.__c=d=new E(y,b),d.constructor=D,d.render=O),C&&C.sub(d),d.props=y,d.state||(d.state={}),d.context=b,d.__n=r,p=d.__d=!0,d.__h=[]),null==d.__s&&(d.__s=d.state),null!=D.getDerivedStateFromProps&&(d.__s==d.state&&(d.__s=g({},d.__s)),g(d.__s,D.getDerivedStateFromProps(y,d.__s))),f=d.props,h=d.state,p)null==D.getDerivedStateFromProps&&null!=d.componentWillMount&&d.componentWillMount(),null!=d.componentDidMount&&d.__h.push(d.componentDidMount);else{if(null==D.getDerivedStateFromProps&&y!==f&&null!=d.componentWillReceiveProps&&d.componentWillReceiveProps(y,b),!d.__e&&null!=d.shouldComponentUpdate&&!1===d.shouldComponentUpdate(y,d.__s,b)||t.__v===n.__v&&!d.__){for(d.props=y,d.state=d.__s,t.__v!==n.__v&&(d.__d=!1),d.__v=t,t.__e=n.__e,t.__k=n.__k,d.__h.length&&s.push(d),c=0;c<t.__k.length;c++)t.__k[c]&&(t.__k[c].__=t);break e}null!=d.componentWillUpdate&&d.componentWillUpdate(y,d.__s,b),null!=d.componentDidUpdate&&d.__h.push((function(){d.componentDidUpdate(f,h,v)}))}d.context=b,d.props=y,d.state=d.__s,(c=i.__r)&&c(t),d.__d=!1,d.__v=t,d.__P=e,c=d.render(d.props,d.state,d.context),t.__k=null!=c&&c.type==S&&null==c.key?c.props.children:Array.isArray(c)?c:[c],null!=d.getChildContext&&(r=g(g({},r),d.getChildContext())),p||null==d.getSnapshotBeforeUpdate||(v=d.getSnapshotBeforeUpdate(f,h)),w(e,t,n,r,o,a,s,l,u),d.base=t.__e,d.__h.length&&s.push(d),m&&(d.__E=d.__=null),d.__e=!1}else null==a&&t.__v===n.__v?(t.__k=n.__k,t.__e=n.__e):t.__e=N(n.__e,t,n,r,o,a,s,u);(c=i.diffed)&&c(t)}catch(e){t.__v=null,i.__e(e,t,n)}return t.__e}function I(e,t){i.__c&&i.__c(t,e),e.some((function(t){try{e=t.__h,t.__h=[],e.some((function(e){e.call(t)}))}catch(e){i.__e(e,t.__v)}}))}function N(e,t,n,r,o,i,a,s){var l,u,c,d,h,g=n.props,v=t.props;if(o="svg"===t.type||o,null!=i)for(l=0;l<i.length;l++)if(null!=(u=i[l])&&((null===t.type?3===u.nodeType:u.localName===t.type)||e==u)){e=u,i[l]=null;break}if(null==e){if(null===t.type)return document.createTextNode(v);e=o?document.createElementNS("http://www.w3.org/2000/svg",t.type):document.createElement(t.type,v.is&&{is:v.is}),i=null,s=!1}if(null===t.type)g!==v&&e.data!=v&&(e.data=v);else{if(null!=i&&(i=f.slice.call(e.childNodes)),c=(g=n.props||p).dangerouslySetInnerHTML,d=v.dangerouslySetInnerHTML,!s){if(g===p)for(g={},h=0;h<e.attributes.length;h++)g[e.attributes[h].name]=e.attributes[h].value;(d||c)&&(d&&c&&d.__html==c.__html||(e.innerHTML=d&&d.__html||""))}(function(e,t,n,r,o){var i;for(i in n)"children"===i||"key"===i||i in t||k(e,i,null,n[i],r);for(i in t)o&&"function"!=typeof t[i]||"children"===i||"key"===i||"value"===i||"checked"===i||n[i]===t[i]||k(e,i,t[i],n[i],r)})(e,v,g,o,s),d?t.__k=[]:(t.__k=t.props.children,w(e,t,n,r,"foreignObject"!==t.type&&o,i,a,p,s)),s||("value"in v&&void 0!==(l=v.value)&&l!==e.value&&k(e,"value",l,g.value,!1),"checked"in v&&void 0!==(l=v.checked)&&l!==e.checked&&k(e,"checked",l,g.checked,!1))}return e}function _(e,t,n){try{"function"==typeof e?e(t):e.current=t}catch(e){i.__e(e,n)}}function H(e,t,n){var r,o,a;if(i.unmount&&i.unmount(e),(r=e.ref)&&(r.current&&r.current!==e.__e||_(r,null,t)),n||"function"==typeof e.type||(n=null!=(o=e.__e)),e.__e=e.__d=void 0,null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){i.__e(e,t)}r.base=r.__P=null}if(r=e.__k)for(a=0;a<r.length;a++)r[a]&&H(r[a],t,n);null!=o&&v(o)}function O(e,t,n){return this.constructor(e,n)}function W(e,t,n){var r,o,a;i.__&&i.__(e,t),o=(r=n===c)?null:n&&n.__k||t.__k,e=m(S,null,[e]),a=[],P(t,(r?t:n||t).__k=e,o||p,p,void 0!==t.ownerSVGElement,n&&!r?[n]:o?null:f.slice.call(t.childNodes),a,n||p,r),I(a,e)}i={__e:function(e,t){for(var n,r;t=t.__;)if((n=t.__c)&&!n.__)try{if(n.constructor&&null!=n.constructor.getDerivedStateFromError&&(r=!0,n.setState(n.constructor.getDerivedStateFromError(e))),null!=n.componentDidCatch&&(r=!0,n.componentDidCatch(e)),r)return D(n.__E=n)}catch(t){e=t}throw e}},E.prototype.setState=function(e,t){var n;n=this.__s!==this.state?this.__s:this.__s=g({},this.state),"function"==typeof e&&(e=e(n,this.props)),e&&g(n,e),null!=e&&this.__v&&(t&&this.__h.push(t),D(this))},E.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),D(this))},E.prototype.render=S,a=[],s=0,l="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,c=p,d=0,window.FullCalendarVDom={Component:E,createElement:m,render:W,createRef:function(){return{}},Fragment:S,createContext:function(e){var t=function(e){var t={},n={__c:"__cC"+d++,__:e,Consumer:function(e,t){return e.children(t)},Provider:function(e){var r,o=this;return this.getChildContext||(r=[],this.getChildContext=function(){return t[n.__c]=o,t},this.shouldComponentUpdate=function(e){o.props.value!==e.value&&r.some((function(t){t.context=e.value,D(t)}))},this.sub=function(e){r.push(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){r.splice(r.indexOf(e),1),t&&t.call(e)}}),e.children}};return n.Consumer.contextType=n,n.Provider.__=n,n}(e),n=t.Provider;return t.Provider=function(){var e=this,t=!this.getChildContext,r=n.apply(this,arguments);if(t){var o=[];this.shouldComponentUpdate=function(t){e.props.value!==t.value&&o.some((function(e){e.context=t.value,e.forceUpdate()}))},this.sub=function(e){o.push(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){o.splice(o.indexOf(e),1),t&&t.call(e)}}}return r},t},flushToDom:function(){var e=i.debounceRendering,t=[];i.debounceRendering=function(e){t.push(e)},W(m(A,{}),document.createElement("div"));for(;t.length;)t.shift()();i.debounceRendering=e}};var A=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){return m("div",{})},t.prototype.componentDidMount=function(){this.setState({})},t}(E);var L=function(){function e(e,t){this.context=e,this.internalEventSource=t}return e.prototype.remove=function(){this.context.dispatch({type:"REMOVE_EVENT_SOURCE",sourceId:this.internalEventSource.sourceId})},e.prototype.refetch=function(){this.context.dispatch({type:"FETCH_EVENT_SOURCES",sourceIds:[this.internalEventSource.sourceId]})},Object.defineProperty(e.prototype,"id",{get:function(){return this.internalEventSource.publicId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"url",{get:function(){return this.internalEventSource.meta.url},enumerable:!1,configurable:!0}),e}();function U(e,t){for(var n=0,r=0;r<e.length;)e[r]===t?(e.splice(r,1),n++):r++;return n}function B(e,t,n){if(e===t)return!0;var r,o=e.length;if(o!==t.length)return!1;for(r=0;r<o;r++)if(!(n?n(e[r],t[r]):e[r]===t[r]))return!1;return!0}function z(e){e=e.trim();var t=document.createElement("div");return t.innerHTML=e,t.firstChild}function V(e){e.parentNode&&e.parentNode.removeChild(e)}function F(e,t){e.innerHTML=t}function j(e,t){var n=Array.prototype.slice.call(e.childNodes),r=Array.prototype.slice.call(t);if(!B(n,r)){for(var o=0,i=r;o<i.length;o++){var a=i[o];e.appendChild(a)}n.forEach(V)}}var G=Element.prototype.matches||Element.prototype.matchesSelector||Element.prototype.msMatchesSelector,q=Element.prototype.closest||function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(Z(t,e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null};function Y(e,t){return q.call(e,t)}function Z(e,t){return G.call(e,t)}function X(e,t){for(var n=e instanceof HTMLElement?[e]:e,r=[],o=0;o<n.length;o++)for(var i=n[o].querySelectorAll(t),a=0;a<i.length;a++)r.push(i[a]);return r}function K(e,t){for(var n=e instanceof HTMLElement?[e]:e,r=[],o=0;o<n.length;o++)for(var i=n[o].children,a=0;a<i.length;a++){var s=i[a];t&&!Z(s,t)||r.push(s)}return r}var J=/(top|left|right|bottom|width|height)$/i;function $(e,t){for(var n in t)Q(e,n,t[n])}function Q(e,t,n){null==n?e.style[t]="":"number"==typeof n&&J.test(t)?e.style[t]=n+"px":e.style[t]=n}function ee(e){e.preventDefault()}function te(e,t){return function(n){var r=Y(n.target,e);r&&t.call(r,n,r)}}function ne(e,t,n,r){var o=te(n,r);return e.addEventListener(t,o),function(){e.removeEventListener(t,o)}}var re=["webkitTransitionEnd","otransitionend","oTransitionEnd","msTransitionEnd","transitionend"];function oe(e,t){var n=function(r){t(r),re.forEach((function(t){e.removeEventListener(t,n)}))};re.forEach((function(t){e.addEventListener(t,n)}))}var ie=0;function ae(){return String(ie++)}function se(){document.body.classList.add("fc-not-allowed")}function le(){document.body.classList.remove("fc-not-allowed")}function ue(e){e.classList.add("fc-unselectable"),e.addEventListener("selectstart",ee)}function ce(e){e.classList.remove("fc-unselectable"),e.removeEventListener("selectstart",ee)}function de(e){e.addEventListener("contextmenu",ee)}function pe(e){e.removeEventListener("contextmenu",ee)}function fe(e){var t,n,r=[],o=[];for("string"==typeof e?o=e.split(/\s*,\s*/):"function"==typeof e?o=[e]:Array.isArray(e)&&(o=e),t=0;t<o.length;t++)"string"==typeof(n=o[t])?r.push("-"===n.charAt(0)?{field:n.substring(1),order:-1}:{field:n,order:1}):"function"==typeof n&&r.push({func:n});return r}function he(e,t,n){var r,o;for(r=0;r<n.length;r++)if(o=ge(e,t,n[r]))return o;return 0}function ge(e,t,n){return n.func?n.func(e,t):ve(e[n.field],t[n.field])*(n.order||1)}function ve(e,t){return e||t?null==t?-1:null==e?1:"string"==typeof e||"string"==typeof t?String(e).localeCompare(String(t)):e-t:0}function me(e,t){var n=String(e);return"000".substr(0,t-n.length)+n}function ye(e,t){return e-t}function Se(e){return e%1==0}function Ee(e){var t=e.querySelector(".fc-scrollgrid-shrink-frame"),n=e.querySelector(".fc-scrollgrid-shrink-cushion");if(!t)throw new Error("needs fc-scrollgrid-shrink-frame className");if(!n)throw new Error("needs fc-scrollgrid-shrink-cushion className");return e.getBoundingClientRect().width-t.getBoundingClientRect().width+n.getBoundingClientRect().width}var Ce=["sun","mon","tue","wed","thu","fri","sat"];function be(e,t){var n=Oe(e);return n[2]+=7*t,We(n)}function De(e,t){var n=Oe(e);return n[2]+=t,We(n)}function Re(e,t){var n=Oe(e);return n[6]+=t,We(n)}function we(e,t){return Te(e,t)/7}function Te(e,t){return(t.valueOf()-e.valueOf())/864e5}function xe(e,t){var n=Pe(e),r=Pe(t);return{years:0,months:0,days:Math.round(Te(n,r)),milliseconds:t.valueOf()-r.valueOf()-(e.valueOf()-n.valueOf())}}function ke(e,t){var n=Me(e,t);return null!==n&&n%7==0?n/7:null}function Me(e,t){return Le(e)===Le(t)?Math.round(Te(e,t)):null}function Pe(e){return We([e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()])}function Ie(e,t,n,r){var o=We([t,0,1+Ne(t,n,r)]),i=Pe(e),a=Math.round(Te(o,i));return Math.floor(a/7)+1}function Ne(e,t,n){var r=7+t-n;return-((7+We([e,0,r]).getUTCDay()-t)%7)+r-1}function _e(e){return[e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()]}function He(e){return new Date(e[0],e[1]||0,null==e[2]?1:e[2],e[3]||0,e[4]||0,e[5]||0)}function Oe(e){return[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()]}function We(e){return 1===e.length&&(e=e.concat([0])),new Date(Date.UTC.apply(Date,e))}function Ae(e){return!isNaN(e.valueOf())}function Le(e){return 1e3*e.getUTCHours()*60*60+1e3*e.getUTCMinutes()*60+1e3*e.getUTCSeconds()+e.getUTCMilliseconds()}function Ue(e,t,n,r){return{instanceId:ae(),defId:e,range:t,forcedStartTzo:null==n?null:n,forcedEndTzo:null==r?null:r}}var Be=Object.prototype.hasOwnProperty;function ze(e,t){var n={};if(t)for(var r in t){for(var o=[],i=e.length-1;i>=0;i--){var a=e[i][r];if("object"==typeof a&&a)o.unshift(a);else if(void 0!==a){n[r]=a;break}}o.length&&(n[r]=ze(o))}for(i=e.length-1;i>=0;i--){var s=e[i];for(var l in s)l in n||(n[l]=s[l])}return n}function Ve(e,t){var n={};for(var r in e)t(e[r],r)&&(n[r]=e[r]);return n}function Fe(e,t){var n={};for(var r in e)n[r]=t(e[r],r);return n}function je(e){for(var t={},n=0,r=e;n<r.length;n++){t[r[n]]=!0}return t}function Ge(e){var t=[];for(var n in e)t.push(e[n]);return t}function qe(e,t){if(e===t)return!0;for(var n in e)if(Be.call(e,n)&&!(n in t))return!1;for(var n in t)if(Be.call(t,n)&&e[n]!==t[n])return!1;return!0}function Ye(e,t){var n=[];for(var r in e)Be.call(e,r)&&(r in t||n.push(r));for(var r in t)Be.call(t,r)&&e[r]!==t[r]&&n.push(r);return n}function Ze(e,t,n){if(void 0===n&&(n={}),e===t)return!0;for(var r in t)if(!(r in e)||!Xe(e[r],t[r],n[r]))return!1;for(var r in e)if(!(r in t))return!1;return!0}function Xe(e,t,n){return e===t||!0===n||!!n&&n(e,t)}function Ke(e,t,n,r){void 0===t&&(t=0),void 0===r&&(r=1);var o=[];null==n&&(n=Object.keys(e).length);for(var i=t;i<n;i+=r){var a=e[i];void 0!==a&&o.push(a)}return o}function Je(e,t,n){var r=n.dateEnv,o=n.pluginHooks,i=n.options,a=e.defs,s=e.instances;for(var l in s=Ve(s,(function(e){return!a[e.defId].recurringDef})),a){var u=a[l];if(u.recurringDef){var c=u.recurringDef.duration;c||(c=u.allDay?i.defaultAllDayEventDuration:i.defaultTimedEventDuration);for(var d=0,p=$e(u,c,t,r,o.recurringTypes);d<p.length;d++){var f=p[d],h=Ue(l,{start:f,end:r.add(f,c)});s[h.instanceId]=h}}}return{defs:a,instances:s}}function $e(e,t,n,r,o){var i=o[e.recurringDef.typeId].expand(e.recurringDef.typeData,{start:r.subtract(n.start,t),end:n.end},r);return e.allDay&&(i=i.map(Pe)),i}var Qe=["years","months","days","milliseconds"],et=/^(-?)(?:(\d+)\.)?(\d+):(\d\d)(?::(\d\d)(?:\.(\d\d\d))?)?/;function tt(e,t){var n;return"string"==typeof e?function(e){var t=et.exec(e);if(t){var n=t[1]?-1:1;return{years:0,months:0,days:n*(t[2]?parseInt(t[2],10):0),milliseconds:n*(60*(t[3]?parseInt(t[3],10):0)*60*1e3+60*(t[4]?parseInt(t[4],10):0)*1e3+1e3*(t[5]?parseInt(t[5],10):0)+(t[6]?parseInt(t[6],10):0))}}return null}(e):"object"==typeof e&&e?nt(e):"number"==typeof e?nt(((n={})[t||"milliseconds"]=e,n)):null}function nt(e){var t={years:e.years||e.year||0,months:e.months||e.month||0,days:e.days||e.day||0,milliseconds:60*(e.hours||e.hour||0)*60*1e3+60*(e.minutes||e.minute||0)*1e3+1e3*(e.seconds||e.second||0)+(e.milliseconds||e.millisecond||e.ms||0)},n=e.weeks||e.week;return n&&(t.days+=7*n,t.specifiedWeeks=!0),t}function rt(e){return 0===e.years&&0===e.months&&1===e.days&&0===e.milliseconds}function ot(e,t){return{years:e.years+t.years,months:e.months+t.months,days:e.days+t.days,milliseconds:e.milliseconds+t.milliseconds}}function it(e,t){return{years:e.years*t,months:e.months*t,days:e.days*t,milliseconds:e.milliseconds*t}}function at(e){return ut(e)/864e5}function st(e){return ut(e)/6e4}function lt(e){return ut(e)/1e3}function ut(e){return 31536e6*e.years+2592e6*e.months+864e5*e.days+e.milliseconds}function ct(e,t){for(var n=null,r=0;r<Qe.length;r++){var o=Qe[r];if(t[o]){var i=e[o]/t[o];if(!Se(i)||null!==n&&n!==i)return null;n=i}else if(e[o])return null}return n}function dt(e){var t=e.milliseconds;if(t){if(t%1e3!=0)return{unit:"millisecond",value:t};if(t%6e4!=0)return{unit:"second",value:t/1e3};if(t%36e5!=0)return{unit:"minute",value:t/6e4};if(t)return{unit:"hour",value:t/36e5}}return e.days?e.specifiedWeeks&&e.days%7==0?{unit:"week",value:e.days/7}:{unit:"day",value:e.days}:e.months?{unit:"month",value:e.months}:e.years?{unit:"year",value:e.years}:{unit:"millisecond",value:0}}function pt(e){return e.toISOString().replace(/T.*$/,"")}function ft(e){return me(e.getUTCHours(),2)+":"+me(e.getUTCMinutes(),2)+":"+me(e.getUTCSeconds(),2)}function ht(e,t){void 0===t&&(t=!1);var n=e<0?"-":"+",r=Math.abs(e),o=Math.floor(r/60),i=Math.round(r%60);return t?n+me(o,2)+":"+me(i,2):"GMT"+n+o+(i?":"+me(i,2):"")}function gt(e,t,n){var r,o;return function(){for(var i=[],a=0;a<arguments.length;a++)i[a]=arguments[a];if(r){if(!B(r,i)){n&&n(o);var s=e.apply(this,i);t&&t(s,o)||(o=s)}}else o=e.apply(this,i);return r=i,o}}function vt(e,t,n){var r,o;return function(i){if(r){if(!qe(r,i)){n&&n(o);var a=e.call(this,i);t&&t(a,o)||(o=a)}}else o=e.call(this,i);return r=i,o}}function mt(e,t,n){var r=[],o=[];return function(i){for(var a=r.length,s=i.length,l=0;l<a;l++)if(i[l]){if(!B(r[l],i[l])){n&&n(o[l]);var u=e.apply(this,i[l]);t&&t(u,o[l])||(o[l]=u)}}else n&&n(o[l]);for(;l<s;l++)o[l]=e.apply(this,i[l]);return r=i,o.splice(s),o}}function yt(e,t,n){var r={},o={};return function(i){var a={};for(var s in i)if(o[s])if(B(r[s],i[s]))a[s]=o[s];else{n&&n(o[s]);var l=e.apply(this,i[s]);a[s]=t&&t(l,o[s])?o[s]:l}else a[s]=e.apply(this,i[s]);return r=i,o=a,a}}var St={week:3,separator:0,omitZeroMinute:0,meridiem:0,omitCommas:0},Et={timeZoneName:7,era:6,year:5,month:4,day:2,weekday:2,hour:1,minute:1,second:1},Ct=/\s*([ap])\.?m\.?/i,bt=/,/g,Dt=/\s+/g,Rt=/\u200e/g,wt=/UTC|GMT/,Tt=function(){function e(e){var t={},n={},r=0;for(var o in e)o in St?(n[o]=e[o],r=Math.max(St[o],r)):(t[o]=e[o],o in Et&&(r=Math.max(Et[o],r)));this.standardDateProps=t,this.extendedSettings=n,this.severity=r,this.buildFormattingFunc=gt(xt)}return e.prototype.format=function(e,t){return this.buildFormattingFunc(this.standardDateProps,this.extendedSettings,t)(e)},e.prototype.formatRange=function(e,t,n,r){var o=this.standardDateProps,i=this.extendedSettings,a=function(e,t,n){if(n.getMarkerYear(e)!==n.getMarkerYear(t))return 5;if(n.getMarkerMonth(e)!==n.getMarkerMonth(t))return 4;if(n.getMarkerDay(e)!==n.getMarkerDay(t))return 2;if(Le(e)!==Le(t))return 1;return 0}(e.marker,t.marker,n.calendarSystem);if(!a)return this.format(e,n);var s=a;!(s>1)||"numeric"!==o.year&&"2-digit"!==o.year||"numeric"!==o.month&&"2-digit"!==o.month||"numeric"!==o.day&&"2-digit"!==o.day||(s=1);var l=this.format(e,n),u=this.format(t,n);if(l===u)return l;var c=xt(function(e,t){var n={};for(var r in e)(!(r in Et)||Et[r]<=t)&&(n[r]=e[r]);return n}(o,s),i,n),d=c(e),p=c(t),f=function(e,t,n,r){var o=0;for(;o<e.length;){var i=e.indexOf(t,o);if(-1===i)break;var a=e.substr(0,i);o=i+t.length;for(var s=e.substr(o),l=0;l<n.length;){var u=n.indexOf(r,l);if(-1===u)break;var c=n.substr(0,u);l=u+r.length;var d=n.substr(l);if(a===c&&s===d)return{before:a,after:s}}}return null}(l,d,u,p),h=i.separator||r||n.defaultSeparator||"";return f?f.before+d+h+p+f.after:l+h+u},e.prototype.getLargestUnit=function(){switch(this.severity){case 7:case 6:case 5:return"year";case 4:return"month";case 3:return"week";case 2:return"day";default:return"time"}},e}();function xt(e,t,n){var o=Object.keys(e).length;return 1===o&&"short"===e.timeZoneName?function(e){return ht(e.timeZoneOffset)}:0===o&&t.week?function(e){return function(e,t,n,r){var o=[];"narrow"===r?o.push(t):"short"===r&&o.push(t," ");o.push(n.simpleNumberFormat.format(e)),"rtl"===n.options.direction&&o.reverse();return o.join("")}(n.computeWeekNumber(e.marker),n.weekText,n.locale,t.week)}:function(e,t,n){e=r({},e),t=r({},t),function(e,t){e.timeZoneName&&(e.hour||(e.hour="2-digit"),e.minute||(e.minute="2-digit"));"long"===e.timeZoneName&&(e.timeZoneName="short");t.omitZeroMinute&&(e.second||e.millisecond)&&delete t.omitZeroMinute}(e,t),e.timeZone="UTC";var o,i=new Intl.DateTimeFormat(n.locale.codes,e);if(t.omitZeroMinute){var a=r({},e);delete a.minute,o=new Intl.DateTimeFormat(n.locale.codes,a)}return function(r){var a=r.marker;return function(e,t,n,r,o){e=e.replace(Rt,""),"short"===n.timeZoneName&&(e=function(e,t){var n=!1;e=e.replace(wt,(function(){return n=!0,t})),n||(e+=" "+t);return e}(e,"UTC"===o.timeZone||null==t.timeZoneOffset?"UTC":ht(t.timeZoneOffset)));r.omitCommas&&(e=e.replace(bt,"").trim());r.omitZeroMinute&&(e=e.replace(":00",""));!1===r.meridiem?e=e.replace(Ct,"").trim():"narrow"===r.meridiem?e=e.replace(Ct,(function(e,t){return t.toLocaleLowerCase()})):"short"===r.meridiem?e=e.replace(Ct,(function(e,t){return t.toLocaleLowerCase()+"m"})):"lowercase"===r.meridiem&&(e=e.replace(Ct,(function(e){return e.toLocaleLowerCase()})));return e=(e=e.replace(Dt," ")).trim()}((o&&!a.getUTCMinutes()?o:i).format(a),r,e,t,n)}}(e,t,n)}function kt(e,t){var n=t.markerToArray(e.marker);return{marker:e.marker,timeZoneOffset:e.timeZoneOffset,array:n,year:n[0],month:n[1],day:n[2],hour:n[3],minute:n[4],second:n[5],millisecond:n[6]}}function Mt(e,t,n,r){var o=kt(e,n.calendarSystem);return{date:o,start:o,end:t?kt(t,n.calendarSystem):null,timeZone:n.timeZone,localeCodes:n.locale.codes,defaultSeparator:r||n.defaultSeparator}}var Pt=function(){function e(e){this.cmdStr=e}return e.prototype.format=function(e,t,n){return t.cmdFormatter(this.cmdStr,Mt(e,null,t,n))},e.prototype.formatRange=function(e,t,n,r){return n.cmdFormatter(this.cmdStr,Mt(e,t,n,r))},e}(),It=function(){function e(e){this.func=e}return e.prototype.format=function(e,t,n){return this.func(Mt(e,null,t,n))},e.prototype.formatRange=function(e,t,n,r){return this.func(Mt(e,t,n,r))},e}();function Nt(e){return"object"==typeof e&&e?new Tt(e):"string"==typeof e?new Pt(e):"function"==typeof e?new It(e):void 0}var _t={navLinkDayClick:Vt,navLinkWeekClick:Vt,duration:tt,bootstrapFontAwesome:Vt,buttonIcons:Vt,customButtons:Vt,defaultAllDayEventDuration:tt,defaultTimedEventDuration:tt,nextDayThreshold:tt,scrollTime:tt,slotMinTime:tt,slotMaxTime:tt,dayPopoverFormat:Nt,slotDuration:tt,snapDuration:tt,headerToolbar:Vt,footerToolbar:Vt,defaultRangeSeparator:String,titleRangeSeparator:String,forceEventDuration:Boolean,dayHeaders:Boolean,dayHeaderFormat:Nt,dayHeaderClassNames:Vt,dayHeaderContent:Vt,dayHeaderDidMount:Vt,dayHeaderWillUnmount:Vt,dayCellClassNames:Vt,dayCellContent:Vt,dayCellDidMount:Vt,dayCellWillUnmount:Vt,initialView:String,aspectRatio:Number,weekends:Boolean,weekNumberCalculation:Vt,weekNumbers:Boolean,weekNumberClassNames:Vt,weekNumberContent:Vt,weekNumberDidMount:Vt,weekNumberWillUnmount:Vt,editable:Boolean,viewClassNames:Vt,viewDidMount:Vt,viewWillUnmount:Vt,nowIndicator:Boolean,nowIndicatorClassNames:Vt,nowIndicatorContent:Vt,nowIndicatorDidMount:Vt,nowIndicatorWillUnmount:Vt,showNonCurrentDates:Boolean,lazyFetching:Boolean,startParam:String,endParam:String,timeZoneParam:String,timeZone:String,locales:Vt,locale:Vt,themeSystem:String,dragRevertDuration:Number,dragScroll:Boolean,allDayMaintainDuration:Boolean,unselectAuto:Boolean,dropAccept:Vt,eventOrder:fe,handleWindowResize:Boolean,windowResizeDelay:Number,longPressDelay:Number,eventDragMinDistance:Number,expandRows:Boolean,height:Vt,contentHeight:Vt,direction:String,weekNumberFormat:Nt,eventResizableFromStart:Boolean,displayEventTime:Boolean,displayEventEnd:Boolean,weekText:String,progressiveEventRendering:Boolean,businessHours:Vt,initialDate:Vt,now:Vt,eventDataTransform:Vt,stickyHeaderDates:Vt,stickyFooterScrollbar:Vt,viewHeight:Vt,defaultAllDay:Boolean,eventSourceFailure:Vt,eventSourceSuccess:Vt,eventDisplay:String,eventStartEditable:Boolean,eventDurationEditable:Boolean,eventOverlap:Vt,eventConstraint:Vt,eventAllow:Vt,eventBackgroundColor:String,eventBorderColor:String,eventTextColor:String,eventColor:String,eventClassNames:Vt,eventContent:Vt,eventDidMount:Vt,eventWillUnmount:Vt,selectConstraint:Vt,selectOverlap:Vt,selectAllow:Vt,droppable:Boolean,unselectCancel:String,slotLabelFormat:Vt,slotLaneClassNames:Vt,slotLaneContent:Vt,slotLaneDidMount:Vt,slotLaneWillUnmount:Vt,slotLabelClassNames:Vt,slotLabelContent:Vt,slotLabelDidMount:Vt,slotLabelWillUnmount:Vt,dayMaxEvents:Vt,dayMaxEventRows:Vt,dayMinWidth:Number,slotLabelInterval:tt,allDayText:String,allDayClassNames:Vt,allDayContent:Vt,allDayDidMount:Vt,allDayWillUnmount:Vt,slotMinWidth:Number,navLinks:Boolean,eventTimeFormat:Nt,rerenderDelay:Number,moreLinkText:Vt,selectMinDistance:Number,selectable:Boolean,selectLongPressDelay:Number,eventLongPressDelay:Number,selectMirror:Boolean,eventMinHeight:Number,slotEventOverlap:Boolean,plugins:Vt,firstDay:Number,dayCount:Number,dateAlignment:String,dateIncrement:tt,hiddenDays:Vt,monthMode:Boolean,fixedWeekCount:Boolean,validRange:Vt,visibleRange:Vt,titleFormat:Vt,noEventsText:String},Ht={eventDisplay:"auto",defaultRangeSeparator:" - ",titleRangeSeparator:" – ",defaultTimedEventDuration:"01:00:00",defaultAllDayEventDuration:{day:1},forceEventDuration:!1,nextDayThreshold:"00:00:00",dayHeaders:!0,initialView:"",aspectRatio:1.35,headerToolbar:{start:"title",center:"",end:"today prev,next"},weekends:!0,weekNumbers:!1,weekNumberCalculation:"local",editable:!1,nowIndicator:!1,scrollTime:"06:00:00",slotMinTime:"00:00:00",slotMaxTime:"24:00:00",showNonCurrentDates:!0,lazyFetching:!0,startParam:"start",endParam:"end",timeZoneParam:"timeZone",timeZone:"local",locales:[],locale:"",themeSystem:"standard",dragRevertDuration:500,dragScroll:!0,allDayMaintainDuration:!1,unselectAuto:!0,dropAccept:"*",eventOrder:"start,-duration,allDay,title",dayPopoverFormat:{month:"long",day:"numeric",year:"numeric"},handleWindowResize:!0,windowResizeDelay:100,longPressDelay:1e3,eventDragMinDistance:5,expandRows:!1,navLinks:!1,selectable:!1},Ot={datesSet:Vt,eventsSet:Vt,eventAdd:Vt,eventChange:Vt,eventRemove:Vt,windowResize:Vt,eventClick:Vt,eventMouseEnter:Vt,eventMouseLeave:Vt,select:Vt,unselect:Vt,loading:Vt,_unmount:Vt,_beforeprint:Vt,_afterprint:Vt,_noEventDrop:Vt,_noEventResize:Vt,_resize:Vt,_scrollRequest:Vt},Wt={buttonText:Vt,views:Vt,plugins:Vt,initialEvents:Vt,events:Vt,eventSources:Vt},At={headerToolbar:Lt,footerToolbar:Lt,buttonText:Lt,buttonIcons:Lt};function Lt(e,t){return"object"==typeof e&&"object"==typeof t&&e&&t?qe(e,t):e===t}var Ut={type:String,component:Vt,buttonText:String,buttonTextKey:String,dateProfileGeneratorClass:Vt,usesMinMaxTime:Boolean,classNames:Vt,content:Vt,didMount:Vt,willUnmount:Vt};function Bt(e){return ze(e,At)}function zt(e,t){var n={},r={};for(var o in t)o in e&&(n[o]=t[o](e[o]));for(var o in e)o in t||(r[o]=e[o]);return{refined:n,extra:r}}function Vt(e){return e}function Ft(e,t,n,r){for(var o={defs:{},instances:{}},i=sn(n),a=0,s=e;a<s.length;a++){var l=on(s[a],t,n,r,i);l&&jt(l,o)}return o}function jt(e,t){return void 0===t&&(t={defs:{},instances:{}}),t.defs[e.def.defId]=e.def,e.instance&&(t.instances[e.instance.instanceId]=e.instance),t}function Gt(e,t){var n=e.instances[t];if(n){var r=e.defs[n.defId],o=Zt(e,(function(e){return t=r,n=e,Boolean(t.groupId&&t.groupId===n.groupId);var t,n}));return o.defs[r.defId]=r,o.instances[n.instanceId]=n,o}return{defs:{},instances:{}}}function qt(){return{defs:{},instances:{}}}function Yt(e,t){return{defs:r(r({},e.defs),t.defs),instances:r(r({},e.instances),t.instances)}}function Zt(e,t){var n=Ve(e.defs,t),r=Ve(e.instances,(function(e){return n[e.defId]}));return{defs:n,instances:r}}function Xt(e){return Array.isArray(e)?e:"string"==typeof e?e.split(/\s+/):[]}var Kt={display:String,editable:Boolean,startEditable:Boolean,durationEditable:Boolean,constraint:Vt,overlap:Vt,allow:Vt,className:Xt,classNames:Xt,color:String,backgroundColor:String,borderColor:String,textColor:String};function Jt(e,t){var n=function(e,t){return Array.isArray(e)?Ft(e,null,t,!0):"object"==typeof e&&e?Ft([e],null,t,!0):null!=e?String(e):null}(e.constraint,t);return{display:e.display||null,startEditable:null!=e.startEditable?e.startEditable:e.editable,durationEditable:null!=e.durationEditable?e.durationEditable:e.editable,constraints:null!=n?[n]:[],overlap:null!=e.overlap?e.overlap:null,allows:null!=e.allow?[e.allow]:[],backgroundColor:e.backgroundColor||e.color||"",borderColor:e.borderColor||e.color||"",textColor:e.textColor||"",classNames:(e.className||[]).concat(e.classNames||[])}}function $t(e){return e.reduce(Qt,en)}function Qt(e,t){return{display:null!=t.display?t.display:e.display,startEditable:null!=t.startEditable?t.startEditable:e.startEditable,durationEditable:null!=t.durationEditable?t.durationEditable:e.durationEditable,constraints:e.constraints.concat(t.constraints),overlap:"boolean"==typeof t.overlap?t.overlap:e.overlap,allows:e.allows.concat(t.allows),backgroundColor:t.backgroundColor||e.backgroundColor,borderColor:t.borderColor||e.borderColor,textColor:t.textColor||e.textColor,classNames:e.classNames.concat(t.classNames)}}var en={display:null,startEditable:null,durationEditable:null,constraints:[],overlap:null,allows:[],backgroundColor:"",borderColor:"",textColor:"",classNames:[]},tn={id:String,groupId:String,title:String,url:String},nn={start:Vt,end:Vt,date:Vt,allDay:Boolean},rn=r(r(r({},tn),nn),{extendedProps:Vt});function on(e,t,n,r,o){void 0===o&&(o=sn(n));var i=an(e,n,o),a=i.refined,s=i.extra,l=function(e,t){var n=null;e&&(n=e.defaultAllDay);null==n&&(n=t.options.defaultAllDay);return n}(t,n),u=function(e,t,n,r){for(var o=0;o<r.length;o++){var i=r[o].parse(e,n);if(i){var a=e.allDay;return null==a&&null==(a=t)&&null==(a=i.allDayGuess)&&(a=!1),{allDay:a,duration:i.duration,typeData:i.typeData,typeId:o}}}return null}(a,l,n.dateEnv,n.pluginHooks.recurringTypes);if(u)return(c=ln(a,s,t?t.sourceId:"",u.allDay,Boolean(u.duration),n)).recurringDef={typeId:u.typeId,typeData:u.typeData,duration:u.duration},{def:c,instance:null};var c,d=function(e,t,n,r){var o,i,a=e.allDay,s=null,l=!1,u=null,c=null!=e.start?e.start:e.date;if(o=n.dateEnv.createMarkerMeta(c))s=o.marker;else if(!r)return null;null!=e.end&&(i=n.dateEnv.createMarkerMeta(e.end));null==a&&(a=null!=t?t:(!o||o.isTimeUnspecified)&&(!i||i.isTimeUnspecified));a&&s&&(s=Pe(s));i&&(u=i.marker,a&&(u=Pe(u)),s&&u<=s&&(u=null));u?l=!0:r||(l=n.options.forceEventDuration||!1,u=n.dateEnv.add(s,a?n.options.defaultAllDayEventDuration:n.options.defaultTimedEventDuration));return{allDay:a,hasEnd:l,range:{start:s,end:u},forcedStartTzo:o?o.forcedTzo:null,forcedEndTzo:i?i.forcedTzo:null}}(a,l,n,r);return d?{def:c=ln(a,s,t?t.sourceId:"",d.allDay,d.hasEnd,n),instance:Ue(c.defId,d.range,d.forcedStartTzo,d.forcedEndTzo)}:null}function an(e,t,n){return void 0===n&&(n=sn(t)),zt(e,n)}function sn(e){return r(r(r({},Kt),rn),e.pluginHooks.eventRefiners)}function ln(e,t,n,o,i,a){for(var s={title:e.title||"",groupId:e.groupId||"",publicId:e.id||"",url:e.url||"",recurringDef:null,defId:ae(),sourceId:n,allDay:o,hasEnd:i,ui:Jt(e,a),extendedProps:r(r({},e.extendedProps||{}),t)},l=0,u=a.pluginHooks.eventDefMemberAdders;l<u.length;l++){var c=u[l];r(s,c(e))}return Object.freeze(s.ui.classNames),Object.freeze(s.extendedProps),s}function un(e){var t=Math.floor(Te(e.start,e.end))||1,n=Pe(e.start);return{start:n,end:De(n,t)}}function cn(e,t){void 0===t&&(t=tt(0));var n=null,r=null;if(e.end){r=Pe(e.end);var o=e.end.valueOf()-r.valueOf();o&&o>=ut(t)&&(r=De(r,1))}return e.start&&(n=Pe(e.start),r&&r<=n&&(r=De(n,1))),{start:n,end:r}}function dn(e){var t=cn(e);return Te(t.start,t.end)>1}function pn(e,t,n,r){return"year"===r?tt(n.diffWholeYears(e,t),"year"):"month"===r?tt(n.diffWholeMonths(e,t),"month"):xe(e,t)}function fn(e,t){var n,r,o=[],i=t.start;for(e.sort(hn),n=0;n<e.length;n++)(r=e[n]).start>i&&o.push({start:i,end:r.start}),r.end>i&&(i=r.end);return i<t.end&&o.push({start:i,end:t.end}),o}function hn(e,t){return e.start.valueOf()-t.start.valueOf()}function gn(e,t){var n=e.start,r=e.end,o=null;return null!==t.start&&(n=null===n?t.start:new Date(Math.max(n.valueOf(),t.start.valueOf()))),null!=t.end&&(r=null===r?t.end:new Date(Math.min(r.valueOf(),t.end.valueOf()))),(null===n||null===r||n<r)&&(o={start:n,end:r}),o}function vn(e,t){return(null===e.start?null:e.start.valueOf())===(null===t.start?null:t.start.valueOf())&&(null===e.end?null:e.end.valueOf())===(null===t.end?null:t.end.valueOf())}function mn(e,t){return(null===e.end||null===t.start||e.end>t.start)&&(null===e.start||null===t.end||e.start<t.end)}function yn(e,t){return(null===e.start||null!==t.start&&t.start>=e.start)&&(null===e.end||null!==t.end&&t.end<=e.end)}function Sn(e,t){return(null===e.start||t>=e.start)&&(null===e.end||t<e.end)}function En(e,t,n,r){var o={},i={},a={},s=[],l=[],u=Rn(e.defs,t);for(var c in e.defs){"inverse-background"===(f=u[(E=e.defs[c]).defId]).display&&(E.groupId?(o[E.groupId]=[],a[E.groupId]||(a[E.groupId]=E)):i[c]=[])}for(var d in e.instances){var p=e.instances[d],f=u[(E=e.defs[p.defId]).defId],h=p.range,g=!E.allDay&&r?cn(h,r):h,v=gn(g,n);v&&("inverse-background"===f.display?E.groupId?o[E.groupId].push(v):i[p.defId].push(v):"none"!==f.display&&("background"===f.display?s:l).push({def:E,ui:f,instance:p,range:v,isStart:g.start&&g.start.valueOf()===v.start.valueOf(),isEnd:g.end&&g.end.valueOf()===v.end.valueOf()}))}for(var m in o)for(var y=0,S=fn(o[m],n);y<S.length;y++){var E,C=S[y];f=u[(E=a[m]).defId];s.push({def:E,ui:f,instance:null,range:C,isStart:!1,isEnd:!1})}for(var c in i)for(var b=0,D=fn(i[c],n);b<D.length;b++){C=D[b];s.push({def:e.defs[c],ui:u[c],instance:null,range:C,isStart:!1,isEnd:!1})}return{bg:s,fg:l}}function Cn(e){return"background"===e.ui.display||"inverse-background"===e.ui.display}function bn(e,t){e.fcSeg=t}function Dn(e){return e.fcSeg||e.parentNode.fcSeg||null}function Rn(e,t){return Fe(e,(function(e){return wn(e,t)}))}function wn(e,t){var n=[];return t[""]&&n.push(t[""]),t[e.defId]&&n.push(t[e.defId]),n.push(e.ui),$t(n)}function Tn(e,t){var n=e.map(xn);return n.sort((function(e,n){return he(e,n,t)})),n.map((function(e){return e._seg}))}function xn(e){var t=e.eventRange,n=t.def,o=t.instance?t.instance.range:t.range,i=o.start?o.start.valueOf():0,a=o.end?o.end.valueOf():0;return r(r(r({},n.extendedProps),n),{id:n.publicId,start:i,end:a,duration:a-i,allDay:Number(n.allDay),_seg:e})}function kn(e,t){for(var n=t.pluginHooks.isDraggableTransformers,r=e.eventRange,o=r.def,i=r.ui,a=i.startEditable,s=0,l=n;s<l.length;s++){a=(0,l[s])(a,o,i,t)}return a}function Mn(e,t){return e.isStart&&e.eventRange.ui.durationEditable&&t.options.eventResizableFromStart}function Pn(e,t){return e.isEnd&&e.eventRange.ui.durationEditable}function In(e,t,n,r,o,i,a){var s=n.dateEnv,l=n.options,u=l.displayEventTime,c=l.displayEventEnd,d=e.eventRange.def,p=e.eventRange.instance;if(null==u&&(u=!1!==r),null==c&&(c=!1!==o),u&&!d.allDay&&(e.isStart||e.isEnd)){var f=i||(e.isStart?p.range.start:e.start||e.eventRange.range.start),h=a||(e.isEnd?p.range.end:e.end||e.eventRange.range.end);return c&&d.hasEnd?s.formatRange(f,h,t,{forcedStartTzo:i?null:p.forcedStartTzo,forcedEndTzo:a?null:p.forcedEndTzo}):s.format(f,t,{forcedTzo:i?null:p.forcedStartTzo})}return""}function Nn(e,t,n){var r=e.eventRange.range;return{isPast:r.end<(n||t.start),isFuture:r.start>=(n||t.end),isToday:t&&Sn(t,r.start)}}function _n(e){var t=["fc-event"];return e.isMirror&&t.push("fc-event-mirror"),e.isDraggable&&t.push("fc-event-draggable"),(e.isStartResizable||e.isEndResizable)&&t.push("fc-event-resizable"),e.isDragging&&t.push("fc-event-dragging"),e.isResizing&&t.push("fc-event-resizing"),e.isSelected&&t.push("fc-event-selected"),e.isStart&&t.push("fc-event-start"),e.isEnd&&t.push("fc-event-end"),e.isPast&&t.push("fc-event-past"),e.isToday&&t.push("fc-event-today"),e.isFuture&&t.push("fc-event-future"),t}function Hn(e){return e.instance?e.instance.instanceId:e.def.defId+":"+e.range.start.toISOString()}var On={start:Vt,end:Vt,allDay:Boolean};function Wn(e,t,n){var o=function(e,t){var n=zt(e,On),o=n.refined,i=n.extra,a=o.start?t.createMarkerMeta(o.start):null,s=o.end?t.createMarkerMeta(o.end):null,l=o.allDay;null==l&&(l=a&&a.isTimeUnspecified&&(!s||s.isTimeUnspecified));return r({range:{start:a?a.marker:null,end:s?s.marker:null},allDay:l},i)}(e,t),i=o.range;if(!i.start)return null;if(!i.end){if(null==n)return null;i.end=t.add(i.start,n)}return o}function An(e,t){return vn(e.range,t.range)&&e.allDay===t.allDay&&function(e,t){for(var n in t)if("range"!==n&&"allDay"!==n&&e[n]!==t[n])return!1;for(var n in e)if(!(n in t))return!1;return!0}(e,t)}function Ln(e,t,n){return r(r({},Un(e,t,n)),{timeZone:t.timeZone})}function Un(e,t,n){return{start:t.toDate(e.start),end:t.toDate(e.end),startStr:t.formatIso(e.start,{omitTime:n}),endStr:t.formatIso(e.end,{omitTime:n})}}function Bn(e,t,n){var r=an({editable:!1},n),o=ln(r.refined,r.extra,"",e.allDay,!0,n);return{def:o,ui:wn(o,t),instance:Ue(o.defId,e.range),range:e.range,isStart:!0,isEnd:!0}}function zn(e,t,n){n.emitter.trigger("select",r(r({},Vn(e,n)),{jsEvent:t?t.origEvent:null,view:n.viewApi||n.calendarApi.view}))}function Vn(e,t){for(var n,o,i={},a=0,s=t.pluginHooks.dateSpanTransforms;a<s.length;a++){var l=s[a];r(i,l(e,t))}return r(i,(n=e,o=t.dateEnv,r(r({},Un(n.range,o,n.allDay)),{allDay:n.allDay}))),i}function Fn(e,t,n){var r=n.dateEnv,o=n.options,i=t;return e?(i=Pe(i),i=r.add(i,o.defaultAllDayEventDuration)):i=r.add(i,o.defaultTimedEventDuration),i}function jn(e,t,n,r){var o=Rn(e.defs,t),i={defs:{},instances:{}};for(var a in e.defs){var s=e.defs[a];i.defs[a]=Gn(s,o[a],n,r)}for(var l in e.instances){var u=e.instances[l];s=i.defs[u.defId];i.instances[l]=qn(u,s,o[u.defId],n,r)}return i}function Gn(e,t,n,o){var i=n.standardProps||{};null==i.hasEnd&&t.durationEditable&&(n.startDelta||n.endDelta)&&(i.hasEnd=!0);var a=r(r(r({},e),i),{ui:r(r({},e.ui),i.ui)});n.extendedProps&&(a.extendedProps=r(r({},a.extendedProps),n.extendedProps));for(var s=0,l=o.pluginHooks.eventDefMutationAppliers;s<l.length;s++){(0,l[s])(a,n,o)}return!a.hasEnd&&o.options.forceEventDuration&&(a.hasEnd=!0),a}function qn(e,t,n,o,i){var a=i.dateEnv,s=o.standardProps&&!0===o.standardProps.allDay,l=o.standardProps&&!1===o.standardProps.hasEnd,u=r({},e);return s&&(u.range=un(u.range)),o.datesDelta&&n.startEditable&&(u.range={start:a.add(u.range.start,o.datesDelta),end:a.add(u.range.end,o.datesDelta)}),o.startDelta&&n.durationEditable&&(u.range={start:a.add(u.range.start,o.startDelta),end:u.range.end}),o.endDelta&&n.durationEditable&&(u.range={start:u.range.start,end:a.add(u.range.end,o.endDelta)}),l&&(u.range={start:u.range.start,end:Fn(t.allDay,u.range.start,i)}),t.allDay&&(u.range={start:Pe(u.range.start),end:Pe(u.range.end)}),u.range.end<u.range.start&&(u.range.end=Fn(t.allDay,u.range.start,i)),u}var Yn=function(){function e(e,t,n){this.type=e,this.getCurrentData=t,this.dateEnv=n}return Object.defineProperty(e.prototype,"calendar",{get:function(){return this.getCurrentData().calendarApi},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"title",{get:function(){return this.getCurrentData().viewTitle},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"activeStart",{get:function(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"activeEnd",{get:function(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentStart",{get:function(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentEnd",{get:function(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end)},enumerable:!1,configurable:!0}),e.prototype.getOption=function(e){return this.getCurrentData().options[e]},e}(),Zn={id:String,defaultAllDay:Boolean,url:String,events:Vt,eventDataTransform:Vt,success:Vt,failure:Vt};function Xn(e,t,n){var r;if(void 0===n&&(n=Kn(t)),"string"==typeof e?r={url:e}:"function"==typeof e||Array.isArray(e)?r={events:e}:"object"==typeof e&&e&&(r=e),r){var o=zt(r,n),i=o.refined,a=o.extra,s=function(e,t){for(var n=t.pluginHooks.eventSourceDefs,r=n.length-1;r>=0;r--){var o=n[r].parseMeta(e);if(o)return{sourceDefId:r,meta:o}}return null}(i,t);if(s)return{_raw:e,isFetching:!1,latestFetchId:"",fetchRange:null,defaultAllDay:i.defaultAllDay,eventDataTransform:i.eventDataTransform,success:i.success,failure:i.failure,publicId:i.id||"",sourceId:ae(),sourceDefId:s.sourceDefId,meta:s.meta,ui:Jt(i,t),extendedProps:a}}return null}function Kn(e){return r(r(r({},Kt),Zn),e.pluginHooks.eventSourceRefiners)}function Jn(e,t){return"function"==typeof e&&(e=e()),null==e?t.createNowMarker():t.createMarker(e)}var $n=function(){function e(){}return e.prototype.getCurrentData=function(){return this.currentDataManager.getCurrentData()},e.prototype.dispatch=function(e){return this.currentDataManager.dispatch(e)},Object.defineProperty(e.prototype,"view",{get:function(){return this.getCurrentData().viewApi},enumerable:!1,configurable:!0}),e.prototype.batchRendering=function(e){e()},e.prototype.updateSize=function(){this.trigger("_resize",!0)},e.prototype.setOption=function(e,t){this.dispatch({type:"SET_OPTION",optionName:e,rawOptionValue:t})},e.prototype.getOption=function(e){return this.currentDataManager.currentCalendarOptionsInput[e]},e.prototype.getAvailableLocaleCodes=function(){return Object.keys(this.getCurrentData().availableRawLocales)},e.prototype.on=function(e,t){var n=this.currentDataManager;n.currentCalendarOptionsRefiners[e]?n.emitter.on(e,t):console.warn("Unknown listener name '"+e+"'")},e.prototype.off=function(e,t){this.currentDataManager.emitter.off(e,t)},e.prototype.trigger=function(e){for(var t,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];(t=this.currentDataManager.emitter).trigger.apply(t,o([e],n))},e.prototype.changeView=function(e,t){var n=this;this.batchRendering((function(){if(n.unselect(),t)if(t.start&&t.end)n.dispatch({type:"CHANGE_VIEW_TYPE",viewType:e}),n.dispatch({type:"SET_OPTION",optionName:"visibleRange",rawOptionValue:t});else{var r=n.getCurrentData().dateEnv;n.dispatch({type:"CHANGE_VIEW_TYPE",viewType:e,dateMarker:r.createMarker(t)})}else n.dispatch({type:"CHANGE_VIEW_TYPE",viewType:e})}))},e.prototype.zoomTo=function(e,t){var n;t=t||"day",n=this.getCurrentData().viewSpecs[t]||this.getUnitViewSpec(t),this.unselect(),n?this.dispatch({type:"CHANGE_VIEW_TYPE",viewType:n.type,dateMarker:e}):this.dispatch({type:"CHANGE_DATE",dateMarker:e})},e.prototype.getUnitViewSpec=function(e){var t,n,r=this.getCurrentData(),o=r.viewSpecs,i=r.toolbarConfig,a=[].concat(i.viewsWithButtons);for(var s in o)a.push(s);for(t=0;t<a.length;t++)if((n=o[a[t]])&&n.singleUnit===e)return n},e.prototype.prev=function(){this.unselect(),this.dispatch({type:"PREV"})},e.prototype.next=function(){this.unselect(),this.dispatch({type:"NEXT"})},e.prototype.prevYear=function(){var e=this.getCurrentData();this.unselect(),this.dispatch({type:"CHANGE_DATE",dateMarker:e.dateEnv.addYears(e.currentDate,-1)})},e.prototype.nextYear=function(){var e=this.getCurrentData();this.unselect(),this.dispatch({type:"CHANGE_DATE",dateMarker:e.dateEnv.addYears(e.currentDate,1)})},e.prototype.today=function(){var e=this.getCurrentData();this.unselect(),this.dispatch({type:"CHANGE_DATE",dateMarker:Jn(e.calendarOptions.now,e.dateEnv)})},e.prototype.gotoDate=function(e){var t=this.getCurrentData();this.unselect(),this.dispatch({type:"CHANGE_DATE",dateMarker:t.dateEnv.createMarker(e)})},e.prototype.incrementDate=function(e){var t=this.getCurrentData(),n=tt(e);n&&(this.unselect(),this.dispatch({type:"CHANGE_DATE",dateMarker:t.dateEnv.add(t.currentDate,n)}))},e.prototype.getDate=function(){var e=this.getCurrentData();return e.dateEnv.toDate(e.currentDate)},e.prototype.formatDate=function(e,t){var n=this.getCurrentData().dateEnv;return n.format(n.createMarker(e),Nt(t))},e.prototype.formatRange=function(e,t,n){var r=this.getCurrentData().dateEnv;return r.formatRange(r.createMarker(e),r.createMarker(t),Nt(n),n)},e.prototype.formatIso=function(e,t){var n=this.getCurrentData().dateEnv;return n.formatIso(n.createMarker(e),{omitTime:t})},e.prototype.select=function(e,t){var n;n=null==t?null!=e.start?e:{start:e,end:null}:{start:e,end:t};var r=this.getCurrentData(),o=Wn(n,r.dateEnv,tt({days:1}));o&&(this.dispatch({type:"SELECT_DATES",selection:o}),zn(o,null,r))},e.prototype.unselect=function(e){var t=this.getCurrentData();t.dateSelection&&(this.dispatch({type:"UNSELECT_DATES"}),function(e,t){t.emitter.trigger("unselect",{jsEvent:e?e.origEvent:null,view:t.viewApi||t.calendarApi.view})}(e,t))},e.prototype.addEvent=function(e,t){if(e instanceof Qn){var n=e._def,r=e._instance;return this.getCurrentData().eventStore.defs[n.defId]||(this.dispatch({type:"ADD_EVENTS",eventStore:jt({def:n,instance:r})}),this.triggerEventAdd(e)),e}var o,i=this.getCurrentData();if(t instanceof L)o=t.internalEventSource;else if("boolean"==typeof t)t&&(o=Ge(i.eventSources)[0]);else if(null!=t){var a=this.getEventSourceById(t);if(!a)return console.warn('Could not find an event source with ID "'+t+'"'),null;o=a.internalEventSource}var s=on(e,o,i,!1);if(s){var l=new Qn(i,s.def,s.def.recurringDef?null:s.instance);return this.dispatch({type:"ADD_EVENTS",eventStore:jt(s)}),this.triggerEventAdd(l),l}return null},e.prototype.triggerEventAdd=function(e){var t=this;this.getCurrentData().emitter.trigger("eventAdd",{event:e,relatedEvents:[],revert:function(){t.dispatch({type:"REMOVE_EVENTS",eventStore:er(e)})}})},e.prototype.getEventById=function(e){var t=this.getCurrentData(),n=t.eventStore,r=n.defs,o=n.instances;for(var i in e=String(e),r){var a=r[i];if(a.publicId===e){if(a.recurringDef)return new Qn(t,a,null);for(var s in o){var l=o[s];if(l.defId===a.defId)return new Qn(t,a,l)}}}return null},e.prototype.getEvents=function(){var e=this.getCurrentData();return tr(e.eventStore,e)},e.prototype.removeAllEvents=function(){this.dispatch({type:"REMOVE_ALL_EVENTS"})},e.prototype.getEventSources=function(){var e=this.getCurrentData(),t=e.eventSources,n=[];for(var r in t)n.push(new L(e,t[r]));return n},e.prototype.getEventSourceById=function(e){var t=this.getCurrentData(),n=t.eventSources;for(var r in e=String(e),n)if(n[r].publicId===e)return new L(t,n[r]);return null},e.prototype.addEventSource=function(e){var t=this.getCurrentData();if(e instanceof L)return t.eventSources[e.internalEventSource.sourceId]||this.dispatch({type:"ADD_EVENT_SOURCES",sources:[e.internalEventSource]}),e;var n=Xn(e,t);return n?(this.dispatch({type:"ADD_EVENT_SOURCES",sources:[n]}),new L(t,n)):null},e.prototype.removeAllEventSources=function(){this.dispatch({type:"REMOVE_ALL_EVENT_SOURCES"})},e.prototype.refetchEvents=function(){this.dispatch({type:"FETCH_EVENT_SOURCES"})},e.prototype.scrollToTime=function(e){var t=tt(e);t&&this.trigger("_scrollRequest",{time:t})},e}(),Qn=function(){function e(e,t,n){this._context=e,this._def=t,this._instance=n||null}return e.prototype.setProp=function(e,t){var n,r;if(e in nn)console.warn("Could not set date-related prop 'name'. Use one of the date-related methods instead.");else if(e in tn)t=tn[e](t),this.mutate({standardProps:(n={},n[e]=t,n)});else if(e in Kt){var o=Kt[e](t);"color"===e?o={backgroundColor:t,borderColor:t}:"editable"===e?o={startEditable:t,durationEditable:t}:((r={})[e]=t,o=r),this.mutate({standardProps:{ui:o}})}else console.warn("Could not set prop '"+e+"'. Use setExtendedProp instead.")},e.prototype.setExtendedProp=function(e,t){var n;this.mutate({extendedProps:(n={},n[e]=t,n)})},e.prototype.setStart=function(e,t){void 0===t&&(t={});var n=this._context.dateEnv,r=n.createMarker(e);if(r&&this._instance){var o=pn(this._instance.range.start,r,n,t.granularity);t.maintainDuration?this.mutate({datesDelta:o}):this.mutate({startDelta:o})}},e.prototype.setEnd=function(e,t){void 0===t&&(t={});var n,r=this._context.dateEnv;if((null==e||(n=r.createMarker(e)))&&this._instance)if(n){var o=pn(this._instance.range.end,n,r,t.granularity);this.mutate({endDelta:o})}else this.mutate({standardProps:{hasEnd:!1}})},e.prototype.setDates=function(e,t,n){void 0===n&&(n={});var r,o,i,a=this._context.dateEnv,s={allDay:n.allDay},l=a.createMarker(e);if(l&&((null==t||(r=a.createMarker(t)))&&this._instance)){var u=this._instance.range;!0===n.allDay&&(u=un(u));var c=pn(u.start,l,a,n.granularity);if(r){var d=pn(u.end,r,a,n.granularity);i=d,(o=c).years===i.years&&o.months===i.months&&o.days===i.days&&o.milliseconds===i.milliseconds?this.mutate({datesDelta:c,standardProps:s}):this.mutate({startDelta:c,endDelta:d,standardProps:s})}else s.hasEnd=!1,this.mutate({datesDelta:c,standardProps:s})}},e.prototype.moveStart=function(e){var t=tt(e);t&&this.mutate({startDelta:t})},e.prototype.moveEnd=function(e){var t=tt(e);t&&this.mutate({endDelta:t})},e.prototype.moveDates=function(e){var t=tt(e);t&&this.mutate({datesDelta:t})},e.prototype.setAllDay=function(e,t){void 0===t&&(t={});var n={allDay:e},r=t.maintainDuration;null==r&&(r=this._context.options.allDayMaintainDuration),this._def.allDay!==e&&(n.hasEnd=r),this.mutate({standardProps:n})},e.prototype.formatRange=function(e){var t=this._context.dateEnv,n=this._instance,r=Nt(e);return this._def.hasEnd?t.formatRange(n.range.start,n.range.end,r,{forcedStartTzo:n.forcedStartTzo,forcedEndTzo:n.forcedEndTzo}):t.format(n.range.start,r,{forcedTzo:n.forcedStartTzo})},e.prototype.mutate=function(t){var n=this._instance;if(n){var r=this._def,o=this._context,i=Gt(o.getCurrentData().eventStore,n.instanceId);i=jn(i,{"":{display:"",startEditable:!0,durationEditable:!0,constraints:[],overlap:null,allows:[],backgroundColor:"",borderColor:"",textColor:"",classNames:[]}},t,o);var a=new e(o,r,n);this._def=i.defs[r.defId],this._instance=i.instances[n.instanceId],o.dispatch({type:"MERGE_EVENTS",eventStore:i}),o.emitter.trigger("eventChange",{oldEvent:a,event:this,relatedEvents:tr(i,o,n),revert:function(){o.dispatch({type:"REMOVE_EVENTS",eventStore:i})}})}},e.prototype.remove=function(){var e=this._context,t=er(this);e.dispatch({type:"REMOVE_EVENTS",eventStore:t}),e.emitter.trigger("eventRemove",{event:this,relatedEvents:[],revert:function(){e.dispatch({type:"MERGE_EVENTS",eventStore:t})}})},Object.defineProperty(e.prototype,"source",{get:function(){var e=this._def.sourceId;return e?new L(this._context,this._context.getCurrentData().eventSources[e]):null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"start",{get:function(){return this._instance?this._context.dateEnv.toDate(this._instance.range.start):null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"end",{get:function(){return this._instance&&this._def.hasEnd?this._context.dateEnv.toDate(this._instance.range.end):null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"startStr",{get:function(){var e=this._instance;return e?this._context.dateEnv.formatIso(e.range.start,{omitTime:this._def.allDay,forcedTzo:e.forcedStartTzo}):""},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"endStr",{get:function(){var e=this._instance;return e&&this._def.hasEnd?this._context.dateEnv.formatIso(e.range.end,{omitTime:this._def.allDay,forcedTzo:e.forcedEndTzo}):""},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"id",{get:function(){return this._def.publicId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"groupId",{get:function(){return this._def.groupId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"allDay",{get:function(){return this._def.allDay},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"title",{get:function(){return this._def.title},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"url",{get:function(){return this._def.url},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"display",{get:function(){return this._def.ui.display||"auto"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"startEditable",{get:function(){return this._def.ui.startEditable},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"durationEditable",{get:function(){return this._def.ui.durationEditable},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"constraint",{get:function(){return this._def.ui.constraints[0]||null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"overlap",{get:function(){return this._def.ui.overlap},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"allow",{get:function(){return this._def.ui.allows[0]||null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"backgroundColor",{get:function(){return this._def.ui.backgroundColor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"borderColor",{get:function(){return this._def.ui.borderColor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"textColor",{get:function(){return this._def.ui.textColor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"classNames",{get:function(){return this._def.ui.classNames},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"extendedProps",{get:function(){return this._def.extendedProps},enumerable:!1,configurable:!0}),e.prototype.toPlainObject=function(e){void 0===e&&(e={});var t=this._def,n=t.ui,o=this.startStr,i=this.endStr,a={};return t.title&&(a.title=t.title),o&&(a.start=o),i&&(a.end=i),t.publicId&&(a.id=t.publicId),t.groupId&&(a.groupId=t.groupId),t.url&&(a.url=t.url),n.display&&"auto"!==n.display&&(a.display=n.display),e.collapseColor&&n.backgroundColor&&n.backgroundColor===n.borderColor?a.color=n.backgroundColor:(n.backgroundColor&&(a.backgroundColor=n.backgroundColor),n.borderColor&&(a.borderColor=n.borderColor)),n.textColor&&(a.textColor=n.textColor),n.classNames.length&&(a.classNames=n.classNames),Object.keys(t.extendedProps).length&&(e.collapseExtendedProps?r(a,t.extendedProps):a.extendedProps=t.extendedProps),a},e.prototype.toJSON=function(){return this.toPlainObject()},e}();function er(e){var t,n,r=e._def,o=e._instance;return{defs:(t={},t[r.defId]=r,t),instances:o?(n={},n[o.instanceId]=o,n):{}}}function tr(e,t,n){var r=e.defs,o=e.instances,i=[],a=n?n.instanceId:"";for(var s in o){var l=o[s],u=r[l.defId];l.instanceId!==a&&i.push(new Qn(t,u,l))}return i}var nr={};var rr,or=function(){function e(){}return e.prototype.getMarkerYear=function(e){return e.getUTCFullYear()},e.prototype.getMarkerMonth=function(e){return e.getUTCMonth()},e.prototype.getMarkerDay=function(e){return e.getUTCDate()},e.prototype.arrayToMarker=function(e){return We(e)},e.prototype.markerToArray=function(e){return Oe(e)},e}();rr=or,nr["gregory"]=rr;var ir=/^\s*(\d{4})(-(\d{2})(-(\d{2})([T ](\d{2}):(\d{2})(:(\d{2})(\.(\d+))?)?(Z|(([-+])(\d{2})(:?(\d{2}))?))?)?)?)?$/;function ar(e){var t=ir.exec(e);if(t){var n=new Date(Date.UTC(Number(t[1]),t[3]?Number(t[3])-1:0,Number(t[5]||1),Number(t[7]||0),Number(t[8]||0),Number(t[10]||0),t[12]?1e3*Number("0."+t[12]):0));if(Ae(n)){var r=null;return t[13]&&(r=("-"===t[15]?-1:1)*(60*Number(t[16]||0)+Number(t[18]||0))),{marker:n,isTimeUnspecified:!t[6],timeZoneOffset:r}}}return null}var sr=function(){function e(e){var t=this.timeZone=e.timeZone,n="local"!==t&&"UTC"!==t;e.namedTimeZoneImpl&&n&&(this.namedTimeZoneImpl=new e.namedTimeZoneImpl(t)),this.canComputeOffset=Boolean(!n||this.namedTimeZoneImpl),this.calendarSystem=function(e){return new nr[e]}(e.calendarSystem),this.locale=e.locale,this.weekDow=e.locale.week.dow,this.weekDoy=e.locale.week.doy,"ISO"===e.weekNumberCalculation&&(this.weekDow=1,this.weekDoy=4),"number"==typeof e.firstDay&&(this.weekDow=e.firstDay),"function"==typeof e.weekNumberCalculation&&(this.weekNumberFunc=e.weekNumberCalculation),this.weekText=null!=e.weekText?e.weekText:e.locale.options.weekText,this.cmdFormatter=e.cmdFormatter,this.defaultSeparator=e.defaultSeparator}return e.prototype.createMarker=function(e){var t=this.createMarkerMeta(e);return null===t?null:t.marker},e.prototype.createNowMarker=function(){return this.canComputeOffset?this.timestampToMarker((new Date).valueOf()):We(_e(new Date))},e.prototype.createMarkerMeta=function(e){if("string"==typeof e)return this.parse(e);var t=null;return"number"==typeof e?t=this.timestampToMarker(e):e instanceof Date?(e=e.valueOf(),isNaN(e)||(t=this.timestampToMarker(e))):Array.isArray(e)&&(t=We(e)),null!==t&&Ae(t)?{marker:t,isTimeUnspecified:!1,forcedTzo:null}:null},e.prototype.parse=function(e){var t=ar(e);if(null===t)return null;var n=t.marker,r=null;return null!==t.timeZoneOffset&&(this.canComputeOffset?n=this.timestampToMarker(n.valueOf()-60*t.timeZoneOffset*1e3):r=t.timeZoneOffset),{marker:n,isTimeUnspecified:t.isTimeUnspecified,forcedTzo:r}},e.prototype.getYear=function(e){return this.calendarSystem.getMarkerYear(e)},e.prototype.getMonth=function(e){return this.calendarSystem.getMarkerMonth(e)},e.prototype.add=function(e,t){var n=this.calendarSystem.markerToArray(e);return n[0]+=t.years,n[1]+=t.months,n[2]+=t.days,n[6]+=t.milliseconds,this.calendarSystem.arrayToMarker(n)},e.prototype.subtract=function(e,t){var n=this.calendarSystem.markerToArray(e);return n[0]-=t.years,n[1]-=t.months,n[2]-=t.days,n[6]-=t.milliseconds,this.calendarSystem.arrayToMarker(n)},e.prototype.addYears=function(e,t){var n=this.calendarSystem.markerToArray(e);return n[0]+=t,this.calendarSystem.arrayToMarker(n)},e.prototype.addMonths=function(e,t){var n=this.calendarSystem.markerToArray(e);return n[1]+=t,this.calendarSystem.arrayToMarker(n)},e.prototype.diffWholeYears=function(e,t){var n=this.calendarSystem;return Le(e)===Le(t)&&n.getMarkerDay(e)===n.getMarkerDay(t)&&n.getMarkerMonth(e)===n.getMarkerMonth(t)?n.getMarkerYear(t)-n.getMarkerYear(e):null},e.prototype.diffWholeMonths=function(e,t){var n=this.calendarSystem;return Le(e)===Le(t)&&n.getMarkerDay(e)===n.getMarkerDay(t)?n.getMarkerMonth(t)-n.getMarkerMonth(e)+12*(n.getMarkerYear(t)-n.getMarkerYear(e)):null},e.prototype.greatestWholeUnit=function(e,t){var n=this.diffWholeYears(e,t);return null!==n?{unit:"year",value:n}:null!==(n=this.diffWholeMonths(e,t))?{unit:"month",value:n}:null!==(n=ke(e,t))?{unit:"week",value:n}:null!==(n=Me(e,t))?{unit:"day",value:n}:Se(n=function(e,t){return(t.valueOf()-e.valueOf())/36e5}(e,t))?{unit:"hour",value:n}:Se(n=function(e,t){return(t.valueOf()-e.valueOf())/6e4}(e,t))?{unit:"minute",value:n}:Se(n=function(e,t){return(t.valueOf()-e.valueOf())/1e3}(e,t))?{unit:"second",value:n}:{unit:"millisecond",value:t.valueOf()-e.valueOf()}},e.prototype.countDurationsBetween=function(e,t,n){var r;return n.years&&null!==(r=this.diffWholeYears(e,t))?r/(at(n)/365):n.months&&null!==(r=this.diffWholeMonths(e,t))?r/function(e){return at(e)/30}(n):n.days&&null!==(r=Me(e,t))?r/at(n):(t.valueOf()-e.valueOf())/ut(n)},e.prototype.startOf=function(e,t){return"year"===t?this.startOfYear(e):"month"===t?this.startOfMonth(e):"week"===t?this.startOfWeek(e):"day"===t?Pe(e):"hour"===t?function(e){return We([e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours()])}(e):"minute"===t?function(e){return We([e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes()])}(e):"second"===t?function(e){return We([e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds()])}(e):void 0},e.prototype.startOfYear=function(e){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(e)])},e.prototype.startOfMonth=function(e){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(e),this.calendarSystem.getMarkerMonth(e)])},e.prototype.startOfWeek=function(e){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(e),this.calendarSystem.getMarkerMonth(e),e.getUTCDate()-(e.getUTCDay()-this.weekDow+7)%7])},e.prototype.computeWeekNumber=function(e){return this.weekNumberFunc?this.weekNumberFunc(this.toDate(e)):function(e,t,n){var r=e.getUTCFullYear(),o=Ie(e,r,t,n);if(o<1)return Ie(e,r-1,t,n);var i=Ie(e,r+1,t,n);return i>=1?Math.min(o,i):o}(e,this.weekDow,this.weekDoy)},e.prototype.format=function(e,t,n){return void 0===n&&(n={}),t.format({marker:e,timeZoneOffset:null!=n.forcedTzo?n.forcedTzo:this.offsetForMarker(e)},this)},e.prototype.formatRange=function(e,t,n,r){return void 0===r&&(r={}),r.isEndExclusive&&(t=Re(t,-1)),n.formatRange({marker:e,timeZoneOffset:null!=r.forcedStartTzo?r.forcedStartTzo:this.offsetForMarker(e)},{marker:t,timeZoneOffset:null!=r.forcedEndTzo?r.forcedEndTzo:this.offsetForMarker(t)},this,r.defaultSeparator)},e.prototype.formatIso=function(e,t){void 0===t&&(t={});var n=null;return t.omitTimeZoneOffset||(n=null!=t.forcedTzo?t.forcedTzo:this.offsetForMarker(e)),function(e,t,n){void 0===n&&(n=!1);var r=e.toISOString();return r=r.replace(".000",""),n&&(r=r.replace("T00:00:00Z","")),r.length>10&&(null==t?r=r.replace("Z",""):0!==t&&(r=r.replace("Z",ht(t,!0)))),r}(e,n,t.omitTime)},e.prototype.timestampToMarker=function(e){return"local"===this.timeZone?We(_e(new Date(e))):"UTC"!==this.timeZone&&this.namedTimeZoneImpl?We(this.namedTimeZoneImpl.timestampToArray(e)):new Date(e)},e.prototype.offsetForMarker=function(e){return"local"===this.timeZone?-He(Oe(e)).getTimezoneOffset():"UTC"===this.timeZone?0:this.namedTimeZoneImpl?this.namedTimeZoneImpl.offsetForArray(Oe(e)):null},e.prototype.toDate=function(e,t){return"local"===this.timeZone?He(Oe(e)):"UTC"===this.timeZone?new Date(e.valueOf()):this.namedTimeZoneImpl?new Date(e.valueOf()-1e3*this.namedTimeZoneImpl.offsetForArray(Oe(e))*60):new Date(e.valueOf()-(t||0))},e}(),lr=[],ur={code:"en",week:{dow:0,doy:4},direction:"ltr",buttonText:{prev:"prev",next:"next",prevYear:"prev year",nextYear:"next year",year:"year",today:"today",month:"month",week:"week",day:"day",list:"list"},weekText:"W",allDayText:"all-day",moreLinkText:"more",noEventsText:"No events to display"};function cr(e){for(var t=e.length>0?e[0].code:"en",n=lr.concat(e),r={en:ur},o=0,i=n;o<i.length;o++){var a=i[o];r[a.code]=a}return{map:r,defaultCode:t}}function dr(e,t){return"object"!=typeof e||Array.isArray(e)?function(e,t){var n=[].concat(e||[]),r=function(e,t){for(var n=0;n<e.length;n++)for(var r=e[n].toLocaleLowerCase().split("-"),o=r.length;o>0;o--){var i=r.slice(0,o).join("-");if(t[i])return t[i]}return null}(n,t)||ur;return pr(e,n,r)}(e,t):pr(e.code,[e.code],e)}function pr(e,t,n){var r=ze([ur,n],["buttonText"]);delete r.code;var o=r.week;return delete r.week,{codeArg:e,codes:t,week:o,simpleNumberFormat:new Intl.NumberFormat(e),options:r}}function fr(e){var t=dr(e.locale||"en",cr([]).map);return new sr(r(r({timeZone:Ht.timeZone,calendarSystem:"gregory"},e),{locale:t}))}var hr={startTime:"09:00",endTime:"17:00",daysOfWeek:[1,2,3,4,5],display:"inverse-background",classNames:"fc-non-business",groupId:"_businessHours"};function gr(e,t){return Ft(function(e){var t;t=!0===e?[{}]:Array.isArray(e)?e.filter((function(e){return e.daysOfWeek})):"object"==typeof e&&e?[e]:[];return t=t.map((function(e){return r(r({},hr),e)}))}(e),null,t)}function vr(e,t){return e.left>=t.left&&e.left<t.right&&e.top>=t.top&&e.top<t.bottom}function mr(e,t){var n={left:Math.max(e.left,t.left),right:Math.min(e.right,t.right),top:Math.max(e.top,t.top),bottom:Math.min(e.bottom,t.bottom)};return n.left<n.right&&n.top<n.bottom&&n}function yr(e,t,n){return{left:e.left+t,right:e.right+t,top:e.top+n,bottom:e.bottom+n}}function Sr(e,t){return{left:Math.min(Math.max(e.left,t.left),t.right),top:Math.min(Math.max(e.top,t.top),t.bottom)}}function Er(e){return{left:(e.left+e.right)/2,top:(e.top+e.bottom)/2}}function Cr(e,t){return{left:e.left-t.left,top:e.top-t.top}}var br={defs:{},instances:{}},Dr=function(){function e(){this.getKeysForEventDefs=gt(this._getKeysForEventDefs),this.splitDateSelection=gt(this._splitDateSpan),this.splitEventStore=gt(this._splitEventStore),this.splitIndividualUi=gt(this._splitIndividualUi),this.splitEventDrag=gt(this._splitInteraction),this.splitEventResize=gt(this._splitInteraction),this.eventUiBuilders={}}return e.prototype.splitProps=function(e){var t=this,n=this.getKeyInfo(e),r=this.getKeysForEventDefs(e.eventStore),o=this.splitDateSelection(e.dateSelection),i=this.splitIndividualUi(e.eventUiBases,r),a=this.splitEventStore(e.eventStore,r),s=this.splitEventDrag(e.eventDrag),l=this.splitEventResize(e.eventResize),u={};for(var c in this.eventUiBuilders=Fe(n,(function(e,n){return t.eventUiBuilders[n]||gt(Rr)})),n){var d=n[c],p=a[c]||br,f=this.eventUiBuilders[c];u[c]={businessHours:d.businessHours||e.businessHours,dateSelection:o[c]||null,eventStore:p,eventUiBases:f(e.eventUiBases[""],d.ui,i[c]),eventSelection:p.instances[e.eventSelection]?e.eventSelection:"",eventDrag:s[c]||null,eventResize:l[c]||null}}return u},e.prototype._splitDateSpan=function(e){var t={};if(e)for(var n=0,r=this.getKeysForDateSpan(e);n<r.length;n++){t[r[n]]=e}return t},e.prototype._getKeysForEventDefs=function(e){var t=this;return Fe(e.defs,(function(e){return t.getKeysForEventDef(e)}))},e.prototype._splitEventStore=function(e,t){var n=e.defs,r=e.instances,o={};for(var i in n)for(var a=0,s=t[i];a<s.length;a++){o[p=s[a]]||(o[p]={defs:{},instances:{}}),o[p].defs[i]=n[i]}for(var l in r)for(var u=r[l],c=0,d=t[u.defId];c<d.length;c++){var p;o[p=d[c]]&&(o[p].instances[l]=u)}return o},e.prototype._splitIndividualUi=function(e,t){var n={};for(var r in e)if(r)for(var o=0,i=t[r];o<i.length;o++){var a=i[o];n[a]||(n[a]={}),n[a][r]=e[r]}return n},e.prototype._splitInteraction=function(e){var t={};if(e){var n=this._splitEventStore(e.affectedEvents,this._getKeysForEventDefs(e.affectedEvents)),r=this._getKeysForEventDefs(e.mutatedEvents),o=this._splitEventStore(e.mutatedEvents,r),i=function(r){t[r]||(t[r]={affectedEvents:n[r]||br,mutatedEvents:o[r]||br,isEvent:e.isEvent})};for(var a in n)i(a);for(var a in o)i(a)}return t},e}();function Rr(e,t,n){var o=[];e&&o.push(e),t&&o.push(t);var i={"":$t(o)};return n&&r(i,n),i}function wr(e,t,n,r){return{dow:e.getUTCDay(),isDisabled:Boolean(r&&!Sn(r.activeRange,e)),isOther:Boolean(r&&!Sn(r.currentRange,e)),isToday:Boolean(t&&Sn(t,e)),isPast:Boolean(n?e<n:!!t&&e<t.start),isFuture:Boolean(n?e>n:!!t&&e>=t.end)}}function Tr(e,t){var n=["fc-day","fc-day-"+Ce[e.dow]];return e.isDisabled?n.push("fc-day-disabled"):(e.isToday&&(n.push("fc-day-today"),n.push(t.getClass("today"))),e.isPast&&n.push("fc-day-past"),e.isFuture&&n.push("fc-day-future"),e.isOther&&n.push("fc-day-other")),n}function xr(e,t){var n=["fc-slot","fc-slot-"+Ce[e.dow]];return e.isDisabled?n.push("fc-slot-disabled"):(e.isToday&&(n.push("fc-slot-today"),n.push(t.getClass("today"))),e.isPast&&n.push("fc-slot-past"),e.isFuture&&n.push("fc-slot-future")),n}function kr(e,t){return void 0===t&&(t="day"),JSON.stringify({date:pt(e),type:t})}var Mr,Pr=null;function Ir(){return null===Pr&&(Pr=function(){var e=document.createElement("div");$(e,{position:"absolute",top:-1e3,left:0,border:0,padding:0,overflow:"scroll",direction:"rtl"}),e.innerHTML="<div></div>",document.body.appendChild(e);var t=e.firstChild.getBoundingClientRect().left>e.getBoundingClientRect().left;return V(e),t}()),Pr}function Nr(){return Mr||(Mr=function(){var e=document.createElement("div");e.style.overflow="scroll",document.body.appendChild(e);var t=_r(e);return document.body.removeChild(e),t}()),Mr}function _r(e){return{x:e.offsetHeight-e.clientHeight,y:e.offsetWidth-e.clientWidth}}function Hr(e,t){void 0===t&&(t=!1);var n=window.getComputedStyle(e),r=parseInt(n.borderLeftWidth,10)||0,o=parseInt(n.borderRightWidth,10)||0,i=parseInt(n.borderTopWidth,10)||0,a=parseInt(n.borderBottomWidth,10)||0,s=_r(e),l=s.y-r-o,u={borderLeft:r,borderRight:o,borderTop:i,borderBottom:a,scrollbarBottom:s.x-i-a,scrollbarLeft:0,scrollbarRight:0};return Ir()&&"rtl"===n.direction?u.scrollbarLeft=l:u.scrollbarRight=l,t&&(u.paddingLeft=parseInt(n.paddingLeft,10)||0,u.paddingRight=parseInt(n.paddingRight,10)||0,u.paddingTop=parseInt(n.paddingTop,10)||0,u.paddingBottom=parseInt(n.paddingBottom,10)||0),u}function Or(e,t,n){void 0===t&&(t=!1);var r=n?e.getBoundingClientRect():Wr(e),o=Hr(e,t),i={left:r.left+o.borderLeft+o.scrollbarLeft,right:r.right-o.borderRight-o.scrollbarRight,top:r.top+o.borderTop,bottom:r.bottom-o.borderBottom-o.scrollbarBottom};return t&&(i.left+=o.paddingLeft,i.right-=o.paddingRight,i.top+=o.paddingTop,i.bottom-=o.paddingBottom),i}function Wr(e){var t=e.getBoundingClientRect();return{left:t.left+window.pageXOffset,top:t.top+window.pageYOffset,right:t.right+window.pageXOffset,bottom:t.bottom+window.pageYOffset}}function Ar(e){for(var t=[];e instanceof HTMLElement;){var n=window.getComputedStyle(e);if("fixed"===n.position)break;/(auto|scroll)/.test(n.overflow+n.overflowY+n.overflowX)&&t.push(e),e=e.parentNode}return t}function Lr(e,t,n){var r=!1,o=function(){r||(r=!0,t.apply(this,arguments))},i=function(){r||(r=!0,n&&n.apply(this,arguments))},a=e(o,i);a&&"function"==typeof a.then&&a.then(o,i)}var Ur=function(){function e(){this.handlers={},this.thisContext=null}return e.prototype.setThisContext=function(e){this.thisContext=e},e.prototype.setOptions=function(e){this.options=e},e.prototype.on=function(e,t){!function(e,t,n){(e[t]||(e[t]=[])).push(n)}(this.handlers,e,t)},e.prototype.off=function(e,t){!function(e,t,n){n?e[t]&&(e[t]=e[t].filter((function(e){return e!==n}))):delete e[t]}(this.handlers,e,t)},e.prototype.trigger=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var r=this.handlers[e]||[],o=this.options&&this.options[e],i=[].concat(o||[],r),a=0,s=i;a<s.length;a++){var l=s[a];l.apply(this.thisContext,t)}},e.prototype.hasHandlers=function(e){return this.handlers[e]&&this.handlers[e].length||this.options&&this.options[e]},e}();var Br=function(){function e(e,t,n,r){this.els=t;var o=this.originClientRect=e.getBoundingClientRect();n&&this.buildElHorizontals(o.left),r&&this.buildElVerticals(o.top)}return e.prototype.buildElHorizontals=function(e){for(var t=[],n=[],r=0,o=this.els;r<o.length;r++){var i=o[r].getBoundingClientRect();t.push(i.left-e),n.push(i.right-e)}this.lefts=t,this.rights=n},e.prototype.buildElVerticals=function(e){for(var t=[],n=[],r=0,o=this.els;r<o.length;r++){var i=o[r].getBoundingClientRect();t.push(i.top-e),n.push(i.bottom-e)}this.tops=t,this.bottoms=n},e.prototype.leftToIndex=function(e){var t,n=this.lefts,r=this.rights,o=n.length;for(t=0;t<o;t++)if(e>=n[t]&&e<r[t])return t},e.prototype.topToIndex=function(e){var t,n=this.tops,r=this.bottoms,o=n.length;for(t=0;t<o;t++)if(e>=n[t]&&e<r[t])return t},e.prototype.getWidth=function(e){return this.rights[e]-this.lefts[e]},e.prototype.getHeight=function(e){return this.bottoms[e]-this.tops[e]},e}(),zr=function(){function e(){}return e.prototype.getMaxScrollTop=function(){return this.getScrollHeight()-this.getClientHeight()},e.prototype.getMaxScrollLeft=function(){return this.getScrollWidth()-this.getClientWidth()},e.prototype.canScrollVertically=function(){return this.getMaxScrollTop()>0},e.prototype.canScrollHorizontally=function(){return this.getMaxScrollLeft()>0},e.prototype.canScrollUp=function(){return this.getScrollTop()>0},e.prototype.canScrollDown=function(){return this.getScrollTop()<this.getMaxScrollTop()},e.prototype.canScrollLeft=function(){return this.getScrollLeft()>0},e.prototype.canScrollRight=function(){return this.getScrollLeft()<this.getMaxScrollLeft()},e}(),Vr=function(e){function t(t){var n=e.call(this)||this;return n.el=t,n}return n(t,e),t.prototype.getScrollTop=function(){return this.el.scrollTop},t.prototype.getScrollLeft=function(){return this.el.scrollLeft},t.prototype.setScrollTop=function(e){this.el.scrollTop=e},t.prototype.setScrollLeft=function(e){this.el.scrollLeft=e},t.prototype.getScrollWidth=function(){return this.el.scrollWidth},t.prototype.getScrollHeight=function(){return this.el.scrollHeight},t.prototype.getClientHeight=function(){return this.el.clientHeight},t.prototype.getClientWidth=function(){return this.el.clientWidth},t}(zr),Fr=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.getScrollTop=function(){return window.pageYOffset},t.prototype.getScrollLeft=function(){return window.pageXOffset},t.prototype.setScrollTop=function(e){window.scroll(window.pageXOffset,e)},t.prototype.setScrollLeft=function(e){window.scroll(e,window.pageYOffset)},t.prototype.getScrollWidth=function(){return document.documentElement.scrollWidth},t.prototype.getScrollHeight=function(){return document.documentElement.scrollHeight},t.prototype.getClientHeight=function(){return document.documentElement.clientHeight},t.prototype.getClientWidth=function(){return document.documentElement.clientWidth},t}(zr),jr=function(){function e(e){this.iconOverrideOption&&this.setIconOverride(e[this.iconOverrideOption])}return e.prototype.setIconOverride=function(e){var t,n;if("object"==typeof e&&e){for(n in t=r({},this.iconClasses),e)t[n]=this.applyIconOverridePrefix(e[n]);this.iconClasses=t}else!1===e&&(this.iconClasses={})},e.prototype.applyIconOverridePrefix=function(e){var t=this.iconOverridePrefix;return t&&0!==e.indexOf(t)&&(e=t+e),e},e.prototype.getClass=function(e){return this.classes[e]||""},e.prototype.getIconClass=function(e,t){var n;return(n=t&&this.rtlIconClasses&&this.rtlIconClasses[e]||this.iconClasses[e])?this.baseIconClass+" "+n:""},e.prototype.getCustomButtonIconClass=function(e){var t;return this.iconOverrideCustomButtonOption&&(t=e[this.iconOverrideCustomButtonOption])?this.baseIconClass+" "+this.applyIconOverridePrefix(t):""},e}();if(jr.prototype.classes={},jr.prototype.iconClasses={},jr.prototype.baseIconClass="",jr.prototype.iconOverridePrefix="","undefined"==typeof FullCalendarVDom)throw new Error("Please import the top-level fullcalendar lib before attempting to import a plugin.");var Gr=FullCalendarVDom.Component,qr=FullCalendarVDom.createElement,Yr=FullCalendarVDom.render,Zr=FullCalendarVDom.createRef,Xr=FullCalendarVDom.Fragment,Kr=FullCalendarVDom.createContext,Jr=FullCalendarVDom.flushToDom,$r=function(){function e(e,t,n){var o=this;this.execFunc=e,this.emitter=t,this.scrollTime=n,this.handleScrollRequest=function(e){o.queuedRequest=r({},o.queuedRequest||{},e),o.drain()},t.on("_scrollRequest",this.handleScrollRequest),this.fireInitialScroll()}return e.prototype.detach=function(){this.emitter.off("_scrollRequest",this.handleScrollRequest)},e.prototype.update=function(e){e?this.fireInitialScroll():this.drain()},e.prototype.fireInitialScroll=function(){this.handleScrollRequest({time:this.scrollTime})},e.prototype.drain=function(){this.queuedRequest&&this.execFunc(this.queuedRequest)&&(this.queuedRequest=null)},e}(),Qr=Kr({});function eo(e,t,n,r,o,i,a,s,l,u,c,d,p){return{dateEnv:o,options:n,pluginHooks:a,emitter:u,dispatch:s,getCurrentData:l,calendarApi:c,viewSpec:e,viewApi:t,dateProfileGenerator:r,theme:i,isRtl:"rtl"===n.direction,addResizeHandler:function(e){u.on("_resize",e)},removeResizeHandler:function(e){u.off("_resize",e)},createScrollResponder:function(e){return new $r(e,u,tt(n.scrollTime))},registerInteractiveComponent:d,unregisterInteractiveComponent:p}}var to=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.shouldComponentUpdate=function(e,t){return this.debug&&console.log(Ye(e,this.props),Ye(t,this.state)),!Ze(this.props,e,this.propEquality)||!Ze(this.state,t,this.stateEquality)},t.addPropsEquality=ro,t.addStateEquality=oo,t.contextType=Qr,t}(Gr);to.prototype.propEquality={},to.prototype.stateEquality={};var no=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.contextType=Qr,t}(to);function ro(e){var t=Object.create(this.prototype.propEquality);r(t,e),this.prototype.propEquality=t}function oo(e){var t=Object.create(this.prototype.stateEquality);r(t,e),this.prototype.stateEquality=t}function io(e,t){"function"==typeof e?e(t):e&&(e.current=t)}function ao(e,t,n,r,o){switch(t.type){case"RECEIVE_EVENTS":return function(e,t,n,r,o,i){if(t&&n===t.latestFetchId){var a=Ft(function(e,t,n){var r=n.options.eventDataTransform,o=t?t.eventDataTransform:null;o&&(e=so(e,o));r&&(e=so(e,r));return e}(o,t,i),t,i);return r&&(a=Je(a,r,i)),Yt(lo(e,t.sourceId),a)}return e}(e,n[t.sourceId],t.fetchId,t.fetchRange,t.rawEvents,o);case"ADD_EVENTS":return function(e,t,n,r){n&&(t=Je(t,n,r));return Yt(e,t)}(e,t.eventStore,r?r.activeRange:null,o);case"MERGE_EVENTS":return Yt(e,t.eventStore);case"PREV":case"NEXT":case"CHANGE_DATE":case"CHANGE_VIEW_TYPE":return r?Je(e,r.activeRange,o):e;case"REMOVE_EVENTS":return function(e,t){var n=e.defs,r=e.instances,o={},i={};for(var a in n)t.defs[a]||(o[a]=n[a]);for(var s in r)!t.instances[s]&&o[r[s].defId]&&(i[s]=r[s]);return{defs:o,instances:i}}(e,t.eventStore);case"REMOVE_EVENT_SOURCE":return lo(e,t.sourceId);case"REMOVE_ALL_EVENT_SOURCES":return Zt(e,(function(e){return!e.sourceId}));case"REMOVE_ALL_EVENTS":return{defs:{},instances:{}};default:return e}}function so(e,t){var n;if(t){n=[];for(var r=0,o=e;r<o.length;r++){var i=o[r],a=t(i);a?n.push(a):null==a&&n.push(i)}}else n=e;return n}function lo(e,t){return Zt(e,(function(e){return e.sourceId!==t}))}function uo(e,t){return co({eventDrag:e},t)}function co(e,t){var n=t.getCurrentData(),o=r({businessHours:n.businessHours,dateSelection:"",eventStore:n.eventStore,eventUiBases:n.eventUiBases,eventSelection:"",eventDrag:null,eventResize:null},e);return(t.pluginHooks.isPropsValid||po)(o,t)}function po(e,t,n,o){return void 0===n&&(n={}),!(e.eventDrag&&!function(e,t,n,o){var i=t.getCurrentData(),a=e.eventDrag,s=a.mutatedEvents,l=s.defs,u=s.instances,c=Rn(l,a.isEvent?e.eventUiBases:{"":i.selectionConfig});o&&(c=Fe(c,o));var d=(g=e.eventStore,v=a.affectedEvents.instances,{defs:g.defs,instances:Ve(g.instances,(function(e){return!v[e.instanceId]}))}),p=d.defs,f=d.instances,h=Rn(p,e.eventUiBases);var g,v;for(var m in u){var y=u[m],S=y.range,E=c[y.defId],C=l[y.defId];if(!fo(E.constraints,S,d,e.businessHours,t))return!1;var b=t.options.eventOverlap,D="function"==typeof b?b:null;for(var R in f){var w=f[R];if(mn(S,w.range)){if(!1===h[w.defId].overlap&&a.isEvent)return!1;if(!1===E.overlap)return!1;if(D&&!D(new Qn(t,p[w.defId],w),new Qn(t,C,y)))return!1}}for(var T=i.eventStore,x=0,k=E.allows;x<k.length;x++){var M=k[x],P=r(r({},n),{range:y.range,allDay:C.allDay}),I=T.defs[C.defId],N=T.instances[m],_=void 0;if(_=I?new Qn(t,I,N):new Qn(t,C),!M(Vn(P,t),_))return!1}}return!0}(e,t,n,o))&&!(e.dateSelection&&!function(e,t,n,o){var i=e.eventStore,a=i.defs,s=i.instances,l=e.dateSelection,u=l.range,c=t.getCurrentData().selectionConfig;o&&(c=o(c));if(!fo(c.constraints,u,i,e.businessHours,t))return!1;var d=t.options.selectOverlap,p="function"==typeof d?d:null;for(var f in s){var h=s[f];if(mn(u,h.range)){if(!1===c.overlap)return!1;if(p&&!p(new Qn(t,a[h.defId],h),null))return!1}}for(var g=0,v=c.allows;g<v.length;g++){var m=v[g],y=r(r({},n),l);if(!m(Vn(y,t),null))return!1}return!0}(e,t,n,o))}function fo(e,t,n,r,o){for(var i=0,a=e;i<a.length;i++){if(!vo(ho(a[i],t,n,r,o),t))return!1}return!0}function ho(e,t,n,r,o){return"businessHours"===e?go(Je(r,t,o)):"string"==typeof e?go(Zt(n,(function(t){return t.groupId===e}))):"object"==typeof e&&e?go(Je(e,t,o)):[]}function go(e){var t=e.instances,n=[];for(var r in t)n.push(t[r].range);return n}function vo(e,t){for(var n=0,r=e;n<r.length;n++){if(yn(r[n],t))return!0}return!1}var mo=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.uid=ae(),t}return n(t,e),t.prototype.prepareHits=function(){},t.prototype.queryHit=function(e,t,n,r){return null},t.prototype.isInteractionValid=function(e){var t=this.props.dateProfile,n=e.mutatedEvents.instances;if(t)for(var r in n)if(!yn(t.validRange,n[r].range))return!1;return uo(e,this.context)},t.prototype.isDateSelectionValid=function(e){var t,n,r=this.props.dateProfile;return!(r&&!yn(r.validRange,e.range))&&(t=e,n=this.context,co({dateSelection:t},n))},t.prototype.isValidSegDownEl=function(e){return!this.props.eventDrag&&!this.props.eventResize&&!Y(e,".fc-event-mirror")&&(this.isPopover()||!this.isInPopover(e))},t.prototype.isValidDateDownEl=function(e){return!(Y(e,".fc-event:not(.fc-bg-event)")||Y(e,".fc-daygrid-more-link")||Y(e,"a[data-navlink]")||this.isInPopover(e))},t.prototype.isPopover=function(){return!1},t.prototype.isInPopover=function(e){return Boolean(Y(e,".fc-popover"))},t}(no);function yo(e){return{id:ae(),deps:e.deps||[],reducers:e.reducers||[],contextInit:[].concat(e.contextInit||[]),eventRefiners:e.eventRefiners||{},eventDefMemberAdders:e.eventDefMemberAdders||[],eventSourceRefiners:e.eventSourceRefiners||{},isDraggableTransformers:e.isDraggableTransformers||[],eventDragMutationMassagers:e.eventDragMutationMassagers||[],eventDefMutationAppliers:e.eventDefMutationAppliers||[],dateSelectionTransformers:e.dateSelectionTransformers||[],datePointTransforms:e.datePointTransforms||[],dateSpanTransforms:e.dateSpanTransforms||[],views:e.views||{},viewPropsTransformers:e.viewPropsTransformers||[],isPropsValid:e.isPropsValid||null,externalDefTransforms:e.externalDefTransforms||[],eventResizeJoinTransforms:e.eventResizeJoinTransforms||[],viewContainerAppends:e.viewContainerAppends||[],eventDropTransformers:e.eventDropTransformers||[],componentInteractions:e.componentInteractions||[],calendarInteractions:e.calendarInteractions||[],themeClasses:e.themeClasses||{},eventSourceDefs:e.eventSourceDefs||[],cmdFormatter:e.cmdFormatter,recurringTypes:e.recurringTypes||[],namedTimeZonedImpl:e.namedTimeZonedImpl,initialView:e.initialView||"",elementDraggingImpl:e.elementDraggingImpl,optionChangeHandlers:e.optionChangeHandlers||{},scrollGridImpl:e.scrollGridImpl||null,contentTypeHandlers:e.contentTypeHandlers||{},listenerRefiners:e.listenerRefiners||{},optionRefiners:e.optionRefiners||{},propSetHandlers:e.propSetHandlers||{}}}function So(){var e,t=[],n=[];return function(o,i){return e&&B(o,t)&&B(i,n)||(e=function(e,t){var n={},o={reducers:[],contextInit:[],eventRefiners:{},eventDefMemberAdders:[],eventSourceRefiners:{},isDraggableTransformers:[],eventDragMutationMassagers:[],eventDefMutationAppliers:[],dateSelectionTransformers:[],datePointTransforms:[],dateSpanTransforms:[],views:{},viewPropsTransformers:[],isPropsValid:null,externalDefTransforms:[],eventResizeJoinTransforms:[],viewContainerAppends:[],eventDropTransformers:[],componentInteractions:[],calendarInteractions:[],themeClasses:{},eventSourceDefs:[],cmdFormatter:null,recurringTypes:[],namedTimeZonedImpl:null,initialView:"",elementDraggingImpl:null,optionChangeHandlers:{},scrollGridImpl:null,contentTypeHandlers:{},listenerRefiners:{},optionRefiners:{},propSetHandlers:{}};function i(e){for(var t=0,a=e;t<a.length;t++){var s=a[t];n[s.id]||(n[s.id]=!0,i(s.deps),u=s,o={reducers:(l=o).reducers.concat(u.reducers),contextInit:l.contextInit.concat(u.contextInit),eventRefiners:r(r({},l.eventRefiners),u.eventRefiners),eventDefMemberAdders:l.eventDefMemberAdders.concat(u.eventDefMemberAdders),eventSourceRefiners:r(r({},l.eventSourceRefiners),u.eventSourceRefiners),isDraggableTransformers:l.isDraggableTransformers.concat(u.isDraggableTransformers),eventDragMutationMassagers:l.eventDragMutationMassagers.concat(u.eventDragMutationMassagers),eventDefMutationAppliers:l.eventDefMutationAppliers.concat(u.eventDefMutationAppliers),dateSelectionTransformers:l.dateSelectionTransformers.concat(u.dateSelectionTransformers),datePointTransforms:l.datePointTransforms.concat(u.datePointTransforms),dateSpanTransforms:l.dateSpanTransforms.concat(u.dateSpanTransforms),views:r(r({},l.views),u.views),viewPropsTransformers:l.viewPropsTransformers.concat(u.viewPropsTransformers),isPropsValid:u.isPropsValid||l.isPropsValid,externalDefTransforms:l.externalDefTransforms.concat(u.externalDefTransforms),eventResizeJoinTransforms:l.eventResizeJoinTransforms.concat(u.eventResizeJoinTransforms),viewContainerAppends:l.viewContainerAppends.concat(u.viewContainerAppends),eventDropTransformers:l.eventDropTransformers.concat(u.eventDropTransformers),calendarInteractions:l.calendarInteractions.concat(u.calendarInteractions),componentInteractions:l.componentInteractions.concat(u.componentInteractions),themeClasses:r(r({},l.themeClasses),u.themeClasses),eventSourceDefs:l.eventSourceDefs.concat(u.eventSourceDefs),cmdFormatter:u.cmdFormatter||l.cmdFormatter,recurringTypes:l.recurringTypes.concat(u.recurringTypes),namedTimeZonedImpl:u.namedTimeZonedImpl||l.namedTimeZonedImpl,initialView:l.initialView||u.initialView,elementDraggingImpl:l.elementDraggingImpl||u.elementDraggingImpl,optionChangeHandlers:r(r({},l.optionChangeHandlers),u.optionChangeHandlers),scrollGridImpl:u.scrollGridImpl||l.scrollGridImpl,contentTypeHandlers:r(r({},l.contentTypeHandlers),u.contentTypeHandlers),listenerRefiners:r(r({},l.listenerRefiners),u.listenerRefiners),optionRefiners:r(r({},l.optionRefiners),u.optionRefiners),propSetHandlers:r(r({},l.propSetHandlers),u.propSetHandlers)})}var l,u}return e&&i(e),i(t),o}(o,i)),t=o,n=i,e}}var Eo=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t}(jr);function Co(e,t,n,o){if(t[e])return t[e];var i=function(e,t,n,o){var i=n[e],a=o[e],s=function(e){return i&&null!==i[e]?i[e]:a&&null!==a[e]?a[e]:null},l=s("component"),u=s("superType"),c=null;if(u){if(u===e)throw new Error("Can't have a custom view type that references itself");c=Co(u,t,n,o)}!l&&c&&(l=c.component);if(!l)return null;return{type:e,component:l,defaults:r(r({},c?c.defaults:{}),i?i.rawOptions:{}),overrides:r(r({},c?c.overrides:{}),a?a.rawOptions:{})}}(e,t,n,o);return i&&(t[e]=i),i}Eo.prototype.classes={root:"fc-theme-standard",tableCellShaded:"fc-cell-shaded",buttonGroup:"fc-button-group",button:"fc-button fc-button-primary",buttonActive:"fc-button-active"},Eo.prototype.baseIconClass="fc-icon",Eo.prototype.iconClasses={close:"fc-icon-x",prev:"fc-icon-chevron-left",next:"fc-icon-chevron-right",prevYear:"fc-icon-chevrons-left",nextYear:"fc-icon-chevrons-right"},Eo.prototype.rtlIconClasses={prev:"fc-icon-chevron-right",next:"fc-icon-chevron-left",prevYear:"fc-icon-chevrons-right",nextYear:"fc-icon-chevrons-left"},Eo.prototype.iconOverrideOption="buttonIcons",Eo.prototype.iconOverrideCustomButtonOption="icon",Eo.prototype.iconOverridePrefix="fc-icon-";var bo=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.rootElRef=Zr(),t.handleRootEl=function(e){io(t.rootElRef,e),t.props.elRef&&io(t.props.elRef,e)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=t.hookProps;return qr(wo,{hookProps:n,didMount:t.didMount,willUnmount:t.willUnmount,elRef:this.handleRootEl},(function(r){return qr(Ro,{hookProps:n,content:t.content,defaultContent:t.defaultContent,backupElRef:e.rootElRef},(function(e,o){return t.children(r,xo(t.classNames,n),e,o)}))}))},t}(no),Do=Kr(0),Ro=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.innerElRef=Zr(),t}return n(t,e),t.prototype.render=function(){var e=this;return qr(Do.Consumer,null,(function(){return e.props.children(e.innerElRef,e.renderInnerContent())}))},t.prototype.componentDidMount=function(){this.updateCustomContent()},t.prototype.componentDidUpdate=function(){this.updateCustomContent()},t.prototype.renderInnerContent=function(){var e=this.context.pluginHooks.contentTypeHandlers,t=this.props,n=this.customContentInfo,r=ko(t.content,t.hookProps),o=null;if(void 0===r&&(r=ko(t.defaultContent,t.hookProps)),void 0!==r){if(n)n.contentVal=r[n.contentKey];else if("object"==typeof r)for(var i in e)if(void 0!==r[i]){n=this.customContentInfo={contentKey:i,contentVal:r[i],handler:e[i]()};break}o=n?[]:r}return o},t.prototype.updateCustomContent=function(){this.customContentInfo&&this.customContentInfo.handler(this.innerElRef.current||this.props.backupElRef.current,this.customContentInfo.contentVal)},t}(no),wo=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.handleRootEl=function(e){t.rootEl=e,t.props.elRef&&io(t.props.elRef,e)},t}return n(t,e),t.prototype.render=function(){return this.props.children(this.handleRootEl)},t.prototype.componentDidMount=function(){var e=this.props.didMount;e&&e(r(r({},this.props.hookProps),{el:this.rootEl}))},t.prototype.componentWillUnmount=function(){var e=this.props.willUnmount;e&&e(r(r({},this.props.hookProps),{el:this.rootEl}))},t}(no);function To(){var e,t,n=[];return function(r,o){return t&&qe(t,o)&&r===e||(e=r,t=o,n=xo(r,o)),n}}function xo(e,t){return"function"==typeof e&&(e=e(t)),Xt(e)}function ko(e,t){return"function"==typeof e?e(t,qr):e}var Mo=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.normalizeClassNames=To(),t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options,r={view:t.viewApi},o=this.normalizeClassNames(n.viewClassNames,r);return qr(wo,{hookProps:r,didMount:n.viewDidMount,willUnmount:n.viewWillUnmount,elRef:e.elRef},(function(t){return e.children(t,["fc-"+e.viewSpec.type+"-view","fc-view"].concat(o))}))},t}(no);function Po(e){return Fe(e,Io)}function Io(e){var t,n="function"==typeof e?{component:e}:e,o=n.component;return n.content&&(t=n,o=function(e){return qr(Qr.Consumer,null,(function(n){return qr(Mo,{viewSpec:n.viewSpec},(function(o,i){var a=r(r({},e),{nextDayThreshold:n.options.nextDayThreshold});return qr(bo,{hookProps:a,classNames:t.classNames,content:t.content,didMount:t.didMount,willUnmount:t.willUnmount,elRef:o},(function(e,t,n,r){return qr("div",{className:i.concat(t).join(" "),ref:e},r)}))}))}))}),{superType:n.type,component:o,rawOptions:n}}function No(e,t,n,o){var i=Po(e),a=Po(t.views);return Fe(function(e,t){var n,r={};for(n in e)Co(n,r,e,t);for(n in t)Co(n,r,e,t);return r}(i,a),(function(e){return function(e,t,n,o,i){var a=e.overrides.duration||e.defaults.duration||o.duration||n.duration,s=null,l="",u="",c={};if(a&&(s=function(e){var t=JSON.stringify(e),n=_o[t];void 0===n&&(n=tt(e),_o[t]=n);return n}(a))){var d=dt(s);l=d.unit,1===d.value&&(u=l,c=t[l]?t[l].rawOptions:{})}var p=function(t){var n=t.buttonText||{},r=e.defaults.buttonTextKey;return null!=r&&null!=n[r]?n[r]:null!=n[e.type]?n[e.type]:null!=n[u]?n[u]:void 0};return{type:e.type,component:e.component,duration:s,durationUnit:l,singleUnit:u,optionDefaults:e.defaults,optionOverrides:r(r({},c),e.overrides),buttonTextOverride:p(o)||p(n)||e.overrides.buttonText,buttonTextDefault:p(i)||e.defaults.buttonText||p(Ht)||e.type}}(e,a,t,n,o)}))}var _o={};var Ho=function(){function e(e){this.props=e,this.nowDate=Jn(e.nowInput,e.dateEnv),this.initHiddenDays()}return e.prototype.buildPrev=function(e,t,n){var r=this.props.dateEnv,o=r.subtract(r.startOf(t,e.currentRangeUnit),e.dateIncrement);return this.build(o,-1,n)},e.prototype.buildNext=function(e,t,n){var r=this.props.dateEnv,o=r.add(r.startOf(t,e.currentRangeUnit),e.dateIncrement);return this.build(o,1,n)},e.prototype.build=function(e,t,n){void 0===n&&(n=!0);var r,o,i,a,s,l,u,c,d=this.props;return r=this.buildValidRange(),r=this.trimHiddenDays(r),n&&(u=e,e=null!=(c=r).start&&u<c.start?c.start:null!=c.end&&u>=c.end?new Date(c.end.valueOf()-1):u),o=this.buildCurrentRangeInfo(e,t),i=/^(year|month|week|day)$/.test(o.unit),a=this.buildRenderRange(this.trimHiddenDays(o.range),o.unit,i),s=a=this.trimHiddenDays(a),d.showNonCurrentDates||(s=gn(s,o.range)),s=gn(s=this.adjustActiveRange(s),r),l=mn(o.range,r),{validRange:r,currentRange:o.range,currentRangeUnit:o.unit,isRangeAllDay:i,activeRange:s,renderRange:a,slotMinTime:d.slotMinTime,slotMaxTime:d.slotMaxTime,isValid:l,dateIncrement:this.buildDateIncrement(o.duration)}},e.prototype.buildValidRange=function(){var e=this.props.validRangeInput,t="function"==typeof e?e.call(this.props.calendarApi,this.nowDate):e;return this.refineRange(t)||{start:null,end:null}},e.prototype.buildCurrentRangeInfo=function(e,t){var n,r=this.props,o=null,i=null,a=null;return r.duration?(o=r.duration,i=r.durationUnit,a=this.buildRangeFromDuration(e,t,o,i)):(n=this.props.dayCount)?(i="day",a=this.buildRangeFromDayCount(e,t,n)):(a=this.buildCustomVisibleRange(e))?i=r.dateEnv.greatestWholeUnit(a.start,a.end).unit:(i=dt(o=this.getFallbackDuration()).unit,a=this.buildRangeFromDuration(e,t,o,i)),{duration:o,unit:i,range:a}},e.prototype.getFallbackDuration=function(){return tt({day:1})},e.prototype.adjustActiveRange=function(e){var t=this.props,n=t.dateEnv,r=t.usesMinMaxTime,o=t.slotMinTime,i=t.slotMaxTime,a=e.start,s=e.end;return r&&(at(o)<0&&(a=Pe(a),a=n.add(a,o)),at(i)>1&&(s=De(s=Pe(s),-1),s=n.add(s,i))),{start:a,end:s}},e.prototype.buildRangeFromDuration=function(e,t,n,r){var o,i,a,s=this.props,l=s.dateEnv,u=s.dateAlignment;if(!u){var c=this.props.dateIncrement;u=c&&ut(c)<ut(n)?dt(c).unit:r}function d(){o=l.startOf(e,u),i=l.add(o,n),a={start:o,end:i}}return at(n)<=1&&this.isHiddenDay(o)&&(o=Pe(o=this.skipHiddenDays(o,t))),d(),this.trimHiddenDays(a)||(e=this.skipHiddenDays(e,t),d()),a},e.prototype.buildRangeFromDayCount=function(e,t,n){var r,o=this.props,i=o.dateEnv,a=o.dateAlignment,s=0,l=e;a&&(l=i.startOf(l,a)),l=Pe(l),r=l=this.skipHiddenDays(l,t);do{r=De(r,1),this.isHiddenDay(r)||s++}while(s<n);return{start:l,end:r}},e.prototype.buildCustomVisibleRange=function(e){var t=this.props,n=t.visibleRangeInput,r="function"==typeof n?n.call(t.calendarApi,t.dateEnv.toDate(e)):n,o=this.refineRange(r);return!o||null!=o.start&&null!=o.end?o:null},e.prototype.buildRenderRange=function(e,t,n){return e},e.prototype.buildDateIncrement=function(e){var t,n=this.props.dateIncrement;return n||((t=this.props.dateAlignment)?tt(1,t):e||tt({days:1}))},e.prototype.refineRange=function(e){if(e){var t=(n=e,r=this.props.dateEnv,o=null,i=null,n.start&&(o=r.createMarker(n.start)),n.end&&(i=r.createMarker(n.end)),o||i?o&&i&&i<o?null:{start:o,end:i}:null);return t&&(t=cn(t)),t}var n,r,o,i;return null},e.prototype.initHiddenDays=function(){var e,t=this.props.hiddenDays||[],n=[],r=0;for(!1===this.props.weekends&&t.push(0,6),e=0;e<7;e++)(n[e]=-1!==t.indexOf(e))||r++;if(!r)throw new Error("invalid hiddenDays");this.isHiddenDayHash=n},e.prototype.trimHiddenDays=function(e){var t=e.start,n=e.end;return t&&(t=this.skipHiddenDays(t)),n&&(n=this.skipHiddenDays(n,-1,!0)),null==t||null==n||t<n?{start:t,end:n}:null},e.prototype.isHiddenDay=function(e){return e instanceof Date&&(e=e.getUTCDay()),this.isHiddenDayHash[e]},e.prototype.skipHiddenDays=function(e,t,n){for(void 0===t&&(t=1),void 0===n&&(n=!1);this.isHiddenDayHash[(e.getUTCDay()+(n?t:0)+7)%7];)e=De(e,t);return e},e}();function Oo(e,t,n){var r=t?t.activeRange:null;return Lo({},function(e,t){var n=Kn(t),r=[].concat(e.eventSources||[]),o=[];e.initialEvents&&r.unshift(e.initialEvents);e.events&&r.unshift(e.events);for(var i=0,a=r;i<a.length;i++){var s=Xn(a[i],t,n);s&&o.push(s)}return o}(e,n),r,n)}function Wo(e,t,n,o){var i,a,s=n?n.activeRange:null;switch(t.type){case"ADD_EVENT_SOURCES":return Lo(e,t.sources,s,o);case"REMOVE_EVENT_SOURCE":return i=e,a=t.sourceId,Ve(i,(function(e){return e.sourceId!==a}));case"PREV":case"NEXT":case"CHANGE_DATE":case"CHANGE_VIEW_TYPE":return n?Uo(e,s,o):e;case"FETCH_EVENT_SOURCES":return Bo(e,t.sourceIds?je(t.sourceIds):Vo(e,o),s,o);case"RECEIVE_EVENTS":case"RECEIVE_EVENT_ERROR":return function(e,t,n,o){var i,a=e[t];if(a&&n===a.latestFetchId)return r(r({},e),((i={})[t]=r(r({},a),{isFetching:!1,fetchRange:o}),i));return e}(e,t.sourceId,t.fetchId,t.fetchRange);case"REMOVE_ALL_EVENT_SOURCES":return{};default:return e}}function Ao(e){var t=0;for(var n in e)e[n].isFetching&&t++;return t}function Lo(e,t,n,o){for(var i={},a=0,s=t;a<s.length;a++){var l=s[a];i[l.sourceId]=l}return n&&(i=Uo(i,n,o)),r(r({},e),i)}function Uo(e,t,n){return Bo(e,Ve(e,(function(e){return function(e,t,n){return Fo(e,n)?!n.options.lazyFetching||!e.fetchRange||e.isFetching||t.start<e.fetchRange.start||t.end>e.fetchRange.end:!e.latestFetchId}(e,t,n)})),t,n)}function Bo(e,t,n,r){var o={};for(var i in e){var a=e[i];t[i]?o[i]=zo(a,n,r):o[i]=a}return o}function zo(e,t,n){var o=n.options,i=n.calendarApi,a=n.pluginHooks.eventSourceDefs[e.sourceDefId],s=ae();return a.fetch({eventSource:e,range:t,context:n},(function(r){var a=r.rawEvents;o.eventSourceSuccess&&(a=o.eventSourceSuccess.call(i,a,r.xhr)||a),e.success&&(a=e.success.call(i,a,r.xhr)||a),n.dispatch({type:"RECEIVE_EVENTS",sourceId:e.sourceId,fetchId:s,fetchRange:t,rawEvents:a})}),(function(r){console.warn(r.message,r),o.eventSourceFailure&&o.eventSourceFailure.call(i,r),e.failure&&e.failure(r),n.dispatch({type:"RECEIVE_EVENT_ERROR",sourceId:e.sourceId,fetchId:s,fetchRange:t,error:r})})),r(r({},e),{isFetching:!0,latestFetchId:s})}function Vo(e,t){return Ve(e,(function(e){return Fo(e,t)}))}function Fo(e,t){return!t.pluginHooks.eventSourceDefs[e.sourceDefId].ignoreRange}function jo(e,t){switch(t.type){case"UNSELECT_DATES":return null;case"SELECT_DATES":return t.selection;default:return e}}function Go(e,t){switch(t.type){case"UNSELECT_EVENT":return"";case"SELECT_EVENT":return t.eventInstanceId;default:return e}}function qo(e,t){var n;switch(t.type){case"UNSET_EVENT_DRAG":return null;case"SET_EVENT_DRAG":return{affectedEvents:(n=t.state).affectedEvents,mutatedEvents:n.mutatedEvents,isEvent:n.isEvent};default:return e}}function Yo(e,t){var n;switch(t.type){case"UNSET_EVENT_RESIZE":return null;case"SET_EVENT_RESIZE":return{affectedEvents:(n=t.state).affectedEvents,mutatedEvents:n.mutatedEvents,isEvent:n.isEvent};default:return e}}function Zo(e,t,n,r,o){var i=[];return{headerToolbar:e.headerToolbar?Xo(e.headerToolbar,e,t,n,r,o,i):null,footerToolbar:e.footerToolbar?Xo(e.footerToolbar,e,t,n,r,o,i):null,viewsWithButtons:i}}function Xo(e,t,n,r,o,i,a){return Fe(e,(function(e){return function(e,t,n,r,o,i,a){var s="rtl"===t.direction,l=t.customButtons||{},u=n.buttonText||{},c=t.buttonText||{};return(e?e.split(" "):[]).map((function(e){return e.split(",").map((function(e){if("title"===e)return{buttonName:e};var t,n=void 0,d=void 0,p=void 0,f=void 0;return(t=l[e])?(d=function(e){t.click&&t.click.call(e.target,e)},(p=r.getCustomButtonIconClass(t))||(p=r.getIconClass(e,s))||(f=t.text)):(n=o[e])?(a.push(e),d=function(){i.changeView(e)},(f=n.buttonTextOverride)||(p=r.getIconClass(e,s))||(f=n.buttonTextDefault)):i[e]&&(d=function(){i[e]()},(f=u[e])||(p=r.getIconClass(e,s))||(f=c[e])),{buttonName:e,buttonClick:d,buttonIcon:p,buttonText:f}}))}))}(e,t,n,r,o,i,a)}))}function Ko(e,t,n,r,o){var i=null;"GET"===(e=e.toUpperCase())?t=function(e,t){return e+(-1===e.indexOf("?")?"?":"&")+Jo(t)}(t,n):i=Jo(n);var a=new XMLHttpRequest;a.open(e,t,!0),"GET"!==e&&a.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),a.onload=function(){if(a.status>=200&&a.status<400){var e=!1,t=void 0;try{t=JSON.parse(a.responseText),e=!0}catch(e){}e?r(t,a):o("Failure parsing JSON",a)}else o("Request failed",a)},a.onerror=function(){o("Request failed",a)},a.send(i)}function Jo(e){var t=[];for(var n in e)t.push(encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t.join("&")}function $o(e,t){for(var n=Ge(t.getCurrentData().eventSources),r=[],o=0,i=e;o<i.length;o++){for(var a=i[o],s=!1,l=0;l<n.length;l++)if(n[l]._raw===a){n.splice(l,1),s=!0;break}s||r.push(a)}for(var u=0,c=n;u<c.length;u++){var d=c[u];t.dispatch({type:"REMOVE_EVENT_SOURCE",sourceId:d.sourceId})}for(var p=0,f=r;p<f.length;p++){var h=f[p];t.calendarApi.addEventSource(h)}}var Qo=[yo({eventSourceDefs:[{ignoreRange:!0,parseMeta:function(e){return Array.isArray(e.events)?e.events:null},fetch:function(e,t){t({rawEvents:e.eventSource.meta})}}]}),yo({eventSourceDefs:[{parseMeta:function(e){return"function"==typeof e.events?e.events:null},fetch:function(e,t,n){var r=e.context.dateEnv;Lr(e.eventSource.meta.bind(null,Ln(e.range,r)),(function(e){t({rawEvents:e})}),n)}}]}),yo({eventSourceRefiners:{method:String,extraParams:Vt,startParam:String,endParam:String,timeZoneParam:String},eventSourceDefs:[{parseMeta:function(e){return e.url?{url:e.url,method:(e.method||"GET").toUpperCase(),extraParams:e.extraParams,startParam:e.startParam,endParam:e.endParam,timeZoneParam:e.timeZoneParam}:null},fetch:function(e,t,n){var o=e.eventSource.meta,i=function(e,t,n){var o,i,a,s,l=n.dateEnv,u=n.options,c={};null==(o=e.startParam)&&(o=u.startParam);null==(i=e.endParam)&&(i=u.endParam);null==(a=e.timeZoneParam)&&(a=u.timeZoneParam);s="function"==typeof e.extraParams?e.extraParams():e.extraParams||{};r(c,s),c[o]=l.formatIso(t.start),c[i]=l.formatIso(t.end),"local"!==l.timeZone&&(c[a]=l.timeZone);return c}(o,e.range,e.context);Ko(o.method,o.url,i,(function(e,n){t({rawEvents:e,xhr:n})}),(function(e,t){n({message:e,xhr:t})}))}}]}),yo({recurringTypes:[{parse:function(e,t){if(e.daysOfWeek||e.startTime||e.endTime||e.startRecur||e.endRecur){var n={daysOfWeek:e.daysOfWeek||null,startTime:e.startTime||null,endTime:e.endTime||null,startRecur:e.startRecur?t.createMarker(e.startRecur):null,endRecur:e.endRecur?t.createMarker(e.endRecur):null},r=void 0;return e.duration&&(r=e.duration),!r&&e.startTime&&e.endTime&&(o=e.endTime,i=e.startTime,r={years:o.years-i.years,months:o.months-i.months,days:o.days-i.days,milliseconds:o.milliseconds-i.milliseconds}),{allDayGuess:Boolean(!e.startTime&&!e.endTime),duration:r,typeData:n}}var o,i;return null},expand:function(e,t,n){var r=gn(t,{start:e.startRecur,end:e.endRecur});return r?function(e,t,n,r){var o=e?je(e):null,i=Pe(n.start),a=n.end,s=[];for(;i<a;){var l=void 0;o&&!o[i.getUTCDay()]||(l=t?r.add(i,t):i,s.push(l)),i=De(i,1)}return s}(e.daysOfWeek,e.startTime,r,n):[]}}],eventRefiners:{daysOfWeek:Vt,startTime:tt,endTime:tt,duration:tt,startRecur:Vt,endRecur:Vt}}),yo({optionChangeHandlers:{events:function(e,t){$o([e],t)},eventSources:$o}}),yo({contentTypeHandlers:{html:function(){return F},domNodes:function(){return j}},propSetHandlers:{dateProfile:function(e,t){t.emitter.trigger("datesSet",r(r({},Ln(e.activeRange,t.dateEnv)),{view:t.viewApi}))},eventStore:function(e,t){var n=t.emitter;n.hasHandlers("eventsSet")&&n.trigger("eventsSet",tr(e,t))}}})],ei=function(){function e(e){this.drainedOption=e,this.isRunning=!1,this.isDirty=!1,this.pauseDepths={},this.timeoutId=0}return e.prototype.request=function(e){this.isDirty=!0,this.isPaused()||(this.clearTimeout(),null==e?this.tryDrain():this.timeoutId=setTimeout(this.tryDrain.bind(this),e))},e.prototype.pause=function(e){void 0===e&&(e="");var t=this.pauseDepths;t[e]=(t[e]||0)+1,this.clearTimeout()},e.prototype.resume=function(e,t){void 0===e&&(e="");var n=this.pauseDepths;if(e in n){if(t)delete n[e];else--n[e]<=0&&delete n[e];this.tryDrain()}},e.prototype.isPaused=function(){return Object.keys(this.pauseDepths).length},e.prototype.tryDrain=function(){if(!this.isRunning&&!this.isPaused()){for(this.isRunning=!0;this.isDirty;)this.isDirty=!1,this.drained();this.isRunning=!1}},e.prototype.clear=function(){this.clearTimeout(),this.isDirty=!1,this.pauseDepths={}},e.prototype.clearTimeout=function(){this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=0)},e.prototype.drained=function(){this.drainedOption&&this.drainedOption()},e}(),ti=function(){function e(e,t){this.runTaskOption=e,this.drainedOption=t,this.queue=[],this.delayedRunner=new ei(this.drain.bind(this))}return e.prototype.request=function(e,t){this.queue.push(e),this.delayedRunner.request(t)},e.prototype.pause=function(e){this.delayedRunner.pause(e)},e.prototype.resume=function(e,t){this.delayedRunner.resume(e,t)},e.prototype.drain=function(){for(var e=this.queue;e.length;){for(var t=[],n=void 0;n=e.shift();)this.runTask(n),t.push(n);this.drained(t)}},e.prototype.runTask=function(e){this.runTaskOption&&this.runTaskOption(e)},e.prototype.drained=function(e){this.drainedOption&&this.drainedOption(e)},e}();function ni(e,t,n){var r;return r=/^(year|month)$/.test(e.currentRangeUnit)?e.currentRange:e.activeRange,n.formatRange(r.start,r.end,Nt(t.titleFormat||function(e){var t=e.currentRangeUnit;if("year"===t)return{year:"numeric"};if("month"===t)return{year:"numeric",month:"long"};var n=Me(e.currentRange.start,e.currentRange.end);return null!==n&&n>1?{year:"numeric",month:"short",day:"numeric"}:{year:"numeric",month:"long",day:"numeric"}}(e)),{isEndExclusive:e.isRangeAllDay,defaultSeparator:t.titleRangeSeparator})}var ri=function(){function e(e){var t=this;this.computeOptionsData=gt(this._computeOptionsData),this.computeCurrentViewData=gt(this._computeCurrentViewData),this.organizeRawLocales=gt(cr),this.buildLocale=gt(dr),this.buildPluginHooks=So(),this.buildDateEnv=gt(oi),this.buildTheme=gt(ii),this.parseToolbars=gt(Zo),this.buildViewSpecs=gt(No),this.buildDateProfileGenerator=vt(ai),this.buildViewApi=gt(si),this.buildViewUiProps=vt(ci),this.buildEventUiBySource=gt(li,qe),this.buildEventUiBases=gt(ui),this.parseContextBusinessHours=vt(di),this.buildTitle=gt(ni),this.emitter=new Ur,this.actionRunner=new ti(this._handleAction.bind(this),this.updateData.bind(this)),this.currentCalendarOptionsInput={},this.currentCalendarOptionsRefined={},this.currentViewOptionsInput={},this.currentViewOptionsRefined={},this.currentCalendarOptionsRefiners={},this.getCurrentData=function(){return t.data},this.dispatch=function(e){t.actionRunner.request(e)},this.props=e,this.actionRunner.pause();var n={},o=this.computeOptionsData(e.optionOverrides,n,e.calendarApi),i=o.calendarOptions.initialView||o.pluginHooks.initialView,a=this.computeCurrentViewData(i,o,e.optionOverrides,n);e.calendarApi.currentDataManager=this,this.emitter.setThisContext(e.calendarApi),this.emitter.setOptions(a.options);var s,l,u,c=(s=o.calendarOptions,l=o.dateEnv,null!=(u=s.initialDate)?l.createMarker(u):Jn(s.now,l)),d=a.dateProfileGenerator.build(c);Sn(d.activeRange,c)||(c=d.currentRange.start);for(var p={dateEnv:o.dateEnv,options:o.calendarOptions,pluginHooks:o.pluginHooks,calendarApi:e.calendarApi,dispatch:this.dispatch,emitter:this.emitter,getCurrentData:this.getCurrentData},f=0,h=o.pluginHooks.contextInit;f<h.length;f++){(0,h[f])(p)}for(var g=Oo(o.calendarOptions,d,p),v={dynamicOptionOverrides:n,currentViewType:i,currentDate:c,dateProfile:d,businessHours:this.parseContextBusinessHours(p),eventSources:g,eventUiBases:{},loadingLevel:Ao(g),eventStore:{defs:{},instances:{}},renderableEventStore:{defs:{},instances:{}},dateSelection:null,eventSelection:"",eventDrag:null,eventResize:null,selectionConfig:this.buildViewUiProps(p).selectionConfig},m=r(r({},p),v),y=0,S=o.pluginHooks.reducers;y<S.length;y++){var E=S[y];r(v,E(null,null,m))}v.loadingLevel&&this.emitter.trigger("loading",!0),this.state=v,this.updateData(),this.actionRunner.resume()}return e.prototype.resetOptions=function(e,t){var n=this.props;n.optionOverrides=t?r(r({},n.optionOverrides),e):e,this.actionRunner.request({type:"NOTHING"})},e.prototype._handleAction=function(e){var t=this.props,n=this.state,o=this.emitter,i=function(e,t){var n;switch(t.type){case"SET_OPTION":return r(r({},e),((n={})[t.optionName]=t.rawOptionValue,n));default:return e}}(n.dynamicOptionOverrides,e),a=this.computeOptionsData(t.optionOverrides,i,t.calendarApi),s=function(e,t){switch(t.type){case"CHANGE_VIEW_TYPE":return t.viewType}return e}(n.currentViewType,e),l=this.computeCurrentViewData(s,a,t.optionOverrides,i);t.calendarApi.currentDataManager=this,o.setThisContext(t.calendarApi),o.setOptions(l.options);var u={dateEnv:a.dateEnv,options:a.calendarOptions,pluginHooks:a.pluginHooks,calendarApi:t.calendarApi,dispatch:this.dispatch,emitter:o,getCurrentData:this.getCurrentData},c=n.currentDate,d=n.dateProfile;this.data&&this.data.dateProfileGenerator!==l.dateProfileGenerator&&(d=l.dateProfileGenerator.build(c)),d=function(e,t,n,r){var o;switch(t.type){case"CHANGE_VIEW_TYPE":return r.build(t.dateMarker||n);case"CHANGE_DATE":if(!e.activeRange||!Sn(e.currentRange,t.dateMarker))return r.build(t.dateMarker);break;case"PREV":if((o=r.buildPrev(e,n)).isValid)return o;break;case"NEXT":if((o=r.buildNext(e,n)).isValid)return o}return e}(d,e,c=function(e,t){switch(t.type){case"CHANGE_DATE":return t.dateMarker;default:return e}}(c,e),l.dateProfileGenerator),Sn(d.currentRange,c)||(c=d.currentRange.start);for(var p=Wo(n.eventSources,e,d,u),f=Ao(p),h=ao(n.eventStore,e,p,d,u),g=f&&!l.options.progressiveEventRendering&&n.renderableEventStore||h,v=this.buildViewUiProps(u),m=v.eventUiSingleBase,y=v.selectionConfig,S=this.buildEventUiBySource(p),E=this.buildEventUiBases(g.defs,m,S),C=n.loadingLevel||0,b=f,D={dynamicOptionOverrides:i,currentViewType:s,currentDate:c,dateProfile:d,eventSources:p,eventStore:h,renderableEventStore:g,selectionConfig:y,eventUiBases:E,loadingLevel:b,businessHours:this.parseContextBusinessHours(u),dateSelection:jo(n.dateSelection,e),eventSelection:Go(n.eventSelection,e),eventDrag:qo(n.eventDrag,e),eventResize:Yo(n.eventResize,e)},R=r(r({},u),D),w=0,T=a.pluginHooks.reducers;w<T.length;w++){var x=T[w];r(D,x(n,e,R))}!C&&b?o.trigger("loading",!0):C&&!b&&o.trigger("loading",!1),this.state=D,t.onAction&&t.onAction(e)},e.prototype.updateData=function(){var e,t,n,o,i=this.props,a=this.state,s=this.data,l=this.computeOptionsData(i.optionOverrides,a.dynamicOptionOverrides,i.calendarApi),u=this.computeCurrentViewData(a.currentViewType,l,i.optionOverrides,a.dynamicOptionOverrides),c=this.data=r(r(r({viewTitle:this.buildTitle(a.dateProfile,u.options,l.dateEnv),calendarApi:i.calendarApi,dispatch:this.dispatch,emitter:this.emitter,getCurrentData:this.getCurrentData},l),u),a),d=l.pluginHooks.optionChangeHandlers,p=s&&s.calendarOptions,f=l.calendarOptions;if(p&&p!==f)for(var h in p.timeZone!==f.timeZone&&(a.eventSources=c.eventSources=(e=c.eventSources,t=a.dateProfile,n=c,o=t?t.activeRange:null,Bo(e,Vo(e,n),o,n)),a.eventStore=c.eventStore=function(e,t,n){var o=e.defs,i=Fe(e.instances,(function(e){var i=o[e.defId];return i.allDay||i.recurringDef?e:r(r({},e),{range:{start:n.createMarker(t.toDate(e.range.start,e.forcedStartTzo)),end:n.createMarker(t.toDate(e.range.end,e.forcedEndTzo))},forcedStartTzo:n.canComputeOffset?null:e.forcedStartTzo,forcedEndTzo:n.canComputeOffset?null:e.forcedEndTzo})}));return{defs:o,instances:i}}(c.eventStore,s.dateEnv,c.dateEnv)),d)p[h]!==f[h]&&d[h](f[h],c);i.onData&&i.onData(c)},e.prototype._computeOptionsData=function(e,t,n){var r=this.processRawCalendarOptions(e,t),o=r.refinedOptions,i=r.pluginHooks,a=r.localeDefaults,s=r.availableLocaleData;pi(r.extra);var l=this.buildDateEnv(o.timeZone,o.locale,o.weekNumberCalculation,o.firstDay,o.weekText,i,s,o.defaultRangeSeparator),u=this.buildViewSpecs(i.views,e,t,a),c=this.buildTheme(o,i);return{calendarOptions:o,pluginHooks:i,dateEnv:l,viewSpecs:u,theme:c,toolbarConfig:this.parseToolbars(o,e,c,u,n),localeDefaults:a,availableRawLocales:s.map}},e.prototype.processRawCalendarOptions=function(e,t){var n=Bt([Ht,e,t]),o=n.locales,i=n.locale,a=this.organizeRawLocales(o),s=a.map,l=this.buildLocale(i||a.defaultCode,s).options,u=this.buildPluginHooks(e.plugins||[],Qo),c=this.currentCalendarOptionsRefiners=r(r(r(r(r({},_t),Ot),Wt),u.listenerRefiners),u.optionRefiners),d={},p=Bt([Ht,l,e,t]),f={},h=this.currentCalendarOptionsInput,g=this.currentCalendarOptionsRefined,v=!1;for(var m in p)"plugins"!==m&&(p[m]===h[m]||At[m]&&m in h&&At[m](h[m],p[m])?f[m]=g[m]:c[m]?(f[m]=c[m](p[m]),v=!0):d[m]=h[m]);return v&&(this.currentCalendarOptionsInput=p,this.currentCalendarOptionsRefined=f),{rawOptions:this.currentCalendarOptionsInput,refinedOptions:this.currentCalendarOptionsRefined,pluginHooks:u,availableLocaleData:a,localeDefaults:l,extra:d}},e.prototype._computeCurrentViewData=function(e,t,n,r){var o=t.viewSpecs[e];if(!o)throw new Error('viewType "'+e+"\" is not available. Please make sure you've loaded all neccessary plugins");var i=this.processRawViewOptions(o,t.pluginHooks,t.localeDefaults,n,r),a=i.refinedOptions;return pi(i.extra),{viewSpec:o,options:a,dateProfileGenerator:this.buildDateProfileGenerator({dateProfileGeneratorClass:o.optionDefaults.dateProfileGeneratorClass,duration:o.duration,durationUnit:o.durationUnit,usesMinMaxTime:o.optionDefaults.usesMinMaxTime,dateEnv:t.dateEnv,calendarApi:this.props.calendarApi,slotMinTime:a.slotMinTime,slotMaxTime:a.slotMaxTime,showNonCurrentDates:a.showNonCurrentDates,dayCount:a.dayCount,dateAlignment:a.dateAlignment,dateIncrement:a.dateIncrement,hiddenDays:a.hiddenDays,weekends:a.weekends,nowInput:a.now,validRangeInput:a.validRange,visibleRangeInput:a.visibleRange,monthMode:a.monthMode,fixedWeekCount:a.fixedWeekCount}),viewApi:this.buildViewApi(e,this.getCurrentData,t.dateEnv)}},e.prototype.processRawViewOptions=function(e,t,n,o,i){var a=Bt([Ht,e.optionDefaults,n,o,e.optionOverrides,i]),s=r(r(r(r(r(r({},_t),Ot),Wt),Ut),t.listenerRefiners),t.optionRefiners),l={},u=this.currentViewOptionsInput,c=this.currentViewOptionsRefined,d=!1,p={};for(var f in a)a[f]===u[f]?l[f]=c[f]:(a[f]===this.currentCalendarOptionsInput[f]?f in this.currentCalendarOptionsRefined&&(l[f]=this.currentCalendarOptionsRefined[f]):s[f]?l[f]=s[f](a[f]):p[f]=a[f],d=!0);return d&&(this.currentViewOptionsInput=a,this.currentViewOptionsRefined=l),{rawOptions:this.currentViewOptionsInput,refinedOptions:this.currentViewOptionsRefined,extra:p}},e}();function oi(e,t,n,r,o,i,a,s){var l=dr(t||a.defaultCode,a.map);return new sr({calendarSystem:"gregory",timeZone:e,namedTimeZoneImpl:i.namedTimeZonedImpl,locale:l,weekNumberCalculation:n,firstDay:r,weekText:o,cmdFormatter:i.cmdFormatter,defaultSeparator:s})}function ii(e,t){return new(t.themeClasses[e.themeSystem]||Eo)(e)}function ai(e){return new(e.dateProfileGeneratorClass||Ho)(e)}function si(e,t,n){return new Yn(e,t,n)}function li(e){return Fe(e,(function(e){return e.ui}))}function ui(e,t,n){var r={"":t};for(var o in e){var i=e[o];i.sourceId&&n[i.sourceId]&&(r[o]=n[i.sourceId])}return r}function ci(e){var t=e.options;return{eventUiSingleBase:Jt({display:t.eventDisplay,editable:t.editable,startEditable:t.eventStartEditable,durationEditable:t.eventDurationEditable,constraint:t.eventConstraint,overlap:"boolean"==typeof t.eventOverlap?t.eventOverlap:void 0,allow:t.eventAllow,backgroundColor:t.eventBackgroundColor,borderColor:t.eventBorderColor,textColor:t.eventTextColor,color:t.eventColor},e),selectionConfig:Jt({constraint:t.selectConstraint,overlap:"boolean"==typeof t.selectOverlap?t.selectOverlap:void 0,allow:t.selectAllow},e)}}function di(e){return gr(e.options.businessHours,e)}function pi(e,t){for(var n in e)console.warn("Unknown option '"+n+"'"+(t?" for view '"+t+"'":""))}var fi=function(e){function t(t){var n=e.call(this,t)||this;return n.handleData=function(e){n.dataManager?n.setState(e):n.state=e},n.dataManager=new ri({optionOverrides:t.optionOverrides,calendarApi:t.calendarApi,onData:n.handleData}),n}return n(t,e),t.prototype.render=function(){return this.props.children(this.state)},t.prototype.componentDidUpdate=function(e){var t=this.props.optionOverrides;t!==e.optionOverrides&&this.dataManager.resetOptions(t)},t}(Gr);var hi=function(e){this.timeZoneName=e},gi=function(){function e(e){this.component=e.component}return e.prototype.destroy=function(){},e}();function vi(e,t){return{component:e,el:t.el,useEventCenter:null==t.useEventCenter||t.useEventCenter}}function mi(e){var t;return(t={})[e.component.uid]=e,t}var yi={},Si=function(){function e(e,t){this.emitter=new Ur}return e.prototype.destroy=function(){},e.prototype.setMirrorIsVisible=function(e){},e.prototype.setMirrorNeedsRevert=function(e){},e.prototype.setAutoScrollEnabled=function(e){},e}(),Ei={},Ci={startTime:tt,duration:tt,create:Boolean,sourceId:String};function bi(e){var t=zt(e,Ci),n=t.refined,r=t.extra;return{startTime:n.startTime||null,duration:n.duration||null,create:null==n.create||n.create,sourceId:n.sourceId,leftoverProps:r}}var Di,Ri=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e,t,n=this.props,r=n.model,o=n.extraClassName,i=!1,a=r.center;return r.left?(i=!0,e=r.left):e=r.start,r.right?(i=!0,t=r.right):t=r.end,qr("div",{className:[o||"","fc-toolbar",i?"fc-toolbar-ltr":""].join(" ")},this.renderSection("start",e||[]),this.renderSection("center",a||[]),this.renderSection("end",t||[]))},t.prototype.renderSection=function(e,t){var n=this.props;return qr(wi,{key:e,widgetGroups:t,title:n.title,activeButton:n.activeButton,isTodayEnabled:n.isTodayEnabled,isPrevEnabled:n.isPrevEnabled,isNextEnabled:n.isNextEnabled})},t}(no),wi=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this,t=this.props.widgetGroups.map((function(t){return e.renderWidgetGroup(t)}));return qr.apply(void 0,o(["div",{className:"fc-toolbar-chunk"}],t))},t.prototype.renderWidgetGroup=function(e){for(var t=this.props,n=this.context.theme,i=[],a=!0,s=0,l=e;s<l.length;s++){var u=l[s],c=u.buttonName,d=u.buttonClick,p=u.buttonText,f=u.buttonIcon;if("title"===c)a=!1,i.push(qr("h2",{className:"fc-toolbar-title"},t.title));else{var h=f?{"aria-label":c}:{},g=["fc-"+c+"-button",n.getClass("button")];c===t.activeButton&&g.push(n.getClass("buttonActive"));var v=!t.isTodayEnabled&&"today"===c||!t.isPrevEnabled&&"prev"===c||!t.isNextEnabled&&"next"===c;i.push(qr("button",r({disabled:v,className:g.join(" "),onClick:d,type:"button"},h),p||(f?qr("span",{className:f}):"")))}}if(i.length>1){var m=a&&n.getClass("buttonGroup")||"";return qr.apply(void 0,o(["div",{className:m}],i))}return i[0]},t}(no),Ti=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=e.aspectRatio,n=["fc-view-harness",t||e.liquid||e.height?"fc-view-harness-active":"fc-view-harness-passive"],r="",o="";return t?o=1/t*100+"%":r=e.height||"",qr("div",{ref:e.elRef,onClick:e.onClick,className:n.join(" "),style:{height:r,paddingBottom:o}},e.children)},t}(no),xi=function(e){function t(t){var n=e.call(this,t)||this;return n.handleSegClick=function(e,t){var r=n.component,o=r.context,i=Dn(t);if(i&&r.isValidSegDownEl(e.target)){var a=Y(e.target,".fc-event-forced-url"),s=a?a.querySelector("a[href]").href:"";o.emitter.trigger("eventClick",{el:t,event:new Qn(r.context,i.eventRange.def,i.eventRange.instance),jsEvent:e,view:o.viewApi}),s&&!e.defaultPrevented&&(window.location.href=s)}},n.destroy=ne(t.el,"click",".fc-event",n.handleSegClick),n}return n(t,e),t}(gi),ki=function(e){function t(t){var n,r,o,i,a,s=e.call(this,t)||this;return s.handleEventElRemove=function(e){e===s.currentSegEl&&s.handleSegLeave(null,s.currentSegEl)},s.handleSegEnter=function(e,t){Dn(t)&&(s.currentSegEl=t,s.triggerEvent("eventMouseEnter",e,t))},s.handleSegLeave=function(e,t){s.currentSegEl&&(s.currentSegEl=null,s.triggerEvent("eventMouseLeave",e,t))},s.removeHoverListeners=(n=t.el,r=".fc-event",o=s.handleSegEnter,i=s.handleSegLeave,ne(n,"mouseover",r,(function(e,t){if(t!==a){a=t,o(e,t);var n=function(e){a=null,i(e,t),t.removeEventListener("mouseleave",n)};t.addEventListener("mouseleave",n)}}))),s}return n(t,e),t.prototype.destroy=function(){this.removeHoverListeners()},t.prototype.triggerEvent=function(e,t,n){var r=this.component,o=r.context,i=Dn(n);t&&!r.isValidSegDownEl(t.target)||o.emitter.trigger(e,{el:n,event:new Qn(o,i.eventRange.def,i.eventRange.instance),jsEvent:t,view:o.viewApi})},t}(gi),Mi=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buildViewContext=gt(eo),t.buildViewPropTransformers=gt(Ii),t.buildToolbarProps=gt(Pi),t.handleNavLinkClick=te("a[data-navlink]",t._handleNavLinkClick.bind(t)),t.headerRef=Zr(),t.footerRef=Zr(),t.interactionsStore={},t.registerInteractiveComponent=function(e,n){var r=vi(e,n),o=[xi,ki].concat(t.props.pluginHooks.componentInteractions).map((function(e){return new e(r)}));t.interactionsStore[e.uid]=o,yi[e.uid]=r},t.unregisterInteractiveComponent=function(e){for(var n=0,r=t.interactionsStore[e.uid];n<r.length;n++){r[n].destroy()}delete t.interactionsStore[e.uid],delete yi[e.uid]},t.resizeRunner=new ei((function(){t.props.emitter.trigger("_resize",!0),t.props.emitter.trigger("windowResize",{view:t.props.viewApi})})),t.handleWindowResize=function(e){var n=t.props.options;n.handleWindowResize&&e.target===window&&t.resizeRunner.request(n.windowResizeDelay)},t}return n(t,e),t.prototype.render=function(){var e,t=this.props,n=t.toolbarConfig,o=t.options,i=this.buildToolbarProps(t.viewSpec,t.dateProfile,t.dateProfileGenerator,t.currentDate,Jn(t.options.now,t.dateEnv),t.viewTitle),a=!1,s="";t.isHeightAuto||t.forPrint?s="":null!=o.height?a=!0:null!=o.contentHeight?s=o.contentHeight:e=Math.max(o.aspectRatio,.5);var l=this.buildViewContext(t.viewSpec,t.viewApi,t.options,t.dateProfileGenerator,t.dateEnv,t.theme,t.pluginHooks,t.dispatch,t.getCurrentData,t.emitter,t.calendarApi,this.registerInteractiveComponent,this.unregisterInteractiveComponent);return qr(Qr.Provider,{value:l},n.headerToolbar&&qr(Ri,r({ref:this.headerRef,extraClassName:"fc-header-toolbar",model:n.headerToolbar},i)),qr(Ti,{liquid:a,height:s,aspectRatio:e,onClick:this.handleNavLinkClick},this.renderView(t),this.buildAppendContent()),n.footerToolbar&&qr(Ri,r({ref:this.footerRef,extraClassName:"fc-footer-toolbar",model:n.footerToolbar},i)))},t.prototype.componentDidMount=function(){var e=this.props;this.calendarInteractions=e.pluginHooks.calendarInteractions.map((function(t){return new t(e)})),window.addEventListener("resize",this.handleWindowResize);var t=e.pluginHooks.propSetHandlers;for(var n in t)t[n](e[n],e)},t.prototype.componentDidUpdate=function(e){var t=this.props,n=t.pluginHooks.propSetHandlers;for(var r in n)t[r]!==e[r]&&n[r](t[r],t)},t.prototype.componentWillUnmount=function(){window.removeEventListener("resize",this.handleWindowResize),this.resizeRunner.clear();for(var e=0,t=this.calendarInteractions;e<t.length;e++){t[e].destroy()}this.props.emitter.trigger("_unmount")},t.prototype._handleNavLinkClick=function(e,t){var n=this.props,r=n.dateEnv,o=n.options,i=n.calendarApi,a=t.getAttribute("data-navlink");a=a?JSON.parse(a):{};var s=r.createMarker(a.date),l=a.type,u="day"===l?o.navLinkDayClick:"week"===l?o.navLinkWeekClick:null;"function"==typeof u?u.call(i,r.toDate(s),e):("string"==typeof u&&(l=u),i.zoomTo(s,l))},t.prototype.buildAppendContent=function(){var e=this.props,t=e.pluginHooks.viewContainerAppends.map((function(t){return t(e)}));return qr.apply(void 0,o([Xr,{}],t))},t.prototype.renderView=function(e){for(var t=e.pluginHooks,n=e.viewSpec,o={dateProfile:e.dateProfile,businessHours:e.businessHours,eventStore:e.renderableEventStore,eventUiBases:e.eventUiBases,dateSelection:e.dateSelection,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,isHeightAuto:e.isHeightAuto,forPrint:e.forPrint},i=0,a=this.buildViewPropTransformers(t.viewPropsTransformers);i<a.length;i++){var s=a[i];r(o,s.transform(o,e))}var l=n.component;return qr(l,r({},o))},t}(to);function Pi(e,t,n,r,o,i){var a=n.build(o,void 0,!1),s=n.buildPrev(t,r,!1),l=n.buildNext(t,r,!1);return{title:i,activeButton:e.type,isTodayEnabled:a.isValid&&!Sn(t.currentRange,o),isPrevEnabled:s.isValid,isNextEnabled:l.isValid}}function Ii(e){return e.map((function(e){return new e}))}function Ni(){return null==Di&&(Di=function(){var e=document.createElement("div");e.style.position="absolute",e.style.top="0",e.style.left="0",e.innerHTML='<table style="height:100px"><tr><td><div style="height:100%"></div></td></tr></table>',document.body.appendChild(e);var t=e.querySelector("div").offsetHeight>0;return document.body.removeChild(e),t}()),Di}var _i=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={forPrint:!1},t.handleBeforePrint=function(){t.setState({forPrint:!0})},t.handleAfterPrint=function(){t.setState({forPrint:!1})},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=e.options,n=this.state.forPrint,r=n||"auto"===t.height||"auto"===t.contentHeight,o=r||null==t.height?"":t.height,i=["fc",n?"fc-media-print":"fc-media-screen","fc-direction-"+t.direction,e.theme.getClass("root")];return Ni()||i.push("fc-liquid-hack"),e.children(i,o,r,n)},t.prototype.componentDidMount=function(){var e=this.props.emitter;e.on("_beforeprint",this.handleBeforePrint),e.on("_afterprint",this.handleAfterPrint)},t.prototype.componentWillUnmount=function(){var e=this.props.emitter;e.off("_beforeprint",this.handleBeforePrint),e.off("_afterprint",this.handleAfterPrint)},t}(no);function Hi(e,t){return Nt(!e||t>10?{weekday:"short"}:t>1?{weekday:"short",month:"numeric",day:"numeric",omitCommas:!0}:{weekday:"long"})}var Oi="fc-col-header-cell",Wi=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.context,t=e.dateEnv,n=e.options,o=e.theme,i=e.viewApi,a=this.props,s=a.date,l=a.dateProfile,u=wr(s,a.todayRange,null,l),c=[Oi].concat(Tr(u,o)),d=t.format(s,a.dayHeaderFormat),p=n.navLinks&&!u.isDisabled&&a.colCnt>1?{"data-navlink":kr(s),tabIndex:0}:{},f=r(r(r({date:t.toDate(s),view:i},a.extraHookProps),{text:d}),u);return qr(bo,{hookProps:f,classNames:n.dayHeaderClassNames,content:n.dayHeaderContent,defaultContent:Li,didMount:n.dayHeaderDidMount,willUnmount:n.dayHeaderWillUnmount},(function(e,t,n,o){return qr("th",r({ref:e,className:c.concat(t).join(" "),"data-date":u.isDisabled?void 0:pt(s),colSpan:a.colSpan},a.extraDataAttrs),qr("div",{className:"fc-scrollgrid-sync-inner"},!u.isDisabled&&qr("a",r({ref:n,className:["fc-col-header-cell-cushion",a.isSticky?"fc-sticky":""].join(" ")},p),o)))}))},t}(no),Ai=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.dateEnv,o=t.theme,i=t.viewApi,a=t.options,s=De(new Date(2592e5),e.dow),l={dow:e.dow,isDisabled:!1,isFuture:!1,isPast:!1,isToday:!1,isOther:!1},u=[Oi].concat(Tr(l,o),e.extraClassNames||[]),c=n.format(s,e.dayHeaderFormat),d=r(r(r(r({date:s},l),{view:i}),e.extraHookProps),{text:c});return qr(bo,{hookProps:d,classNames:a.dayHeaderClassNames,content:a.dayHeaderContent,defaultContent:Li,didMount:a.dayHeaderDidMount,willUnmount:a.dayHeaderWillUnmount},(function(t,n,o,i){return qr("th",r({ref:t,className:u.concat(n).join(" "),colSpan:e.colSpan},e.extraDataAttrs),qr("div",{className:"fc-scrollgrid-sync-inner"},qr("a",{className:["fc-col-header-cell-cushion",e.isSticky?"fc-sticky":""].join(" "),ref:o},i)))}))},t}(no);function Li(e){return e.text}var Ui=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.initialNowDate=Jn(n.options.now,n.dateEnv),r.initialNowQueriedMs=(new Date).valueOf(),r.state=r.computeTiming().currentState,r}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.state;return e.children(t.nowDate,t.todayRange)},t.prototype.componentDidMount=function(){this.setTimeout()},t.prototype.componentDidUpdate=function(e){e.unit!==this.props.unit&&(this.clearTimeout(),this.setTimeout())},t.prototype.componentWillUnmount=function(){this.clearTimeout()},t.prototype.computeTiming=function(){var e=this.props,t=this.context,n=Re(this.initialNowDate,(new Date).valueOf()-this.initialNowQueriedMs),r=t.dateEnv.startOf(n,e.unit),o=t.dateEnv.add(r,tt(1,e.unit)),i=o.valueOf()-n.valueOf();return{currentState:{nowDate:r,todayRange:Bi(r)},nextState:{nowDate:o,todayRange:Bi(o)},waitMs:i}},t.prototype.setTimeout=function(){var e=this,t=this.computeTiming(),n=t.nextState,r=t.waitMs;this.timeoutId=setTimeout((function(){e.setState(n,(function(){e.setTimeout()}))}),r)},t.prototype.clearTimeout=function(){this.timeoutId&&clearTimeout(this.timeoutId)},t.contextType=Qr,t}(Gr);function Bi(e){var t=Pe(e);return{start:t,end:De(t,1)}}var zi=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.createDayHeaderFormatter=gt(Vi),t}return n(t,e),t.prototype.render=function(){var e=this.context,t=this.props,n=t.dates,r=t.dateProfile,o=t.datesRepDistinctDays,i=t.renderIntro,a=this.createDayHeaderFormatter(e.options.dayHeaderFormat,o,n.length);return qr(Ui,{unit:"day"},(function(e,t){return qr("tr",null,i&&i(),n.map((function(e){return o?qr(Wi,{key:e.toISOString(),date:e,dateProfile:r,todayRange:t,colCnt:n.length,dayHeaderFormat:a}):qr(Ai,{key:e.getUTCDay(),dow:e.getUTCDay(),dayHeaderFormat:a})})))}))},t}(no);function Vi(e,t,n){return e||Hi(t,n)}var Fi=function(){function e(e,t){for(var n=e.start,r=e.end,o=[],i=[],a=-1;n<r;)t.isHiddenDay(n)?o.push(a+.5):(a++,o.push(a),i.push(n)),n=De(n,1);this.dates=i,this.indices=o,this.cnt=i.length}return e.prototype.sliceRange=function(e){var t=this.getDateDayIndex(e.start),n=this.getDateDayIndex(De(e.end,-1)),r=Math.max(0,t),o=Math.min(this.cnt-1,n);return(r=Math.ceil(r))<=(o=Math.floor(o))?{firstIndex:r,lastIndex:o,isStart:t===r,isEnd:n===o}:null},e.prototype.getDateDayIndex=function(e){var t=this.indices,n=Math.floor(Te(this.dates[0],e));return n<0?t[0]-1:n>=t.length?t[t.length-1]+1:t[n]},e}(),ji=function(){function e(e,t){var n,r,o,i=e.dates;if(t){for(r=i[0].getUTCDay(),n=1;n<i.length&&i[n].getUTCDay()!==r;n++);o=Math.ceil(i.length/n)}else o=1,n=i.length;this.rowCnt=o,this.colCnt=n,this.daySeries=e,this.cells=this.buildCells(),this.headerDates=this.buildHeaderDates()}return e.prototype.buildCells=function(){for(var e=[],t=0;t<this.rowCnt;t++){for(var n=[],r=0;r<this.colCnt;r++)n.push(this.buildCell(t,r));e.push(n)}return e},e.prototype.buildCell=function(e,t){var n=this.daySeries.dates[e*this.colCnt+t];return{key:n.toISOString(),date:n}},e.prototype.buildHeaderDates=function(){for(var e=[],t=0;t<this.colCnt;t++)e.push(this.cells[0][t].date);return e},e.prototype.sliceRange=function(e){var t=this.colCnt,n=this.daySeries.sliceRange(e),r=[];if(n)for(var o=n.firstIndex,i=n.lastIndex,a=o;a<=i;){var s=Math.floor(a/t),l=Math.min((s+1)*t,i+1);r.push({row:s,firstCol:a%t,lastCol:(l-1)%t,isStart:n.isStart&&a===o,isEnd:n.isEnd&&l-1===i}),a=l}return r},e}(),Gi=function(){function e(){this.sliceBusinessHours=gt(this._sliceBusinessHours),this.sliceDateSelection=gt(this._sliceDateSpan),this.sliceEventStore=gt(this._sliceEventStore),this.sliceEventDrag=gt(this._sliceInteraction),this.sliceEventResize=gt(this._sliceInteraction),this.forceDayIfListItem=!1}return e.prototype.sliceProps=function(e,t,n,r){for(var i=[],a=4;a<arguments.length;a++)i[a-4]=arguments[a];var s=e.eventUiBases,l=this.sliceEventStore.apply(this,o([e.eventStore,s,t,n],i));return{dateSelectionSegs:this.sliceDateSelection.apply(this,o([e.dateSelection,s,r],i)),businessHourSegs:this.sliceBusinessHours.apply(this,o([e.businessHours,t,n,r],i)),fgEventSegs:l.fg,bgEventSegs:l.bg,eventDrag:this.sliceEventDrag.apply(this,o([e.eventDrag,s,t,n],i)),eventResize:this.sliceEventResize.apply(this,o([e.eventResize,s,t,n],i)),eventSelection:e.eventSelection}},e.prototype.sliceNowDate=function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];return this._sliceDateSpan.apply(this,o([{range:{start:e,end:Re(e,1)},allDay:!1},{},t],n))},e.prototype._sliceBusinessHours=function(e,t,n,r){for(var i=[],a=4;a<arguments.length;a++)i[a-4]=arguments[a];return e?this._sliceEventStore.apply(this,o([Je(e,qi(t,Boolean(n)),r),{},t,n],i)).bg:[]},e.prototype._sliceEventStore=function(e,t,n,r){for(var o=[],i=4;i<arguments.length;i++)o[i-4]=arguments[i];if(e){var a=En(e,t,qi(n,Boolean(r)),r);return{bg:this.sliceEventRanges(a.bg,o),fg:this.sliceEventRanges(a.fg,o)}}return{bg:[],fg:[]}},e.prototype._sliceInteraction=function(e,t,n,r){for(var o=[],i=4;i<arguments.length;i++)o[i-4]=arguments[i];if(!e)return null;var a=En(e.mutatedEvents,t,qi(n,Boolean(r)),r);return{segs:this.sliceEventRanges(a.fg,o),affectedInstances:e.affectedEvents.instances,isEvent:e.isEvent}},e.prototype._sliceDateSpan=function(e,t,n){for(var r=[],i=3;i<arguments.length;i++)r[i-3]=arguments[i];if(!e)return[];for(var a=Bn(e,t,n),s=this.sliceRange.apply(this,o([e.range],r)),l=0,u=s;l<u.length;l++){var c=u[l];c.eventRange=a}return s},e.prototype.sliceEventRanges=function(e,t){for(var n=[],r=0,o=e;r<o.length;r++){var i=o[r];n.push.apply(n,this.sliceEventRange(i,t))}return n},e.prototype.sliceEventRange=function(e,t){var n=e.range;this.forceDayIfListItem&&"list-item"===e.ui.display&&(n={start:n.start,end:De(n.start,1)});for(var r=this.sliceRange.apply(this,o([n],t)),i=0,a=r;i<a.length;i++){var s=a[i];s.eventRange=e,s.isStart=e.isStart&&s.isStart,s.isEnd=e.isEnd&&s.isEnd}return r},e}();function qi(e,t){var n=e.activeRange;return t?n:{start:Re(n.start,e.slotMinTime.milliseconds),end:Re(n.end,e.slotMaxTime.milliseconds-864e5)}}var Yi=/^(visible|hidden)$/,Zi=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.handleEl=function(e){t.el=e,io(t.props.elRef,e)},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=e.liquid,n=e.liquidIsAbsolute,r=t&&n,o=["fc-scroller"];return t&&(n?o.push("fc-scroller-liquid-absolute"):o.push("fc-scroller-liquid")),qr("div",{ref:this.handleEl,className:o.join(" "),style:{overflowX:e.overflowX,overflowY:e.overflowY,left:r&&-(e.overcomeLeft||0)||"",right:r&&-(e.overcomeRight||0)||"",bottom:r&&-(e.overcomeBottom||0)||"",marginLeft:!r&&-(e.overcomeLeft||0)||"",marginRight:!r&&-(e.overcomeRight||0)||"",marginBottom:!r&&-(e.overcomeBottom||0)||"",maxHeight:e.maxHeight||""}},e.children)},t.prototype.needsXScrolling=function(){if(Yi.test(this.props.overflowX))return!1;for(var e=this.el,t=this.el.getBoundingClientRect().width-this.getYScrollbarWidth(),n=e.children,r=0;r<n.length;r++){if(n[r].getBoundingClientRect().width>t)return!0}return!1},t.prototype.needsYScrolling=function(){if(Yi.test(this.props.overflowY))return!1;for(var e=this.el,t=this.el.getBoundingClientRect().height-this.getXScrollbarWidth(),n=e.children,r=0;r<n.length;r++){if(n[r].getBoundingClientRect().height>t)return!0}return!1},t.prototype.getXScrollbarWidth=function(){return Yi.test(this.props.overflowX)?0:this.el.offsetHeight-this.el.clientHeight},t.prototype.getYScrollbarWidth=function(){return Yi.test(this.props.overflowY)?0:this.el.offsetWidth-this.el.clientWidth},t}(no),Xi=function(){function e(e){var t=this;this.masterCallback=e,this.currentMap={},this.depths={},this.callbackMap={},this.handleValue=function(e,n){var r=t,o=r.depths,i=r.currentMap,a=!1,s=!1;null!==e?(a=n in i,i[n]=e,o[n]=(o[n]||0)+1,s=!0):0==--o[n]&&(delete i[n],delete t.callbackMap[n],a=!0),t.masterCallback&&(a&&t.masterCallback(null,String(n)),s&&t.masterCallback(e,String(n)))}}return e.prototype.createRef=function(e){var t=this,n=this.callbackMap[e];return n||(n=this.callbackMap[e]=function(n){t.handleValue(n,String(e))}),n},e.prototype.collect=function(e,t,n){return Ke(this.currentMap,e,t,n)},e.prototype.getAll=function(){return Ge(this.currentMap)},e}();function Ki(e){for(var t=0,n=0,r=X(e,".fc-scrollgrid-shrink");n<r.length;n++){var o=r[n];t=Math.max(t,Ee(o))}return Math.ceil(t)}function Ji(e,t){return e.liquid&&t.liquid}function $i(e,t){return null!=t.maxHeight||Ji(e,t)}function Qi(e,t,n){var r=n.expandRows;return"function"==typeof t.content?t.content(n):qr("table",{className:[t.tableClassName,e.syncRowHeights?"fc-scrollgrid-sync-table":""].join(" "),style:{minWidth:n.tableMinWidth,width:n.clientWidth,height:r?n.clientHeight:""}},n.tableColGroupNode,qr("tbody",{},"function"==typeof t.rowContent?t.rowContent(n):t.rowContent))}function ea(e,t){return B(e,t,qe)}function ta(e,t){for(var n=[],r=0,i=e;r<i.length;r++)for(var a=i[r],s=a.span||1,l=0;l<s;l++)n.push(qr("col",{style:{width:"shrink"===a.width?na(t):a.width||"",minWidth:a.minWidth||""}}));return qr.apply(void 0,o(["colgroup",{}],n))}function na(e){return null==e?4:e}function ra(e){for(var t=0,n=e;t<n.length;t++){if("shrink"===n[t].width)return!0}return!1}function oa(e,t){var n=["fc-scrollgrid",t.theme.getClass("table")];return e&&n.push("fc-scrollgrid-liquid"),n}function ia(e,t){var n=["fc-scrollgrid-section",e.className];return t&&e.liquid&&null==e.maxHeight&&n.push("fc-scrollgrid-section-liquid"),e.isSticky&&n.push("fc-scrollgrid-section-sticky"),n}function aa(e){return qr("div",{className:"fc-scrollgrid-sticky-shim",style:{width:e.clientWidth,minWidth:e.tableMinWidth}})}function sa(e){var t=e.stickyHeaderDates;return null!=t&&"auto"!==t||(t="auto"===e.height||"auto"===e.viewHeight),t}function la(e){var t=e.stickyFooterScrollbar;return null!=t&&"auto"!==t||(t="auto"===e.height||"auto"===e.viewHeight),t}var ua=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.processCols=gt((function(e){return e}),ea),t.renderMicroColGroup=gt(ta),t.scrollerRefs=new Xi,t.scrollerElRefs=new Xi(t._handleScrollerEl.bind(t)),t.state={shrinkWidth:null,forceYScrollbars:!1,scrollerClientWidths:{},scrollerClientHeights:{}},t.handleSizing=function(){t.setState(r({shrinkWidth:t.computeShrinkWidth()},t.computeScrollerDims()))},t}return n(t,e),t.prototype.render=function(){for(var e,t=this.props,n=this.state,r=this.context,i=t.sections||[],a=this.processCols(t.cols),s=this.renderMicroColGroup(a,n.shrinkWidth),l=oa(t.liquid,r),u=i.length,c=0,d=[],p=[],f=[];c<u&&"header"===(e=i[c]).type;)d.push(this.renderSection(e,c,s)),c++;for(;c<u&&"body"===(e=i[c]).type;)p.push(this.renderSection(e,c,s)),c++;for(;c<u&&"footer"===(e=i[c]).type;)f.push(this.renderSection(e,c,s)),c++;return qr("table",{className:l.join(" "),style:{height:t.height}},Boolean(d.length)&&qr.apply(void 0,o(["thead",{}],d)),Boolean(p.length)&&qr.apply(void 0,o(["tbody",{}],p)),Boolean(f.length)&&qr.apply(void 0,o(["tfoot",{}],f)))},t.prototype.renderSection=function(e,t,n){return"outerContent"in e?qr(Xr,{key:e.key},e.outerContent):qr("tr",{key:e.key,className:ia(e,this.props.liquid).join(" ")},this.renderChunkTd(e,t,n,e.chunk))},t.prototype.renderChunkTd=function(e,t,n,r){if("outerContent"in r)return r.outerContent;var o=this.props,i=this.state,a=i.forceYScrollbars,s=i.scrollerClientWidths,l=i.scrollerClientHeights,u=$i(o,e),c=Ji(o,e),d=o.liquid?a?"scroll":u?"auto":"hidden":"visible",p=Qi(e,r,{tableColGroupNode:n,tableMinWidth:"",clientWidth:void 0!==s[t]?s[t]:null,clientHeight:void 0!==l[t]?l[t]:null,expandRows:e.expandRows,syncRowHeights:!1,rowSyncHeights:[],reportRowHeightChange:function(){}});return qr("td",{ref:r.elRef},qr("div",{className:"fc-scroller-harness"+(c?" fc-scroller-harness-liquid":"")},qr(Zi,{ref:this.scrollerRefs.createRef(t),elRef:this.scrollerElRefs.createRef(t),overflowY:d,overflowX:o.liquid?"hidden":"visible",maxHeight:e.maxHeight,liquid:c,liquidIsAbsolute:!0},p)))},t.prototype._handleScrollerEl=function(e,t){var n=parseInt(t,10);io(this.props.sections[n].chunk.scrollerElRef,e)},t.prototype.componentDidMount=function(){this.handleSizing(),this.context.addResizeHandler(this.handleSizing)},t.prototype.componentDidUpdate=function(){this.handleSizing()},t.prototype.componentWillUnmount=function(){this.context.removeResizeHandler(this.handleSizing)},t.prototype.computeShrinkWidth=function(){return ra(this.props.cols)?Ki(this.scrollerElRefs.getAll()):0},t.prototype.computeScrollerDims=function(){for(var e=Nr(),t=this.props.sections.length,n=this.scrollerRefs,r=this.scrollerElRefs,o=!1,i={},a={},s=0;s<t;s++){var l=n.currentMap[s];if(l&&l.needsYScrolling()){o=!0;break}}for(s=0;s<t;s++){var u=r.currentMap[s];if(u){var c=u.parentNode;i[s]=Math.floor(c.getBoundingClientRect().width-(o?e.y:0)),a[s]=Math.floor(c.getBoundingClientRect().height)}}return{forceYScrollbars:o,scrollerClientWidths:i,scrollerClientHeights:a}},t}(no);ua.addStateEquality({scrollerClientWidths:qe,scrollerClientHeights:qe});var ca=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.elRef=Zr(),t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options,r=e.seg,o=r.eventRange,i=o.ui,a={event:new Qn(t,o.def,o.instance),view:t.viewApi,timeText:e.timeText,textColor:i.textColor,backgroundColor:i.backgroundColor,borderColor:i.borderColor,isDraggable:!e.disableDragging&&kn(r,t),isStartResizable:!e.disableResizing&&Mn(r,t),isEndResizable:!e.disableResizing&&Pn(r),isMirror:Boolean(e.isDragging||e.isResizing||e.isDateSelecting),isStart:Boolean(r.isStart),isEnd:Boolean(r.isEnd),isPast:Boolean(e.isPast),isFuture:Boolean(e.isFuture),isToday:Boolean(e.isToday),isSelected:Boolean(e.isSelected),isDragging:Boolean(e.isDragging),isResizing:Boolean(e.isResizing)},s=_n(a).concat(i.classNames);return qr(bo,{hookProps:a,classNames:n.eventClassNames,content:n.eventContent,defaultContent:e.defaultContent,didMount:n.eventDidMount,willUnmount:n.eventWillUnmount,elRef:this.elRef},(function(t,n,r,o){return e.children(t,s.concat(n),r,o,a)}))},t.prototype.componentDidMount=function(){bn(this.elRef.current,this.props.seg)},t.prototype.componentDidUpdate=function(e){var t=this.props.seg;t!==e.seg&&bn(this.elRef.current,t)},t}(no),da=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=e.seg,o=t.options.eventTimeFormat||e.defaultTimeFormat,i=In(n,o,t,e.defaultDisplayEventTime,e.defaultDisplayEventEnd);return qr(ca,{seg:n,timeText:i,disableDragging:e.disableDragging,disableResizing:e.disableResizing,defaultContent:e.defaultContent||pa,isDragging:e.isDragging,isResizing:e.isResizing,isDateSelecting:e.isDateSelecting,isSelected:e.isSelected,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday},(function(t,o,i,a,s){return qr("a",r({className:e.extraClassNames.concat(o).join(" "),style:{borderColor:s.borderColor,backgroundColor:s.backgroundColor},ref:t},function(e){var t=e.eventRange.def.url;return t?{href:t}:{}}(n)),qr("div",{className:"fc-event-main",ref:i,style:{color:s.textColor}},a),s.isStartResizable&&qr("div",{className:"fc-event-resizer fc-event-resizer-start"}),s.isEndResizable&&qr("div",{className:"fc-event-resizer fc-event-resizer-end"}))}))},t}(no);function pa(e){return qr("div",{className:"fc-event-main-frame"},e.timeText&&qr("div",{className:"fc-event-time"},e.timeText),qr("div",{className:"fc-event-title-container"},qr("div",{className:"fc-event-title fc-sticky"},e.event.title||qr(Xr,null," "))))}var fa=function(e){return qr(Qr.Consumer,null,(function(t){var n=t.options,r={isAxis:e.isAxis,date:t.dateEnv.toDate(e.date),view:t.viewApi};return qr(bo,{hookProps:r,classNames:n.nowIndicatorClassNames,content:n.nowIndicatorContent,didMount:n.nowIndicatorDidMount,willUnmount:n.nowIndicatorWillUnmount},e.children)}))},ha=Nt({day:"numeric"}),ga=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.refineHookProps=vt(ma),t.normalizeClassNames=To(),t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options,r=this.refineHookProps({date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,showDayNumber:e.showDayNumber,extraProps:e.extraHookProps,viewApi:t.viewApi,dateEnv:t.dateEnv}),o=Tr(r,t.theme).concat(r.isDisabled?[]:this.normalizeClassNames(n.dayCellClassNames,r)),i=r.isDisabled?{}:{"data-date":pt(e.date)};return qr(wo,{hookProps:r,didMount:n.dayCellDidMount,willUnmount:n.dayCellWillUnmount,elRef:e.elRef},(function(t){return e.children(t,o,i,r.isDisabled)}))},t}(no),va=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options,r=ma({date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,showDayNumber:e.showDayNumber,extraProps:e.extraHookProps,viewApi:t.viewApi,dateEnv:t.dateEnv});return qr(Ro,{hookProps:r,content:n.dayCellContent,defaultContent:e.defaultContent},e.children)},t}(no);function ma(e){var t=e.date,n=e.dateEnv,o=wr(t,e.todayRange,null,e.dateProfile);return r(r(r({date:n.toDate(t),view:e.viewApi},o),{dayNumberText:e.showDayNumber?n.format(t,ha):""}),e.extraProps)}function ya(e){return qr("div",{className:"fc-"+e})}var Sa=function(e){return qr(ca,{defaultContent:Ea,seg:e.seg,timeText:"",disableDragging:!0,disableResizing:!0,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:!1,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday},(function(e,t,n,r,o){return qr("div",{ref:e,className:["fc-bg-event"].concat(t).join(" "),style:{backgroundColor:o.backgroundColor}},r)}))};function Ea(e){return e.event.title&&qr("div",{className:"fc-event-title"},e.event.title)}var Ca=function(e){return qr(Qr.Consumer,null,(function(t){var n=t.dateEnv,r=t.options,o=e.date,i=r.weekNumberFormat||e.defaultFormat,a=n.computeWeekNumber(o),s=n.format(o,i);return qr(bo,{hookProps:{num:a,text:s,date:o},classNames:r.weekNumberClassNames,content:r.weekNumberContent,defaultContent:ba,didMount:r.weekNumberDidMount,willUnmount:r.weekNumberWillUnmount},e.children)}))};function ba(e){return e.text}var Da=function(e){function t(t,n){void 0===n&&(n={});var o=e.call(this)||this;return o.isRendering=!1,o.isRendered=!1,o.currentClassNames=[],o.customContentRenderId=0,o.handleAction=function(e){switch(e.type){case"SET_EVENT_DRAG":case"SET_EVENT_RESIZE":o.renderRunner.tryDrain()}},o.handleData=function(e){o.currentData=e,o.renderRunner.request(e.calendarOptions.rerenderDelay)},o.handleRenderRequest=function(){if(o.isRendering){o.isRendered=!0;var e=o.currentData;Yr(qr(_i,{options:e.calendarOptions,theme:e.theme,emitter:e.emitter},(function(t,n,i,a){return o.setClassNames(t),o.setHeight(n),qr(Do.Provider,{value:o.customContentRenderId},qr(Mi,r({isHeightAuto:i,forPrint:a},e)))})),o.el)}else o.isRendered&&(o.isRendered=!1,Yr(null,o.el),o.setClassNames([]),o.setHeight(""));Jr()},o.el=t,o.renderRunner=new ei(o.handleRenderRequest),new ri({optionOverrides:n,calendarApi:o,onAction:o.handleAction,onData:o.handleData}),o}return n(t,e),Object.defineProperty(t.prototype,"view",{get:function(){return this.currentData.viewApi},enumerable:!1,configurable:!0}),t.prototype.render=function(){this.isRendering?this.customContentRenderId++:this.isRendering=!0,this.renderRunner.request()},t.prototype.destroy=function(){this.isRendering&&(this.isRendering=!1,this.renderRunner.request())},t.prototype.updateSize=function(){e.prototype.updateSize.call(this),Jr()},t.prototype.batchRendering=function(e){this.renderRunner.pause("batchRendering"),e(),this.renderRunner.resume("batchRendering")},t.prototype.pauseRendering=function(){this.renderRunner.pause("pauseRendering")},t.prototype.resumeRendering=function(){this.renderRunner.resume("pauseRendering",!0)},t.prototype.resetOptions=function(e,t){this.currentDataManager.resetOptions(e,t)},t.prototype.setClassNames=function(e){if(!B(e,this.currentClassNames)){for(var t=this.el.classList,n=0,r=this.currentClassNames;n<r.length;n++){var o=r[n];t.remove(o)}for(var i=0,a=e;i<a.length;i++){o=a[i];t.add(o)}this.currentClassNames=e}},t.prototype.setHeight=function(e){Q(this.el,"height",e)},t}($n);Ei.touchMouseIgnoreWait=500;var Ra=0,wa=0,Ta=!1,xa=function(){function e(e){var t=this;this.subjectEl=null,this.downEl=null,this.selector="",this.handleSelector="",this.shouldIgnoreMove=!1,this.shouldWatchScroll=!0,this.isDragging=!1,this.isTouchDragging=!1,this.wasTouchScroll=!1,this.handleMouseDown=function(e){if(!t.shouldIgnoreMouse()&&function(e){return 0===e.button&&!e.ctrlKey}(e)&&t.tryStart(e)){var n=t.createEventFromMouse(e,!0);t.emitter.trigger("pointerdown",n),t.initScrollWatch(n),t.shouldIgnoreMove||document.addEventListener("mousemove",t.handleMouseMove),document.addEventListener("mouseup",t.handleMouseUp)}},this.handleMouseMove=function(e){var n=t.createEventFromMouse(e);t.recordCoords(n),t.emitter.trigger("pointermove",n)},this.handleMouseUp=function(e){document.removeEventListener("mousemove",t.handleMouseMove),document.removeEventListener("mouseup",t.handleMouseUp),t.emitter.trigger("pointerup",t.createEventFromMouse(e)),t.cleanup()},this.handleTouchStart=function(e){if(t.tryStart(e)){t.isTouchDragging=!0;var n=t.createEventFromTouch(e,!0);t.emitter.trigger("pointerdown",n),t.initScrollWatch(n);var r=e.target;t.shouldIgnoreMove||r.addEventListener("touchmove",t.handleTouchMove),r.addEventListener("touchend",t.handleTouchEnd),r.addEventListener("touchcancel",t.handleTouchEnd),window.addEventListener("scroll",t.handleTouchScroll,!0)}},this.handleTouchMove=function(e){var n=t.createEventFromTouch(e);t.recordCoords(n),t.emitter.trigger("pointermove",n)},this.handleTouchEnd=function(e){if(t.isDragging){var n=e.target;n.removeEventListener("touchmove",t.handleTouchMove),n.removeEventListener("touchend",t.handleTouchEnd),n.removeEventListener("touchcancel",t.handleTouchEnd),window.removeEventListener("scroll",t.handleTouchScroll,!0),t.emitter.trigger("pointerup",t.createEventFromTouch(e)),t.cleanup(),t.isTouchDragging=!1,Ra++,setTimeout((function(){Ra--}),Ei.touchMouseIgnoreWait)}},this.handleTouchScroll=function(){t.wasTouchScroll=!0},this.handleScroll=function(e){if(!t.shouldIgnoreMove){var n=window.pageXOffset-t.prevScrollX+t.prevPageX,r=window.pageYOffset-t.prevScrollY+t.prevPageY;t.emitter.trigger("pointermove",{origEvent:e,isTouch:t.isTouchDragging,subjectEl:t.subjectEl,pageX:n,pageY:r,deltaX:n-t.origPageX,deltaY:r-t.origPageY})}},this.containerEl=e,this.emitter=new Ur,e.addEventListener("mousedown",this.handleMouseDown),e.addEventListener("touchstart",this.handleTouchStart,{passive:!0}),wa++||window.addEventListener("touchmove",ka,{passive:!1})}return e.prototype.destroy=function(){this.containerEl.removeEventListener("mousedown",this.handleMouseDown),this.containerEl.removeEventListener("touchstart",this.handleTouchStart,{passive:!0}),--wa||window.removeEventListener("touchmove",ka,{passive:!1})},e.prototype.tryStart=function(e){var t=this.querySubjectEl(e),n=e.target;return!(!t||this.handleSelector&&!Y(n,this.handleSelector))&&(this.subjectEl=t,this.downEl=n,this.isDragging=!0,this.wasTouchScroll=!1,!0)},e.prototype.cleanup=function(){Ta=!1,this.isDragging=!1,this.subjectEl=null,this.downEl=null,this.destroyScrollWatch()},e.prototype.querySubjectEl=function(e){return this.selector?Y(e.target,this.selector):this.containerEl},e.prototype.shouldIgnoreMouse=function(){return Ra||this.isTouchDragging},e.prototype.cancelTouchScroll=function(){this.isDragging&&(Ta=!0)},e.prototype.initScrollWatch=function(e){this.shouldWatchScroll&&(this.recordCoords(e),window.addEventListener("scroll",this.handleScroll,!0))},e.prototype.recordCoords=function(e){this.shouldWatchScroll&&(this.prevPageX=e.pageX,this.prevPageY=e.pageY,this.prevScrollX=window.pageXOffset,this.prevScrollY=window.pageYOffset)},e.prototype.destroyScrollWatch=function(){this.shouldWatchScroll&&window.removeEventListener("scroll",this.handleScroll,!0)},e.prototype.createEventFromMouse=function(e,t){var n=0,r=0;return t?(this.origPageX=e.pageX,this.origPageY=e.pageY):(n=e.pageX-this.origPageX,r=e.pageY-this.origPageY),{origEvent:e,isTouch:!1,subjectEl:this.subjectEl,pageX:e.pageX,pageY:e.pageY,deltaX:n,deltaY:r}},e.prototype.createEventFromTouch=function(e,t){var n,r,o=e.touches,i=0,a=0;return o&&o.length?(n=o[0].pageX,r=o[0].pageY):(n=e.pageX,r=e.pageY),t?(this.origPageX=n,this.origPageY=r):(i=n-this.origPageX,a=r-this.origPageY),{origEvent:e,isTouch:!0,subjectEl:this.subjectEl,pageX:n,pageY:r,deltaX:i,deltaY:a}},e}();function ka(e){Ta&&e.preventDefault()}var Ma=function(){function e(){this.isVisible=!1,this.sourceEl=null,this.mirrorEl=null,this.sourceElRect=null,this.parentNode=document.body,this.zIndex=9999,this.revertDuration=0}return e.prototype.start=function(e,t,n){this.sourceEl=e,this.sourceElRect=this.sourceEl.getBoundingClientRect(),this.origScreenX=t-window.pageXOffset,this.origScreenY=n-window.pageYOffset,this.deltaX=0,this.deltaY=0,this.updateElPosition()},e.prototype.handleMove=function(e,t){this.deltaX=e-window.pageXOffset-this.origScreenX,this.deltaY=t-window.pageYOffset-this.origScreenY,this.updateElPosition()},e.prototype.setIsVisible=function(e){e?this.isVisible||(this.mirrorEl&&(this.mirrorEl.style.display=""),this.isVisible=e,this.updateElPosition()):this.isVisible&&(this.mirrorEl&&(this.mirrorEl.style.display="none"),this.isVisible=e)},e.prototype.stop=function(e,t){var n=this,r=function(){n.cleanup(),t()};e&&this.mirrorEl&&this.isVisible&&this.revertDuration&&(this.deltaX||this.deltaY)?this.doRevertAnimation(r,this.revertDuration):setTimeout(r,0)},e.prototype.doRevertAnimation=function(e,t){var n=this.mirrorEl,r=this.sourceEl.getBoundingClientRect();n.style.transition="top "+t+"ms,left "+t+"ms",$(n,{left:r.left,top:r.top}),oe(n,(function(){n.style.transition="",e()}))},e.prototype.cleanup=function(){this.mirrorEl&&(V(this.mirrorEl),this.mirrorEl=null),this.sourceEl=null},e.prototype.updateElPosition=function(){this.sourceEl&&this.isVisible&&$(this.getMirrorEl(),{left:this.sourceElRect.left+this.deltaX,top:this.sourceElRect.top+this.deltaY})},e.prototype.getMirrorEl=function(){var e=this.sourceElRect,t=this.mirrorEl;return t||((t=this.mirrorEl=this.sourceEl.cloneNode(!0)).classList.add("fc-unselectable"),t.classList.add("fc-event-dragging"),$(t,{position:"fixed",zIndex:this.zIndex,visibility:"",boxSizing:"border-box",width:e.right-e.left,height:e.bottom-e.top,right:"auto",bottom:"auto",margin:0}),this.parentNode.appendChild(t)),t},e}(),Pa=function(e){function t(t,n){var r=e.call(this)||this;return r.handleScroll=function(){r.scrollTop=r.scrollController.getScrollTop(),r.scrollLeft=r.scrollController.getScrollLeft(),r.handleScrollChange()},r.scrollController=t,r.doesListening=n,r.scrollTop=r.origScrollTop=t.getScrollTop(),r.scrollLeft=r.origScrollLeft=t.getScrollLeft(),r.scrollWidth=t.getScrollWidth(),r.scrollHeight=t.getScrollHeight(),r.clientWidth=t.getClientWidth(),r.clientHeight=t.getClientHeight(),r.clientRect=r.computeClientRect(),r.doesListening&&r.getEventTarget().addEventListener("scroll",r.handleScroll),r}return n(t,e),t.prototype.destroy=function(){this.doesListening&&this.getEventTarget().removeEventListener("scroll",this.handleScroll)},t.prototype.getScrollTop=function(){return this.scrollTop},t.prototype.getScrollLeft=function(){return this.scrollLeft},t.prototype.setScrollTop=function(e){this.scrollController.setScrollTop(e),this.doesListening||(this.scrollTop=Math.max(Math.min(e,this.getMaxScrollTop()),0),this.handleScrollChange())},t.prototype.setScrollLeft=function(e){this.scrollController.setScrollLeft(e),this.doesListening||(this.scrollLeft=Math.max(Math.min(e,this.getMaxScrollLeft()),0),this.handleScrollChange())},t.prototype.getClientWidth=function(){return this.clientWidth},t.prototype.getClientHeight=function(){return this.clientHeight},t.prototype.getScrollWidth=function(){return this.scrollWidth},t.prototype.getScrollHeight=function(){return this.scrollHeight},t.prototype.handleScrollChange=function(){},t}(zr),Ia=function(e){function t(t,n){return e.call(this,new Vr(t),n)||this}return n(t,e),t.prototype.getEventTarget=function(){return this.scrollController.el},t.prototype.computeClientRect=function(){return Or(this.scrollController.el)},t}(Pa),Na=function(e){function t(t){return e.call(this,new Fr,t)||this}return n(t,e),t.prototype.getEventTarget=function(){return window},t.prototype.computeClientRect=function(){return{left:this.scrollLeft,right:this.scrollLeft+this.clientWidth,top:this.scrollTop,bottom:this.scrollTop+this.clientHeight}},t.prototype.handleScrollChange=function(){this.clientRect=this.computeClientRect()},t}(Pa),_a="function"==typeof performance?performance.now:Date.now,Ha=function(){function e(){var e=this;this.isEnabled=!0,this.scrollQuery=[window,".fc-scroller"],this.edgeThreshold=50,this.maxVelocity=300,this.pointerScreenX=null,this.pointerScreenY=null,this.isAnimating=!1,this.scrollCaches=null,this.everMovedUp=!1,this.everMovedDown=!1,this.everMovedLeft=!1,this.everMovedRight=!1,this.animate=function(){if(e.isAnimating){var t=e.computeBestEdge(e.pointerScreenX+window.pageXOffset,e.pointerScreenY+window.pageYOffset);if(t){var n=_a();e.handleSide(t,(n-e.msSinceRequest)/1e3),e.requestAnimation(n)}else e.isAnimating=!1}}}return e.prototype.start=function(e,t){this.isEnabled&&(this.scrollCaches=this.buildCaches(),this.pointerScreenX=null,this.pointerScreenY=null,this.everMovedUp=!1,this.everMovedDown=!1,this.everMovedLeft=!1,this.everMovedRight=!1,this.handleMove(e,t))},e.prototype.handleMove=function(e,t){if(this.isEnabled){var n=e-window.pageXOffset,r=t-window.pageYOffset,o=null===this.pointerScreenY?0:r-this.pointerScreenY,i=null===this.pointerScreenX?0:n-this.pointerScreenX;o<0?this.everMovedUp=!0:o>0&&(this.everMovedDown=!0),i<0?this.everMovedLeft=!0:i>0&&(this.everMovedRight=!0),this.pointerScreenX=n,this.pointerScreenY=r,this.isAnimating||(this.isAnimating=!0,this.requestAnimation(_a()))}},e.prototype.stop=function(){if(this.isEnabled){this.isAnimating=!1;for(var e=0,t=this.scrollCaches;e<t.length;e++){t[e].destroy()}this.scrollCaches=null}},e.prototype.requestAnimation=function(e){this.msSinceRequest=e,requestAnimationFrame(this.animate)},e.prototype.handleSide=function(e,t){var n=e.scrollCache,r=this.edgeThreshold,o=r-e.distance,i=o*o/(r*r)*this.maxVelocity*t,a=1;switch(e.name){case"left":a=-1;case"right":n.setScrollLeft(n.getScrollLeft()+i*a);break;case"top":a=-1;case"bottom":n.setScrollTop(n.getScrollTop()+i*a)}},e.prototype.computeBestEdge=function(e,t){for(var n=this.edgeThreshold,r=null,o=0,i=this.scrollCaches;o<i.length;o++){var a=i[o],s=a.clientRect,l=e-s.left,u=s.right-e,c=t-s.top,d=s.bottom-t;l>=0&&u>=0&&c>=0&&d>=0&&(c<=n&&this.everMovedUp&&a.canScrollUp()&&(!r||r.distance>c)&&(r={scrollCache:a,name:"top",distance:c}),d<=n&&this.everMovedDown&&a.canScrollDown()&&(!r||r.distance>d)&&(r={scrollCache:a,name:"bottom",distance:d}),l<=n&&this.everMovedLeft&&a.canScrollLeft()&&(!r||r.distance>l)&&(r={scrollCache:a,name:"left",distance:l}),u<=n&&this.everMovedRight&&a.canScrollRight()&&(!r||r.distance>u)&&(r={scrollCache:a,name:"right",distance:u}))}return r},e.prototype.buildCaches=function(){return this.queryScrollEls().map((function(e){return e===window?new Na(!1):new Ia(e,!1)}))},e.prototype.queryScrollEls=function(){for(var e=[],t=0,n=this.scrollQuery;t<n.length;t++){var r=n[t];"object"==typeof r?e.push(r):e.push.apply(e,Array.prototype.slice.call(document.querySelectorAll(r)))}return e},e}(),Oa=function(e){function t(t,n){var r=e.call(this,t)||this;r.delay=null,r.minDistance=0,r.touchScrollAllowed=!0,r.mirrorNeedsRevert=!1,r.isInteracting=!1,r.isDragging=!1,r.isDelayEnded=!1,r.isDistanceSurpassed=!1,r.delayTimeoutId=null,r.onPointerDown=function(e){r.isDragging||(r.isInteracting=!0,r.isDelayEnded=!1,r.isDistanceSurpassed=!1,ue(document.body),de(document.body),e.isTouch||e.origEvent.preventDefault(),r.emitter.trigger("pointerdown",e),r.isInteracting&&!r.pointer.shouldIgnoreMove&&(r.mirror.setIsVisible(!1),r.mirror.start(e.subjectEl,e.pageX,e.pageY),r.startDelay(e),r.minDistance||r.handleDistanceSurpassed(e)))},r.onPointerMove=function(e){if(r.isInteracting){if(r.emitter.trigger("pointermove",e),!r.isDistanceSurpassed){var t=r.minDistance,n=e.deltaX,o=e.deltaY;n*n+o*o>=t*t&&r.handleDistanceSurpassed(e)}r.isDragging&&("scroll"!==e.origEvent.type&&(r.mirror.handleMove(e.pageX,e.pageY),r.autoScroller.handleMove(e.pageX,e.pageY)),r.emitter.trigger("dragmove",e))}},r.onPointerUp=function(e){r.isInteracting&&(r.isInteracting=!1,ce(document.body),pe(document.body),r.emitter.trigger("pointerup",e),r.isDragging&&(r.autoScroller.stop(),r.tryStopDrag(e)),r.delayTimeoutId&&(clearTimeout(r.delayTimeoutId),r.delayTimeoutId=null))};var o=r.pointer=new xa(t);return o.emitter.on("pointerdown",r.onPointerDown),o.emitter.on("pointermove",r.onPointerMove),o.emitter.on("pointerup",r.onPointerUp),n&&(o.selector=n),r.mirror=new Ma,r.autoScroller=new Ha,r}return n(t,e),t.prototype.destroy=function(){this.pointer.destroy(),this.onPointerUp({})},t.prototype.startDelay=function(e){var t=this;"number"==typeof this.delay?this.delayTimeoutId=setTimeout((function(){t.delayTimeoutId=null,t.handleDelayEnd(e)}),this.delay):this.handleDelayEnd(e)},t.prototype.handleDelayEnd=function(e){this.isDelayEnded=!0,this.tryStartDrag(e)},t.prototype.handleDistanceSurpassed=function(e){this.isDistanceSurpassed=!0,this.tryStartDrag(e)},t.prototype.tryStartDrag=function(e){this.isDelayEnded&&this.isDistanceSurpassed&&(this.pointer.wasTouchScroll&&!this.touchScrollAllowed||(this.isDragging=!0,this.mirrorNeedsRevert=!1,this.autoScroller.start(e.pageX,e.pageY),this.emitter.trigger("dragstart",e),!1===this.touchScrollAllowed&&this.pointer.cancelTouchScroll()))},t.prototype.tryStopDrag=function(e){this.mirror.stop(this.mirrorNeedsRevert,this.stopDrag.bind(this,e))},t.prototype.stopDrag=function(e){this.isDragging=!1,this.emitter.trigger("dragend",e)},t.prototype.setIgnoreMove=function(e){this.pointer.shouldIgnoreMove=e},t.prototype.setMirrorIsVisible=function(e){this.mirror.setIsVisible(e)},t.prototype.setMirrorNeedsRevert=function(e){this.mirrorNeedsRevert=e},t.prototype.setAutoScrollEnabled=function(e){this.autoScroller.isEnabled=e},t}(Si),Wa=function(){function e(e){this.origRect=Wr(e),this.scrollCaches=Ar(e).map((function(e){return new Ia(e,!0)}))}return e.prototype.destroy=function(){for(var e=0,t=this.scrollCaches;e<t.length;e++){t[e].destroy()}},e.prototype.computeLeft=function(){for(var e=this.origRect.left,t=0,n=this.scrollCaches;t<n.length;t++){var r=n[t];e+=r.origScrollLeft-r.getScrollLeft()}return e},e.prototype.computeTop=function(){for(var e=this.origRect.top,t=0,n=this.scrollCaches;t<n.length;t++){var r=n[t];e+=r.origScrollTop-r.getScrollTop()}return e},e.prototype.isWithinClipping=function(e,t){for(var n,r,o={left:e,top:t},i=0,a=this.scrollCaches;i<a.length;i++){var s=a[i];if(n=s.getEventTarget(),r=void 0,"HTML"!==(r=n.tagName)&&"BODY"!==r&&!vr(o,s.clientRect))return!1}return!0},e}();var Aa=function(){function e(e,t){var n=this;this.useSubjectCenter=!1,this.requireInitial=!0,this.initialHit=null,this.movingHit=null,this.finalHit=null,this.handlePointerDown=function(e){var t=n.dragging;n.initialHit=null,n.movingHit=null,n.finalHit=null,n.prepareHits(),n.processFirstCoord(e),n.initialHit||!n.requireInitial?(t.setIgnoreMove(!1),n.emitter.trigger("pointerdown",e)):t.setIgnoreMove(!0)},this.handleDragStart=function(e){n.emitter.trigger("dragstart",e),n.handleMove(e,!0)},this.handleDragMove=function(e){n.emitter.trigger("dragmove",e),n.handleMove(e)},this.handlePointerUp=function(e){n.releaseHits(),n.emitter.trigger("pointerup",e)},this.handleDragEnd=function(e){n.movingHit&&n.emitter.trigger("hitupdate",null,!0,e),n.finalHit=n.movingHit,n.movingHit=null,n.emitter.trigger("dragend",e)},this.droppableStore=t,e.emitter.on("pointerdown",this.handlePointerDown),e.emitter.on("dragstart",this.handleDragStart),e.emitter.on("dragmove",this.handleDragMove),e.emitter.on("pointerup",this.handlePointerUp),e.emitter.on("dragend",this.handleDragEnd),this.dragging=e,this.emitter=new Ur}return e.prototype.processFirstCoord=function(e){var t,n={left:e.pageX,top:e.pageY},r=n,o=e.subjectEl;o!==document&&(r=Sr(r,t=Wr(o)));var i=this.initialHit=this.queryHitForOffset(r.left,r.top);if(i){if(this.useSubjectCenter&&t){var a=mr(t,i.rect);a&&(r=Er(a))}this.coordAdjust=Cr(r,n)}else this.coordAdjust={left:0,top:0}},e.prototype.handleMove=function(e,t){var n=this.queryHitForOffset(e.pageX+this.coordAdjust.left,e.pageY+this.coordAdjust.top);!t&&La(this.movingHit,n)||(this.movingHit=n,this.emitter.trigger("hitupdate",n,!1,e))},e.prototype.prepareHits=function(){this.offsetTrackers=Fe(this.droppableStore,(function(e){return e.component.prepareHits(),new Wa(e.el)}))},e.prototype.releaseHits=function(){var e=this.offsetTrackers;for(var t in e)e[t].destroy();this.offsetTrackers={}},e.prototype.queryHitForOffset=function(e,t){var n=this.droppableStore,r=this.offsetTrackers,o=null;for(var i in n){var a=n[i].component,s=r[i];if(s&&s.isWithinClipping(e,t)){var l=s.computeLeft(),u=s.computeTop(),c=e-l,d=t-u,p=s.origRect,f=p.right-p.left,h=p.bottom-p.top;if(c>=0&&c<f&&d>=0&&d<h){var g=a.queryHit(c,d,f,h),v=a.context.getCurrentData().dateProfile;g&&yn(v.activeRange,g.dateSpan.range)&&(!o||g.layer>o.layer)&&(g.rect.left+=l,g.rect.right+=l,g.rect.top+=u,g.rect.bottom+=u,o=g)}}}return o},e}();function La(e,t){return!e&&!t||Boolean(e)===Boolean(t)&&An(e.dateSpan,t.dateSpan)}function Ua(e,t){for(var n,o,i={},a=0,s=t.pluginHooks.datePointTransforms;a<s.length;a++){var l=s[a];r(i,l(e,t))}return r(i,(n=e,{date:(o=t.dateEnv).toDate(n.range.start),dateStr:o.formatIso(n.range.start,{omitTime:n.allDay}),allDay:n.allDay})),i}var Ba=function(e){function t(t){var n=e.call(this,t)||this;n.handlePointerDown=function(e){var t=n.dragging;t.setIgnoreMove(!n.component.isValidDateDownEl(t.pointer.downEl))},n.handleDragEnd=function(e){var t=n.component;if(!n.dragging.pointer.wasTouchScroll){var o=n.hitDragging,i=o.initialHit,a=o.finalHit;if(i&&a&&La(i,a)){var s=t.context,l=r(r({},Ua(i.dateSpan,s)),{dayEl:i.dayEl,jsEvent:e.origEvent,view:s.viewApi||s.calendarApi.view});s.emitter.trigger("dateClick",l)}}},n.dragging=new Oa(t.el),n.dragging.autoScroller.isEnabled=!1;var o=n.hitDragging=new Aa(n.dragging,mi(t));return o.emitter.on("pointerdown",n.handlePointerDown),o.emitter.on("dragend",n.handleDragEnd),n}return n(t,e),t.prototype.destroy=function(){this.dragging.destroy()},t}(gi),za=function(e){function t(t){var n=e.call(this,t)||this;n.dragSelection=null,n.handlePointerDown=function(e){var t=n,r=t.component,o=t.dragging,i=r.context.options.selectable&&r.isValidDateDownEl(e.origEvent.target);o.setIgnoreMove(!i),o.delay=e.isTouch?function(e){var t=e.context.options,n=t.selectLongPressDelay;null==n&&(n=t.longPressDelay);return n}(r):null},n.handleDragStart=function(e){n.component.context.calendarApi.unselect(e)},n.handleHitUpdate=function(e,t){var o=n.component.context,i=null,a=!1;e&&((i=function(e,t,n){var o=e.dateSpan,i=t.dateSpan,a=[o.range.start,o.range.end,i.range.start,i.range.end];a.sort(ye);for(var s={},l=0,u=n;l<u.length;l++){var c=(0,u[l])(e,t);if(!1===c)return null;c&&r(s,c)}return s.range={start:a[0],end:a[3]},s.allDay=o.allDay,s}(n.hitDragging.initialHit,e,o.pluginHooks.dateSelectionTransformers))&&n.component.isDateSelectionValid(i)||(a=!0,i=null)),i?o.dispatch({type:"SELECT_DATES",selection:i}):t||o.dispatch({type:"UNSELECT_DATES"}),a?se():le(),t||(n.dragSelection=i)},n.handlePointerUp=function(e){n.dragSelection&&(zn(n.dragSelection,e,n.component.context),n.dragSelection=null)};var o=t.component.context.options,i=n.dragging=new Oa(t.el);i.touchScrollAllowed=!1,i.minDistance=o.selectMinDistance||0,i.autoScroller.isEnabled=o.dragScroll;var a=n.hitDragging=new Aa(n.dragging,mi(t));return a.emitter.on("pointerdown",n.handlePointerDown),a.emitter.on("dragstart",n.handleDragStart),a.emitter.on("hitupdate",n.handleHitUpdate),a.emitter.on("pointerup",n.handlePointerUp),n}return n(t,e),t.prototype.destroy=function(){this.dragging.destroy()},t}(gi);var Va=function(e){function t(n){var o=e.call(this,n)||this;o.subjectEl=null,o.subjectSeg=null,o.isDragging=!1,o.eventRange=null,o.relevantEvents=null,o.receivingContext=null,o.validMutation=null,o.mutatedRelevantEvents=null,o.handlePointerDown=function(e){var t=e.origEvent.target,n=o,r=n.component,i=n.dragging,a=i.mirror,s=r.context.options,l=r.context;o.subjectEl=e.subjectEl;var u=o.subjectSeg=Dn(e.subjectEl),c=(o.eventRange=u.eventRange).instance.instanceId;o.relevantEvents=Gt(l.getCurrentData().eventStore,c),i.minDistance=e.isTouch?0:s.eventDragMinDistance,i.delay=e.isTouch&&c!==r.props.eventSelection?function(e){var t=e.context.options,n=t.eventLongPressDelay;null==n&&(n=t.longPressDelay);return n}(r):null,a.parentNode=Y(t,".fc"),a.revertDuration=s.dragRevertDuration;var d=r.isValidSegDownEl(t)&&!Y(t,".fc-event-resizer");i.setIgnoreMove(!d),o.isDragging=d&&e.subjectEl.classList.contains("fc-event-draggable")},o.handleDragStart=function(e){var t=o.component.context,n=o.eventRange,r=n.instance.instanceId;e.isTouch?r!==o.component.props.eventSelection&&t.dispatch({type:"SELECT_EVENT",eventInstanceId:r}):t.dispatch({type:"UNSELECT_EVENT"}),o.isDragging&&(t.calendarApi.unselect(e),t.emitter.trigger("eventDragStart",{el:o.subjectEl,event:new Qn(t,n.def,n.instance),jsEvent:e.origEvent,view:t.viewApi}))},o.handleHitUpdate=function(e,t){if(o.isDragging){var n=o.relevantEvents,r=o.hitDragging.initialHit,i=o.component.context,a=null,s=null,l=null,u=!1,c={affectedEvents:n,mutatedEvents:{defs:{},instances:{}},isEvent:!0};if(e){var d=e.component,p=(a=d.context).options;i===a||p.editable&&p.droppable?(s=function(e,t,n){var r=e.dateSpan,o=t.dateSpan,i=r.range.start,a=o.range.start,s={};r.allDay!==o.allDay&&(s.allDay=o.allDay,s.hasEnd=t.component.context.options.allDayMaintainDuration,o.allDay&&(i=Pe(i)));var l=pn(i,a,e.component.context.dateEnv,e.component===t.component?e.component.largeUnit:null);l.milliseconds&&(s.allDay=!1);for(var u={datesDelta:l,standardProps:s},c=0,d=n;c<d.length;c++){(0,d[c])(u,e,t)}return u}(r,e,a.getCurrentData().pluginHooks.eventDragMutationMassagers))&&(l=jn(n,a.getCurrentData().eventUiBases,s,a),c.mutatedEvents=l,d.isInteractionValid(c)||(u=!0,s=null,l=null,c.mutatedEvents={defs:{},instances:{}})):a=null}o.displayDrag(a,c),u?se():le(),t||(i===a&&La(r,e)&&(s=null),o.dragging.setMirrorNeedsRevert(!s),o.dragging.setMirrorIsVisible(!e||!document.querySelector(".fc-event-mirror")),o.receivingContext=a,o.validMutation=s,o.mutatedRelevantEvents=l)}},o.handlePointerUp=function(){o.isDragging||o.cleanup()},o.handleDragEnd=function(e){if(o.isDragging){var t=o.component.context,n=t.viewApi,i=o,a=i.receivingContext,s=i.validMutation,l=o.eventRange.def,u=o.eventRange.instance,c=new Qn(t,l,u),d=o.relevantEvents,p=o.mutatedRelevantEvents,f=o.hitDragging.finalHit;if(o.clearDrag(),t.emitter.trigger("eventDragStop",{el:o.subjectEl,event:c,jsEvent:e.origEvent,view:n}),s){if(a===t){var h=new Qn(t,p.defs[l.defId],u?p.instances[u.instanceId]:null);t.dispatch({type:"MERGE_EVENTS",eventStore:p});for(var g={oldEvent:c,event:h,relatedEvents:tr(p,t,u),revert:function(){t.dispatch({type:"MERGE_EVENTS",eventStore:d})}},v={},m=0,y=t.getCurrentData().pluginHooks.eventDropTransformers;m<y.length;m++){var S=y[m];r(v,S(s,t))}t.emitter.trigger("eventDrop",r(r(r({},g),v),{el:e.subjectEl,delta:s.datesDelta,jsEvent:e.origEvent,view:n})),t.emitter.trigger("eventChange",g)}else if(a){t.emitter.trigger("eventLeave",{draggedEl:e.subjectEl,event:c,view:n}),t.dispatch({type:"REMOVE_EVENTS",eventStore:d}),t.emitter.trigger("eventRemove",{event:c,relatedEvents:tr(d,t,u),revert:function(){t.dispatch({type:"MERGE_EVENTS",eventStore:d})}});var E=p.defs[l.defId],C=p.instances[u.instanceId],b=new Qn(a,E,C);a.dispatch({type:"MERGE_EVENTS",eventStore:p}),a.emitter.trigger("eventAdd",{event:b,relatedEvents:tr(p,a,C),revert:function(){a.dispatch({type:"REMOVE_EVENTS",eventStore:p})}}),e.isTouch&&a.dispatch({type:"SELECT_EVENT",eventInstanceId:u.instanceId}),a.emitter.trigger("drop",r(r({},Ua(f.dateSpan,a)),{draggedEl:e.subjectEl,jsEvent:e.origEvent,view:f.component.context.viewApi})),a.emitter.trigger("eventReceive",{draggedEl:e.subjectEl,event:b,view:f.component.context.viewApi})}}else t.emitter.trigger("_noEventDrop")}o.cleanup()};var i=o.component.context.options,a=o.dragging=new Oa(n.el);a.pointer.selector=t.SELECTOR,a.touchScrollAllowed=!1,a.autoScroller.isEnabled=i.dragScroll;var s=o.hitDragging=new Aa(o.dragging,yi);return s.useSubjectCenter=n.useEventCenter,s.emitter.on("pointerdown",o.handlePointerDown),s.emitter.on("dragstart",o.handleDragStart),s.emitter.on("hitupdate",o.handleHitUpdate),s.emitter.on("pointerup",o.handlePointerUp),s.emitter.on("dragend",o.handleDragEnd),o}return n(t,e),t.prototype.destroy=function(){this.dragging.destroy()},t.prototype.displayDrag=function(e,t){var n=this.component.context,r=this.receivingContext;r&&r!==e&&(r===n?r.dispatch({type:"SET_EVENT_DRAG",state:{affectedEvents:t.affectedEvents,mutatedEvents:{defs:{},instances:{}},isEvent:!0}}):r.dispatch({type:"UNSET_EVENT_DRAG"})),e&&e.dispatch({type:"SET_EVENT_DRAG",state:t})},t.prototype.clearDrag=function(){var e=this.component.context,t=this.receivingContext;t&&t.dispatch({type:"UNSET_EVENT_DRAG"}),e!==t&&e.dispatch({type:"UNSET_EVENT_DRAG"})},t.prototype.cleanup=function(){this.subjectSeg=null,this.isDragging=!1,this.eventRange=null,this.relevantEvents=null,this.receivingContext=null,this.validMutation=null,this.mutatedRelevantEvents=null},t.SELECTOR=".fc-event-draggable, .fc-event-resizable",t}(gi);var Fa=function(e){function t(t){var n=e.call(this,t)||this;n.draggingSegEl=null,n.draggingSeg=null,n.eventRange=null,n.relevantEvents=null,n.validMutation=null,n.mutatedRelevantEvents=null,n.handlePointerDown=function(e){var t=n.component,r=Dn(n.querySegEl(e)),o=n.eventRange=r.eventRange;n.dragging.minDistance=t.context.options.eventDragMinDistance,n.dragging.setIgnoreMove(!n.component.isValidSegDownEl(e.origEvent.target)||e.isTouch&&n.component.props.eventSelection!==o.instance.instanceId)},n.handleDragStart=function(e){var t=n.component.context,r=n.eventRange;n.relevantEvents=Gt(t.getCurrentData().eventStore,n.eventRange.instance.instanceId);var o=n.querySegEl(e);n.draggingSegEl=o,n.draggingSeg=Dn(o),t.calendarApi.unselect(),t.emitter.trigger("eventResizeStart",{el:o,event:new Qn(t,r.def,r.instance),jsEvent:e.origEvent,view:t.viewApi})},n.handleHitUpdate=function(e,t,o){var i=n.component.context,a=n.relevantEvents,s=n.hitDragging.initialHit,l=n.eventRange.instance,u=null,c=null,d=!1,p={affectedEvents:a,mutatedEvents:{defs:{},instances:{}},isEvent:!0};e&&(u=function(e,t,n,o,i){for(var a=e.component.context.dateEnv,s=e.dateSpan.range.start,l=t.dateSpan.range.start,u=pn(s,l,a,e.component.largeUnit),c={},d=0,p=i;d<p.length;d++){var f=(0,p[d])(e,t);if(!1===f)return null;f&&r(c,f)}if(n){if(a.add(o.start,u)<o.end)return c.startDelta=u,c}else if(a.add(o.end,u)>o.start)return c.endDelta=u,c;return null}(s,e,o.subjectEl.classList.contains("fc-event-resizer-start"),l.range,i.pluginHooks.eventResizeJoinTransforms)),u&&(c=jn(a,i.getCurrentData().eventUiBases,u,i),p.mutatedEvents=c,n.component.isInteractionValid(p)||(d=!0,u=null,c=null,p.mutatedEvents=null)),c?i.dispatch({type:"SET_EVENT_RESIZE",state:p}):i.dispatch({type:"UNSET_EVENT_RESIZE"}),d?se():le(),t||(u&&La(s,e)&&(u=null),n.validMutation=u,n.mutatedRelevantEvents=c)},n.handleDragEnd=function(e){var t=n.component.context,o=n.eventRange.def,i=n.eventRange.instance,a=new Qn(t,o,i),s=n.relevantEvents,l=n.mutatedRelevantEvents;if(t.emitter.trigger("eventResizeStop",{el:n.draggingSegEl,event:a,jsEvent:e.origEvent,view:t.viewApi}),n.validMutation){var u=new Qn(t,l.defs[o.defId],i?l.instances[i.instanceId]:null);t.dispatch({type:"MERGE_EVENTS",eventStore:l});var c={oldEvent:a,event:u,relatedEvents:tr(l,t,i),revert:function(){t.dispatch({type:"MERGE_EVENTS",eventStore:s})}};t.emitter.trigger("eventResize",r(r({},c),{el:n.draggingSegEl,startDelta:n.validMutation.startDelta||tt(0),endDelta:n.validMutation.endDelta||tt(0),jsEvent:e.origEvent,view:t.viewApi})),t.emitter.trigger("eventChange",c)}else t.emitter.trigger("_noEventResize");n.draggingSeg=null,n.relevantEvents=null,n.validMutation=null};var o=t.component,i=n.dragging=new Oa(t.el);i.pointer.selector=".fc-event-resizer",i.touchScrollAllowed=!1,i.autoScroller.isEnabled=o.context.options.dragScroll;var a=n.hitDragging=new Aa(n.dragging,mi(t));return a.emitter.on("pointerdown",n.handlePointerDown),a.emitter.on("dragstart",n.handleDragStart),a.emitter.on("hitupdate",n.handleHitUpdate),a.emitter.on("dragend",n.handleDragEnd),n}return n(t,e),t.prototype.destroy=function(){this.dragging.destroy()},t.prototype.querySegEl=function(e){return Y(e.subjectEl,".fc-event")},t}(gi);var ja=function(){function e(e){var t=this;this.context=e,this.isRecentPointerDateSelect=!1,this.onSelect=function(e){e.jsEvent&&(t.isRecentPointerDateSelect=!0)},this.onDocumentPointerUp=function(e){var n=t.context,r=t.documentPointer,o=n.getCurrentData();if(!r.wasTouchScroll){if(o.dateSelection&&!t.isRecentPointerDateSelect){var i=n.options.unselectAuto,a=n.options.unselectCancel;!i||i&&Y(r.downEl,a)||n.calendarApi.unselect(e)}o.eventSelection&&!Y(r.downEl,Va.SELECTOR)&&n.dispatch({type:"UNSELECT_EVENT"})}t.isRecentPointerDateSelect=!1};var n=this.documentPointer=new xa(document);n.shouldIgnoreMove=!0,n.shouldWatchScroll=!1,n.emitter.on("pointerup",this.onDocumentPointerUp),e.emitter.on("select",this.onSelect)}return e.prototype.destroy=function(){this.context.emitter.off("select",this.onSelect),this.documentPointer.destroy()},e}(),Ga={dateClick:Vt,eventDragStart:Vt,eventDragStop:Vt,eventDrop:Vt,eventResizeStart:Vt,eventResizeStop:Vt,eventResize:Vt,drop:Vt,eventReceive:Vt,eventLeave:Vt},qa=function(){function e(e,t){var n=this;this.receivingContext=null,this.droppableEvent=null,this.suppliedDragMeta=null,this.dragMeta=null,this.handleDragStart=function(e){n.dragMeta=n.buildDragMeta(e.subjectEl)},this.handleHitUpdate=function(e,t,o){var i=n.hitDragging.dragging,a=null,s=null,l=!1,u={affectedEvents:{defs:{},instances:{}},mutatedEvents:{defs:{},instances:{}},isEvent:n.dragMeta.create};e&&(a=e.component.context,n.canDropElOnCalendar(o.subjectEl,a)&&(s=function(e,t,n){for(var o=r({},t.leftoverProps),i=0,a=n.pluginHooks.externalDefTransforms;i<a.length;i++){var s=a[i];r(o,s(e,t))}var l=an(o,n),u=l.refined,c=l.extra,d=ln(u,c,t.sourceId,e.allDay,n.options.forceEventDuration||Boolean(t.duration),n),p=e.range.start;e.allDay&&t.startTime&&(p=n.dateEnv.add(p,t.startTime));var f=t.duration?n.dateEnv.add(p,t.duration):Fn(e.allDay,p,n),h=Ue(d.defId,{start:p,end:f});return{def:d,instance:h}}(e.dateSpan,n.dragMeta,a),u.mutatedEvents=jt(s),(l=!uo(u,a))&&(u.mutatedEvents={defs:{},instances:{}},s=null))),n.displayDrag(a,u),i.setMirrorIsVisible(t||!s||!document.querySelector(".fc-event-mirror")),l?se():le(),t||(i.setMirrorNeedsRevert(!s),n.receivingContext=a,n.droppableEvent=s)},this.handleDragEnd=function(e){var t=n,o=t.receivingContext,i=t.droppableEvent;if(n.clearDrag(),o&&i){var a=n.hitDragging.finalHit,s=a.component.context.viewApi,l=n.dragMeta;o.emitter.trigger("drop",r(r({},Ua(a.dateSpan,o)),{draggedEl:e.subjectEl,jsEvent:e.origEvent,view:s})),l.create&&(o.dispatch({type:"MERGE_EVENTS",eventStore:jt(i)}),e.isTouch&&o.dispatch({type:"SELECT_EVENT",eventInstanceId:i.instance.instanceId}),o.emitter.trigger("eventReceive",{draggedEl:e.subjectEl,event:new Qn(o,i.def,i.instance),view:s}))}n.receivingContext=null,n.droppableEvent=null};var o=this.hitDragging=new Aa(e,yi);o.requireInitial=!1,o.emitter.on("dragstart",this.handleDragStart),o.emitter.on("hitupdate",this.handleHitUpdate),o.emitter.on("dragend",this.handleDragEnd),this.suppliedDragMeta=t}return e.prototype.buildDragMeta=function(e){return"object"==typeof this.suppliedDragMeta?bi(this.suppliedDragMeta):"function"==typeof this.suppliedDragMeta?bi(this.suppliedDragMeta(e)):bi((t=function(e,t){var n=Ei.dataAttrPrefix,r=(n?n+"-":"")+t;return e.getAttribute("data-"+r)||""}(e,"event"))?JSON.parse(t):{create:!1});var t},e.prototype.displayDrag=function(e,t){var n=this.receivingContext;n&&n!==e&&n.dispatch({type:"UNSET_EVENT_DRAG"}),e&&e.dispatch({type:"SET_EVENT_DRAG",state:t})},e.prototype.clearDrag=function(){this.receivingContext&&this.receivingContext.dispatch({type:"UNSET_EVENT_DRAG"})},e.prototype.canDropElOnCalendar=function(e,t){var n=t.options.dropAccept;return"function"==typeof n?n.call(t.calendarApi,e):"string"!=typeof n||!n||Boolean(Z(e,n))},e}();Ei.dataAttrPrefix="";var Ya=function(){function e(e,t){var n=this;void 0===t&&(t={}),this.handlePointerDown=function(e){var t=n.dragging,r=n.settings,o=r.minDistance,i=r.longPressDelay;t.minDistance=null!=o?o:e.isTouch?0:Ht.eventDragMinDistance,t.delay=e.isTouch?null!=i?i:Ht.longPressDelay:0},this.handleDragStart=function(e){e.isTouch&&n.dragging.delay&&e.subjectEl.classList.contains("fc-event")&&n.dragging.mirror.getMirrorEl().classList.add("fc-event-selected")},this.settings=t;var r=this.dragging=new Oa(e);r.touchScrollAllowed=!1,null!=t.itemSelector&&(r.pointer.selector=t.itemSelector),null!=t.appendTo&&(r.mirror.parentNode=t.appendTo),r.emitter.on("pointerdown",this.handlePointerDown),r.emitter.on("dragstart",this.handleDragStart),new qa(r,t.eventData)}return e.prototype.destroy=function(){this.dragging.destroy()},e}(),Za=function(e){function t(t){var n=e.call(this,t)||this;n.shouldIgnoreMove=!1,n.mirrorSelector="",n.currentMirrorEl=null,n.handlePointerDown=function(e){n.emitter.trigger("pointerdown",e),n.shouldIgnoreMove||n.emitter.trigger("dragstart",e)},n.handlePointerMove=function(e){n.shouldIgnoreMove||n.emitter.trigger("dragmove",e)},n.handlePointerUp=function(e){n.emitter.trigger("pointerup",e),n.shouldIgnoreMove||n.emitter.trigger("dragend",e)};var r=n.pointer=new xa(t);return r.emitter.on("pointerdown",n.handlePointerDown),r.emitter.on("pointermove",n.handlePointerMove),r.emitter.on("pointerup",n.handlePointerUp),n}return n(t,e),t.prototype.destroy=function(){this.pointer.destroy()},t.prototype.setIgnoreMove=function(e){this.shouldIgnoreMove=e},t.prototype.setMirrorIsVisible=function(e){if(e)this.currentMirrorEl&&(this.currentMirrorEl.style.visibility="",this.currentMirrorEl=null);else{var t=this.mirrorSelector?document.querySelector(this.mirrorSelector):null;t&&(this.currentMirrorEl=t,t.style.visibility="hidden")}},t}(Si),Xa=function(){function e(e,t){var n=document;e===document||e instanceof Element?(n=e,t=t||{}):t=e||{};var r=this.dragging=new Za(n);"string"==typeof t.itemSelector?r.pointer.selector=t.itemSelector:n===document&&(r.pointer.selector="[data-event]"),"string"==typeof t.mirrorSelector&&(r.mirrorSelector=t.mirrorSelector),new qa(r,t.eventData)}return e.prototype.destroy=function(){this.dragging.destroy()},e}(),Ka=yo({componentInteractions:[Ba,za,Va,Fa],calendarInteractions:[ja],elementDraggingImpl:Oa,listenerRefiners:Ga}),Ja=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.headerElRef=Zr(),t}return n(t,e),t.prototype.renderSimpleLayout=function(e,t){var n=this.props,r=this.context,o=[],i=sa(r.options);return e&&o.push({type:"header",key:"header",isSticky:i,chunk:{elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}}),o.push({type:"body",key:"body",liquid:!0,chunk:{content:t}}),qr(Mo,{viewSpec:r.viewSpec},(function(e,t){return qr("div",{ref:e,className:["fc-daygrid"].concat(t).join(" ")},qr(ua,{liquid:!n.isHeightAuto&&!n.forPrint,cols:[],sections:o}))}))},t.prototype.renderHScrollLayout=function(e,t,n,r){var o=this.context.pluginHooks.scrollGridImpl;if(!o)throw new Error("No ScrollGrid implementation");var i=this.props,a=this.context,s=!i.forPrint&&sa(a.options),l=!i.forPrint&&la(a.options),u=[];return e&&u.push({type:"header",key:"header",isSticky:s,chunks:[{key:"main",elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}]}),u.push({type:"body",key:"body",liquid:!0,chunks:[{key:"main",content:t}]}),l&&u.push({type:"footer",key:"footer",isSticky:!0,chunks:[{key:"main",content:aa}]}),qr(Mo,{viewSpec:a.viewSpec},(function(e,t){return qr("div",{ref:e,className:["fc-daygrid"].concat(t).join(" ")},qr(o,{liquid:!i.isHeightAuto&&!i.forPrint,colGroups:[{cols:[{span:n,minWidth:r}]}],sections:u}))}))},t}(mo);function $a(e,t){for(var n=[],r=0;r<t;r++)n[r]=[];for(var o=0,i=e;o<i.length;o++){var a=i[o];n[a.row].push(a)}return n}function Qa(e,t){for(var n=[],r=0;r<t;r++)n[r]=[];for(var o=0,i=e;o<i.length;o++){var a=i[o];n[a.firstCol].push(a)}return n}function es(e,t){var n=[];if(e){for(a=0;a<t;a++)n[a]={affectedInstances:e.affectedInstances,isEvent:e.isEvent,segs:[]};for(var r=0,o=e.segs;r<o.length;r++){var i=o[r];n[i.row].segs.push(i)}}else for(var a=0;a<t;a++)n[a]=null;return n}var ts=Nt({week:"narrow"}),ns=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.handleRootEl=function(e){t.rootEl=e,io(t.props.elRef,e)},t.handleMoreLinkClick=function(e){var n=t.props;if(n.onMoreClick){var r=n.segsByEachCol,o=r.filter((function(e){return n.segIsHidden[e.eventRange.instance.instanceId]}));n.onMoreClick({date:n.date,allSegs:r,hiddenSegs:o,moreCnt:n.moreCnt,dayEl:t.rootEl,ev:e})}},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.context,n=t.options,o=t.viewApi,i=this.props,a=i.date,s=i.dateProfile,l={num:i.moreCnt,text:i.buildMoreLinkText(i.moreCnt),view:o},u=n.navLinks?{"data-navlink":kr(a,"week"),tabIndex:0}:{};return qr(ga,{date:a,dateProfile:s,todayRange:i.todayRange,showDayNumber:i.showDayNumber,extraHookProps:i.extraHookProps,elRef:this.handleRootEl},(function(t,o,c,d){return qr("td",r({ref:t,className:["fc-daygrid-day"].concat(o,i.extraClassNames||[]).join(" ")},c,i.extraDataAttrs),qr("div",{className:"fc-daygrid-day-frame fc-scrollgrid-sync-inner",ref:i.innerElRef},i.showWeekNumber&&qr(Ca,{date:a,defaultFormat:ts},(function(e,t,n,o){return qr("a",r({ref:e,className:["fc-daygrid-week-number"].concat(t).join(" ")},u),o)})),!d&&qr(is,{date:a,dateProfile:s,showDayNumber:i.showDayNumber,todayRange:i.todayRange,extraHookProps:i.extraHookProps}),qr("div",{className:"fc-daygrid-day-events",ref:i.fgContentElRef,style:{paddingBottom:i.fgPaddingBottom}},i.fgContent,Boolean(i.moreCnt)&&qr("div",{className:"fc-daygrid-day-bottom",style:{marginTop:i.moreMarginTop}},qr(bo,{hookProps:l,classNames:n.moreLinkClassNames,content:n.moreLinkContent,defaultContent:os,didMount:n.moreLinkDidMount,willUnmount:n.moreLinkWillUnmount},(function(t,n,r,o){return qr("a",{onClick:e.handleMoreLinkClick,ref:t,className:["fc-daygrid-more-link"].concat(n).join(" ")},o)})))),qr("div",{className:"fc-daygrid-day-bg"},i.bgContent)))}))},t}(mo);function rs(e){return e.dayNumberText}function os(e){return e.text}var is=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context.options.navLinks?{"data-navlink":kr(e.date),tabIndex:0}:{};return qr(va,{date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,showDayNumber:e.showDayNumber,extraHookProps:e.extraHookProps,defaultContent:rs},(function(e,n){return n&&qr("div",{className:"fc-daygrid-day-top",ref:e},qr("a",r({className:"fc-daygrid-day-number"},t),n))}))},t}(no),as=Nt({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"narrow"});function ss(e){var t=e.eventRange.ui.display;return"list-item"===t||"auto"===t&&!e.eventRange.def.allDay&&e.firstCol===e.lastCol}var ls=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options.eventTimeFormat||as,o=In(e.seg,n,t,!0,e.defaultDisplayEventEnd);return qr(ca,{seg:e.seg,timeText:o,defaultContent:us,isDragging:e.isDragging,isResizing:!1,isDateSelecting:!1,isSelected:e.isSelected,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday},(function(t,n,o,i){return qr("a",r({className:["fc-daygrid-event","fc-daygrid-dot-event"].concat(n).join(" "),ref:t},(a=e.seg,(s=a.eventRange.def.url)?{href:s}:{})),i);var a,s}))},t}(no);function us(e){return qr(Xr,null,qr("div",{className:"fc-daygrid-event-dot",style:{borderColor:e.borderColor||e.backgroundColor}}),e.timeText&&qr("div",{className:"fc-event-time"},e.timeText),qr("div",{className:"fc-event-title"},e.event.title||qr(Xr,null," ")))}var cs=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props;return qr(da,r({},e,{extraClassNames:["fc-daygrid-event","fc-daygrid-block-event","fc-h-event"],defaultTimeFormat:as,defaultDisplayEventEnd:e.defaultDisplayEventEnd,disableResizing:!e.seg.eventRange.def.allDay}))},t}(no);function ds(e,t,n,o,i,a,s,l){for(var u=[],c=[],d={},p={},f={},h={},g={},v=0;v<s;v++)u.push([]),c.push(0);for(var m=0,y=t=Tn(t,l);m<y.length;m++){T(R=y[m],i[R.eventRange.instance.instanceId+":"+R.firstCol]||0)}!0===n||!0===o?function(e,t,n,r){fs(e,t,n,!0,(function(e){return e.bottom<=r}))}(c,d,u,a):"number"==typeof n?function(e,t,n,r){fs(e,t,n,!1,(function(e,t){return t<r}))}(c,d,u,n):"number"==typeof o&&function(e,t,n,r){fs(e,t,n,!0,(function(e,t){return t<r}))}(c,d,u,o);for(var S=0;S<s;S++){for(var E=0,C=0,b=0,D=u[S];b<D.length;b++){var R,w=D[b];d[(R=w.seg).eventRange.instance.instanceId]||(p[R.eventRange.instance.instanceId]=w.top,R.firstCol===R.lastCol&&R.isStart&&R.isEnd?(f[R.eventRange.instance.instanceId]=w.top-E,C=0,E=w.bottom):C+=w.bottom-w.top)}C&&(c[S]?h[S]=C:g[S]=C)}function T(e,t){if(!x(e,t,0))for(var n=e.firstCol;n<=e.lastCol;n++)for(var r=0,o=u[n];r<o.length;r++){if(x(e,t,o[r].bottom))return}}function x(e,t,n){if(function(e,t,n){for(var r=e.firstCol;r<=e.lastCol;r++)for(var o=0,i=u[r];o<i.length;o++){var a=i[o];if(n<a.bottom&&n+t>a.top)return!1}return!0}(e,t,n)){for(var r=e.firstCol;r<=e.lastCol;r++){for(var o=u[r],i=0;i<o.length&&n>=o[i].top;)i++;o.splice(i,0,{seg:e,top:n,bottom:n+t})}return!0}return!1}for(var k in i)i[k]||(d[k.split(":")[0]]=!0);return{segsByFirstCol:u.map(ps),segsByEachCol:u.map((function(t,n){var o=function(e){for(var t=[],n=0,r=e;n<r.length;n++){var o=r[n];t.push(o.seg)}return t}(t);return o=function(e,t,n){for(var o=t,i=De(o,1),a={start:o,end:i},s=[],l=0,u=e;l<u.length;l++){var c=u[l],d=c.eventRange,p=d.range,f=gn(p,a);f&&s.push(r(r({},c),{firstCol:n,lastCol:n,eventRange:{def:d.def,ui:r(r({},d.ui),{durationEditable:!1}),instance:d.instance,range:f},isStart:c.isStart&&f.start.valueOf()===p.start.valueOf(),isEnd:c.isEnd&&f.end.valueOf()===p.end.valueOf()}))}return s}(o,e[n].date,n)})),segIsHidden:d,segTops:p,segMarginTops:f,moreCnts:c,moreTops:h,paddingBottoms:g}}function ps(e,t){for(var n=[],r=0,o=e;r<o.length;r++){var i=o[r];i.seg.firstCol===t&&n.push(i.seg)}return n}function fs(e,t,n,r,o){for(var i=e.length,a={},s=[],l=0;l<i;l++)s.push([]);for(l=0;l<i;l++)for(var u=0,c=0,d=n[l];c<d.length;c++){var p=d[c];o(p,u)?f(p):h(p),p.top!==p.bottom&&u++}function f(e){var t=e.seg,n=t.eventRange.instance.instanceId;if(!a[n]){a[n]=!0;for(var r=t.firstCol;r<=t.lastCol;r++)s[r].push(e)}}function h(n){var o=n.seg,i=o.eventRange.instance.instanceId;if(!t[i]){t[i]=!0;for(var a=o.firstCol;a<=o.lastCol;a++){var l=++e[a];if(r&&1===l){var u=s[a].pop();u&&h(u)}}}}}var hs=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.cellElRefs=new Xi,t.frameElRefs=new Xi,t.fgElRefs=new Xi,t.segHarnessRefs=new Xi,t.rootElRef=Zr(),t.state={framePositions:null,maxContentHeight:null,segHeights:{}},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.state,r=this.context,o=t.cells.length,i=Qa(t.businessHourSegs,o),a=Qa(t.bgEventSegs,o),s=Qa(this.getHighlightSegs(),o),l=Qa(this.getMirrorSegs(),o),u=ds(t.cells,t.fgEventSegs,t.dayMaxEvents,t.dayMaxEventRows,n.segHeights,n.maxContentHeight,o,r.options.eventOrder),c=u.paddingBottoms,d=u.segsByFirstCol,p=u.segsByEachCol,f=u.segIsHidden,h=u.segTops,g=u.segMarginTops,v=u.moreCnts,m=u.moreTops,y=t.eventDrag&&t.eventDrag.affectedInstances||t.eventResize&&t.eventResize.affectedInstances||{};return qr("tr",{ref:this.rootElRef},t.renderIntro&&t.renderIntro(),t.cells.map((function(n,r){var o=e.renderFgSegs(d[r],f,h,g,y,t.todayRange),u=e.renderFgSegs(l[r],{},h,{},{},t.todayRange,Boolean(t.eventDrag),Boolean(t.eventResize),!1),S=t.showWeekNumbers&&0===r;return qr(ns,{key:n.key,elRef:e.cellElRefs.createRef(n.key),innerElRef:e.frameElRefs.createRef(n.key),dateProfile:t.dateProfile,date:n.date,showDayNumber:t.showDayNumbers||S,showWeekNumber:S,todayRange:t.todayRange,extraHookProps:n.extraHookProps,extraDataAttrs:n.extraDataAttrs,extraClassNames:n.extraClassNames,moreCnt:v[r],buildMoreLinkText:t.buildMoreLinkText,onMoreClick:t.onMoreClick,segIsHidden:f,moreMarginTop:m[r],segsByEachCol:p[r],fgPaddingBottom:c[r],fgContentElRef:e.fgElRefs.createRef(n.key),fgContent:qr(Xr,null,qr(Xr,null,o),qr(Xr,null,u)),bgContent:qr(Xr,null,e.renderFillSegs(s[r],"highlight"),e.renderFillSegs(i[r],"non-business"),e.renderFillSegs(a[r],"bg-event"))})})))},t.prototype.componentDidMount=function(){this.updateSizing(!0)},t.prototype.componentDidUpdate=function(e,t){var n=this.props;this.updateSizing(!qe(e,n))},t.prototype.getHighlightSegs=function(){var e=this.props;return e.eventDrag&&e.eventDrag.segs.length?e.eventDrag.segs:e.eventResize&&e.eventResize.segs.length?e.eventResize.segs:e.dateSelectionSegs},t.prototype.getMirrorSegs=function(){var e=this.props;return e.eventResize&&e.eventResize.segs.length?e.eventResize.segs:[]},t.prototype.renderFgSegs=function(e,t,n,o,i,a,s,l,u){var c=this.context,d=this.props.eventSelection,p=this.state.framePositions,f=1===this.props.cells.length,h=[];if(p)for(var g=0,v=e;g<v.length;g++){var m=v[g],y=m.eventRange.instance.instanceId,S=s||l||u,E=i[y],C=t[y]||E,b=t[y]||S||m.firstCol!==m.lastCol||!m.isStart||!m.isEnd,D=void 0,R=void 0,w=void 0,T=void 0;b?(R=n[y],c.isRtl?(T=0,w=p.lefts[m.lastCol]-p.lefts[m.firstCol]):(w=0,T=p.rights[m.firstCol]-p.rights[m.lastCol])):D=o[y],h.push(qr("div",{className:"fc-daygrid-event-harness"+(b?" fc-daygrid-event-harness-abs":""),key:y,ref:S?null:this.segHarnessRefs.createRef(y+":"+m.firstCol),style:{visibility:C?"hidden":"",marginTop:D||"",top:R||"",left:w||"",right:T||""}},ss(m)?qr(ls,r({seg:m,isDragging:s,isSelected:y===d,defaultDisplayEventEnd:f},Nn(m,a))):qr(cs,r({seg:m,isDragging:s,isResizing:l,isDateSelecting:u,isSelected:y===d,defaultDisplayEventEnd:f},Nn(m,a)))))}return h},t.prototype.renderFillSegs=function(e,t){var n=this.context.isRtl,i=this.props.todayRange,a=this.state.framePositions,s=[];if(a)for(var l=0,u=e;l<u.length;l++){var c=u[l],d=n?{right:0,left:a.lefts[c.lastCol]-a.lefts[c.firstCol]}:{left:0,right:a.rights[c.firstCol]-a.rights[c.lastCol]};s.push(qr("div",{key:Hn(c.eventRange),className:"fc-daygrid-bg-harness",style:d},"bg-event"===t?qr(Sa,r({seg:c},Nn(c,i))):ya(t)))}return qr.apply(void 0,o([Xr,{}],s))},t.prototype.updateSizing=function(e){var t=this.props,n=this.frameElRefs;if(null!==t.clientWidth){if(e){var r=t.cells.map((function(e){return n.currentMap[e.key]}));if(r.length){var o=this.rootElRef.current;this.setState({framePositions:new Br(o,r,!0,!1)})}}var i=!0===t.dayMaxEvents||!0===t.dayMaxEventRows;this.setState({segHeights:this.computeSegHeights(),maxContentHeight:i?this.computeMaxContentHeight():null})}},t.prototype.computeSegHeights=function(){return Fe(this.segHarnessRefs.currentMap,(function(e){return e.getBoundingClientRect().height}))},t.prototype.computeMaxContentHeight=function(){var e=this.props.cells[0].key,t=this.cellElRefs.currentMap[e],n=this.fgElRefs.currentMap[e];return t.getBoundingClientRect().bottom-n.getBoundingClientRect().top},t.prototype.getCellEls=function(){var e=this.cellElRefs.currentMap;return this.props.cells.map((function(t){return e[t.key]}))},t}(mo);hs.addStateEquality({segHeights:qe});var gs=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.repositioner=new ei(t.updateSize.bind(t)),t.handleRootEl=function(e){t.rootEl=e,t.props.elRef&&io(t.props.elRef,e)},t.handleDocumentMousedown=function(e){var n=t.props.onClose;n&&!t.rootEl.contains(e.target)&&n()},t.handleDocumentScroll=function(){t.repositioner.request(10)},t.handleCloseClick=function(){var e=t.props.onClose;e&&e()},t}return n(t,e),t.prototype.render=function(){var e=this.context.theme,t=this.props,n=["fc-popover",e.getClass("popover")].concat(t.extraClassNames||[]);return qr("div",r({className:n.join(" ")},t.extraAttrs,{ref:this.handleRootEl}),qr("div",{className:"fc-popover-header "+e.getClass("popoverHeader")},qr("span",{className:"fc-popover-title"},t.title),qr("span",{className:"fc-popover-close "+e.getIconClass("close"),onClick:this.handleCloseClick})),qr("div",{className:"fc-popover-body "+e.getClass("popoverContent")},t.children))},t.prototype.componentDidMount=function(){document.addEventListener("mousedown",this.handleDocumentMousedown),document.addEventListener("scroll",this.handleDocumentScroll),this.updateSize()},t.prototype.componentWillUnmount=function(){document.removeEventListener("mousedown",this.handleDocumentMousedown),document.removeEventListener("scroll",this.handleDocumentScroll)},t.prototype.updateSize=function(){var e=this.props,t=e.alignmentEl,n=e.topAlignmentEl,r=this.rootEl;if(r){var o,i=r.getBoundingClientRect(),a=t.getBoundingClientRect(),s=n?n.getBoundingClientRect().top:a.top;s=Math.min(s,window.innerHeight-i.height-10),s=Math.max(s,10),o=this.context.isRtl?a.right-i.width:a.left,o=Math.min(o,window.innerWidth-i.width-10),$(r,{top:s,left:o=Math.max(o,10)})}},t}(no),vs=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.handlePopoverEl=function(e){t.popoverEl=e,e?t.context.registerInteractiveComponent(t,{el:e,useEventCenter:!1}):t.context.unregisterInteractiveComponent(t)},t}return n(t,e),t.prototype.render=function(){var e=this.context,t=e.options,n=e.dateEnv,o=this.props,i=o.date,a=o.hiddenInstances,s=o.todayRange,l=o.dateProfile,u=o.selectedInstanceId,c=n.format(i,t.dayPopoverFormat);return qr(ga,{date:i,dateProfile:l,todayRange:s,elRef:this.handlePopoverEl},(function(e,t,n){return qr(gs,{elRef:e,title:c,extraClassNames:["fc-more-popover"].concat(t),extraAttrs:n,onClose:o.onCloseClick,alignmentEl:o.alignmentEl,topAlignmentEl:o.topAlignmentEl},qr(va,{date:i,dateProfile:l,todayRange:s},(function(e,t){return t&&qr("div",{className:"fc-more-popover-misc",ref:e},t)})),o.segs.map((function(e){var t=e.eventRange.instance.instanceId;return qr("div",{className:"fc-daygrid-event-harness",key:t,style:{visibility:a[t]?"hidden":""}},ss(e)?qr(ls,r({seg:e,isDragging:!1,isSelected:t===u,defaultDisplayEventEnd:!1},Nn(e,s))):qr(cs,r({seg:e,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:t===u,defaultDisplayEventEnd:!1},Nn(e,s))))})))}))},t.prototype.queryHit=function(e,t,n,r){var o=this.props.date;if(e<n&&t<r)return{component:this,dateSpan:{allDay:!0,range:{start:o,end:De(o,1)}},dayEl:this.popoverEl,rect:{left:0,top:0,right:n,bottom:r},layer:1}},t.prototype.isPopover=function(){return!0},t}(mo),ms=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.splitBusinessHourSegs=gt($a),t.splitBgEventSegs=gt($a),t.splitFgEventSegs=gt($a),t.splitDateSelectionSegs=gt($a),t.splitEventDrag=gt(es),t.splitEventResize=gt(es),t.buildBuildMoreLinkText=gt(ys),t.rowRefs=new Xi,t.state={morePopoverState:null},t.handleRootEl=function(e){t.rootEl=e,io(t.props.elRef,e)},t.handleMoreLinkClick=function(e){var n=t.context,o=n.dateEnv,i=n.options.moreLinkClick;function a(e){var t=e.eventRange,r=t.def,i=t.instance,a=t.range;return{event:new Qn(n,r,i),start:o.toDate(a.start),end:o.toDate(a.end),isStart:e.isStart,isEnd:e.isEnd}}"function"==typeof i&&(i=i({date:o.toDate(e.date),allDay:!0,allSegs:e.allSegs.map(a),hiddenSegs:e.hiddenSegs.map(a),jsEvent:e.ev,view:n.viewApi})),i&&"popover"!==i?"string"==typeof i&&n.calendarApi.zoomTo(e.date,i):t.setState({morePopoverState:r(r({},e),{currentFgEventSegs:t.props.fgEventSegs})})},t.handleMorePopoverClose=function(){t.setState({morePopoverState:null})},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=t.dateProfile,r=t.dayMaxEventRows,o=t.dayMaxEvents,i=t.expandRows,a=this.state.morePopoverState,s=t.cells.length,l=this.splitBusinessHourSegs(t.businessHourSegs,s),u=this.splitBgEventSegs(t.bgEventSegs,s),c=this.splitFgEventSegs(t.fgEventSegs,s),d=this.splitDateSelectionSegs(t.dateSelectionSegs,s),p=this.splitEventDrag(t.eventDrag,s),f=this.splitEventResize(t.eventResize,s),h=this.buildBuildMoreLinkText(this.context.options.moreLinkText),g=!0===o||!0===r;return g&&!i&&(g=!1,r=null,o=null),qr("div",{className:["fc-daygrid-body",g?"fc-daygrid-body-balanced":"fc-daygrid-body-unbalanced",i?"":"fc-daygrid-body-natural"].join(" "),ref:this.handleRootEl,style:{width:t.clientWidth,minWidth:t.tableMinWidth}},qr(Ui,{unit:"day"},(function(g,v){return qr(Xr,null,qr("table",{className:"fc-scrollgrid-sync-table",style:{width:t.clientWidth,minWidth:t.tableMinWidth,height:i?t.clientHeight:""}},t.colGroupNode,qr("tbody",null,t.cells.map((function(i,a){return qr(hs,{ref:e.rowRefs.createRef(a),key:i.length?i[0].date.toISOString():a,showDayNumbers:s>1,showWeekNumbers:t.showWeekNumbers,todayRange:v,dateProfile:n,cells:i,renderIntro:t.renderRowIntro,businessHourSegs:l[a],eventSelection:t.eventSelection,bgEventSegs:u[a].filter(Ss),fgEventSegs:c[a],dateSelectionSegs:d[a],eventDrag:p[a],eventResize:f[a],dayMaxEvents:o,dayMaxEventRows:r,clientWidth:t.clientWidth,clientHeight:t.clientHeight,buildMoreLinkText:h,onMoreClick:e.handleMoreLinkClick})})))),!t.forPrint&&a&&a.currentFgEventSegs===t.fgEventSegs&&qr(vs,{date:a.date,dateProfile:n,segs:a.allSegs,alignmentEl:a.dayEl,topAlignmentEl:1===s?t.headerAlignElRef.current:null,onCloseClick:e.handleMorePopoverClose,selectedInstanceId:t.eventSelection,hiddenInstances:(t.eventDrag?t.eventDrag.affectedInstances:null)||(t.eventResize?t.eventResize.affectedInstances:null)||{},todayRange:v}))})))},t.prototype.prepareHits=function(){this.rowPositions=new Br(this.rootEl,this.rowRefs.collect().map((function(e){return e.getCellEls()[0]})),!1,!0),this.colPositions=new Br(this.rootEl,this.rowRefs.currentMap[0].getCellEls(),!0,!1)},t.prototype.positionToHit=function(e,t){var n=this.colPositions,r=this.rowPositions,o=n.leftToIndex(e),i=r.topToIndex(t);if(null!=i&&null!=o)return{row:i,col:o,dateSpan:{range:this.getCellRange(i,o),allDay:!0},dayEl:this.getCellEl(i,o),relativeRect:{left:n.lefts[o],right:n.rights[o],top:r.tops[i],bottom:r.bottoms[i]}}},t.prototype.getCellEl=function(e,t){return this.rowRefs.currentMap[e].getCellEls()[t]},t.prototype.getCellRange=function(e,t){var n=this.props.cells[e][t].date;return{start:n,end:De(n,1)}},t}(mo);function ys(e){return"function"==typeof e?e:function(t){return"+"+t+" "+e}}function Ss(e){return e.eventRange.def.allDay}var Es=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.slicer=new Cs,t.tableRef=Zr(),t.handleRootEl=function(e){e?t.context.registerInteractiveComponent(t,{el:e}):t.context.unregisterInteractiveComponent(t)},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context;return qr(ms,r({ref:this.tableRef,elRef:this.handleRootEl},this.slicer.sliceProps(e,e.dateProfile,e.nextDayThreshold,t,e.dayTableModel),{dateProfile:e.dateProfile,cells:e.dayTableModel.cells,colGroupNode:e.colGroupNode,tableMinWidth:e.tableMinWidth,renderRowIntro:e.renderRowIntro,dayMaxEvents:e.dayMaxEvents,dayMaxEventRows:e.dayMaxEventRows,showWeekNumbers:e.showWeekNumbers,expandRows:e.expandRows,headerAlignElRef:e.headerAlignElRef,clientWidth:e.clientWidth,clientHeight:e.clientHeight,forPrint:e.forPrint}))},t.prototype.prepareHits=function(){this.tableRef.current.prepareHits()},t.prototype.queryHit=function(e,t){var n=this.tableRef.current.positionToHit(e,t);if(n)return{component:this,dateSpan:n.dateSpan,dayEl:n.dayEl,rect:{left:n.relativeRect.left,right:n.relativeRect.right,top:n.relativeRect.top,bottom:n.relativeRect.bottom},layer:0}},t}(mo),Cs=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.forceDayIfListItem=!0,t}return n(t,e),t.prototype.sliceRange=function(e,t){return t.sliceRange(e)},t}(Gi),bs=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buildDayTableModel=gt(Ds),t.headerRef=Zr(),t.tableRef=Zr(),t}return n(t,e),t.prototype.render=function(){var e=this,t=this.context,n=t.options,r=t.dateProfileGenerator,o=this.props,i=this.buildDayTableModel(o.dateProfile,r),a=n.dayHeaders&&qr(zi,{ref:this.headerRef,dateProfile:o.dateProfile,dates:i.headerDates,datesRepDistinctDays:1===i.rowCnt}),s=function(t){return qr(Es,{ref:e.tableRef,dateProfile:o.dateProfile,dayTableModel:i,businessHours:o.businessHours,dateSelection:o.dateSelection,eventStore:o.eventStore,eventUiBases:o.eventUiBases,eventSelection:o.eventSelection,eventDrag:o.eventDrag,eventResize:o.eventResize,nextDayThreshold:n.nextDayThreshold,colGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,dayMaxEvents:n.dayMaxEvents,dayMaxEventRows:n.dayMaxEventRows,showWeekNumbers:n.weekNumbers,expandRows:!o.isHeightAuto,headerAlignElRef:e.headerElRef,clientWidth:t.clientWidth,clientHeight:t.clientHeight,forPrint:o.forPrint})};return n.dayMinWidth?this.renderHScrollLayout(a,s,i.colCnt,n.dayMinWidth):this.renderSimpleLayout(a,s)},t}(Ja);function Ds(e,t){var n=new Fi(e.renderRange,t);return new ji(n,/year|month|week/.test(e.currentRangeUnit))}var Rs=yo({initialView:"dayGridMonth",optionRefiners:{moreLinkClick:Vt,moreLinkClassNames:Vt,moreLinkContent:Vt,moreLinkDidMount:Vt,moreLinkWillUnmount:Vt},views:{dayGrid:{component:bs,dateProfileGeneratorClass:function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.buildRenderRange=function(t,n,r){var o,i=this.props.dateEnv,a=e.prototype.buildRenderRange.call(this,t,n,r),s=a.start,l=a.end;(/^(year|month)$/.test(n)&&(s=i.startOfWeek(s),(o=i.startOfWeek(l)).valueOf()!==l.valueOf()&&(l=be(o,1))),this.props.monthMode&&this.props.fixedWeekCount)&&(l=be(l,6-Math.ceil(we(s,l))));return{start:s,end:l}},t}(Ho)},dayGridDay:{type:"dayGrid",duration:{days:1}},dayGridWeek:{type:"dayGrid",duration:{weeks:1}},dayGridMonth:{type:"dayGrid",duration:{months:1},monthMode:!0,fixedWeekCount:!0}}}),ws=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.getKeyInfo=function(){return{allDay:{},timed:{}}},t.prototype.getKeysForDateSpan=function(e){return e.allDay?["allDay"]:["timed"]},t.prototype.getKeysForEventDef=function(e){return e.allDay?Cn(e)?["timed","allDay"]:["allDay"]:["timed"]},t}(Dr),Ts=function(){function e(e,t,n){this.positions=e,this.dateProfile=t,this.slatMetas=n}return e.prototype.safeComputeTop=function(e){var t=this.dateProfile;if(Sn(t.currentRange,e)){var n=Pe(e),r=e.valueOf()-n.valueOf();if(r>=ut(t.slotMinTime)&&r<ut(t.slotMaxTime))return this.computeTimeTop(tt(r))}},e.prototype.computeDateTop=function(e,t){return t||(t=Pe(e)),this.computeTimeTop(tt(e.valueOf()-t.valueOf()))},e.prototype.computeTimeTop=function(e){var t,n,r=this.positions,o=this.dateProfile,i=this.slatMetas,a=r.els.length,s=i[1].date.valueOf()-i[0].date.valueOf(),l=(e.milliseconds-ut(o.slotMinTime))/s;return l=Math.max(0,l),l=Math.min(a,l),t=Math.floor(l),n=l-(t=Math.min(t,a-1)),r.tops[t]+r.getHeight(t)*n},e}(),xs=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}],ks=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.rootElRef=Zr(),t.slatElRefs=new Xi,t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context;return qr("div",{className:"fc-timegrid-slots",ref:this.rootElRef},qr("table",{className:t.theme.getClass("table"),style:{minWidth:e.tableMinWidth,width:e.clientWidth,height:e.minHeight}},e.tableColGroupNode,qr(Ms,{slatElRefs:this.slatElRefs,axis:e.axis,slatMetas:e.slatMetas})))},t.prototype.componentDidMount=function(){this.updateSizing()},t.prototype.componentDidUpdate=function(){this.updateSizing()},t.prototype.componentWillUnmount=function(){this.props.onCoords&&this.props.onCoords(null)},t.prototype.updateSizing=function(){var e,t=this.props;t.onCoords&&null!==t.clientWidth&&(this.rootElRef.current.offsetHeight&&t.onCoords(new Ts(new Br(this.rootElRef.current,(e=this.slatElRefs.currentMap,t.slatMetas.map((function(t){return e[t.key]}))),!1,!0),this.props.dateProfile,t.slatMetas)))},t}(no);var Ms=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options,o=e.slatElRefs;return qr("tbody",null,e.slatMetas.map((function(i,a){var s={time:i.time,date:t.dateEnv.toDate(i.date),view:t.viewApi},l=["fc-timegrid-slot","fc-timegrid-slot-lane",i.isLabeled?"":"fc-timegrid-slot-minor"];return qr("tr",{key:i.key,ref:o.createRef(i.key)},e.axis&&qr(Is,r({},i)),qr(bo,{hookProps:s,classNames:n.slotLaneClassNames,content:n.slotLaneContent,didMount:n.slotLaneDidMount,willUnmount:n.slotLaneWillUnmount},(function(e,t,n,r){return qr("td",{ref:e,className:l.concat(t).join(" "),"data-time":i.isoTimeStr},r)})))})))},t}(no),Ps=Nt({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"short"});function Is(e){var t=["fc-timegrid-slot","fc-timegrid-slot-label",e.isLabeled?"fc-scrollgrid-shrink":"fc-timegrid-slot-minor"];return qr(Qr.Consumer,null,(function(n){if(e.isLabeled){var r=n.dateEnv,o=n.options,i=n.viewApi,a=null==o.slotLabelFormat?Ps:Array.isArray(o.slotLabelFormat)?Nt(o.slotLabelFormat[0]):Nt(o.slotLabelFormat),s={time:e.time,date:r.toDate(e.date),view:i,text:r.format(e.date,a)};return qr(bo,{hookProps:s,classNames:o.slotLabelClassNames,content:o.slotLabelContent,defaultContent:Ns,didMount:o.slotLabelDidMount,willUnmount:o.slotLabelWillUnmount},(function(n,r,o,i){return qr("td",{ref:n,className:t.concat(r).join(" "),"data-time":e.isoTimeStr},qr("div",{className:"fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame"},qr("div",{className:"fc-timegrid-slot-label-cushion fc-scrollgrid-shrink-cushion",ref:o},i)))}))}return qr("td",{className:t.join(" "),"data-time":e.isoTimeStr})}))}function Ns(e){return e.text}function _s(e,t,n,r,o){for(var i=new Date(0),a=e,s=tt(0),l=n||function(e){var t,n,r;for(t=xs.length-1;t>=0;t--)if(n=tt(xs[t]),null!==(r=ct(n,e))&&r>1)return n;return e}(r),u=[];ut(a)<ut(t);){var c=o.add(i,a),d=null!==ct(s,l);u.push({date:c,time:a,key:c.toISOString(),isoTimeStr:ft(c),isLabeled:d}),a=ot(a,r),s=ot(s,r)}return u}var Hs=Nt({week:"short"}),Os=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.allDaySplitter=new ws,t.headerElRef=Zr(),t.rootElRef=Zr(),t.scrollerElRef=Zr(),t.state={slatCoords:null},t.handleScrollTopRequest=function(e){var n=t.scrollerElRef.current;n&&(n.scrollTop=e)},t.renderHeadAxis=function(e){void 0===e&&(e="");var n=t.context.options,o=t.props.dateProfile.renderRange,i=Te(o.start,o.end),a=n.navLinks&&1===i?{"data-navlink":kr(o.start,"week"),tabIndex:0}:{};return n.weekNumbers?qr(Ca,{date:o.start,defaultFormat:Hs},(function(t,n,o,i){return qr("th",{ref:t,className:["fc-timegrid-axis","fc-scrollgrid-shrink"].concat(n).join(" ")},qr("div",{className:"fc-timegrid-axis-frame fc-scrollgrid-shrink-frame fc-timegrid-axis-frame-liquid",style:{height:e}},qr("a",r({ref:o,className:"fc-timegrid-axis-cushion fc-scrollgrid-shrink-cushion"},a),i)))})):qr("th",{className:"fc-timegrid-axis"},qr("div",{className:"fc-timegrid-axis-frame",style:{height:e}}))},t.renderTableRowAxis=function(e){var n=t.context,r=n.options,o=n.viewApi,i={text:r.allDayText,view:o};return qr(bo,{hookProps:i,classNames:r.allDayClassNames,content:r.allDayContent,defaultContent:Ws,didMount:r.allDayDidMount,willUnmount:r.allDayWillUnmount},(function(t,n,r,o){return qr("td",{ref:t,className:["fc-timegrid-axis","fc-scrollgrid-shrink"].concat(n).join(" ")},qr("div",{className:"fc-timegrid-axis-frame fc-scrollgrid-shrink-frame"+(null==e?" fc-timegrid-axis-frame-liquid":""),style:{height:e}},qr("span",{className:"fc-timegrid-axis-cushion fc-scrollgrid-shrink-cushion",ref:r},o)))}))},t.handleSlatCoords=function(e){t.setState({slatCoords:e})},t}return n(t,e),t.prototype.renderSimpleLayout=function(e,t,n){var r=this.context,o=this.props,i=[],a=sa(r.options);return e&&i.push({type:"header",key:"header",isSticky:a,chunk:{elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}}),t&&(i.push({type:"body",key:"all-day",chunk:{content:t}}),i.push({type:"body",key:"all-day-divider",outerContent:qr("tr",{className:"fc-scrollgrid-section"},qr("td",{className:"fc-timegrid-divider "+r.theme.getClass("tableCellShaded")}))})),i.push({type:"body",key:"body",liquid:!0,expandRows:Boolean(r.options.expandRows),chunk:{scrollerElRef:this.scrollerElRef,content:n}}),qr(Mo,{viewSpec:r.viewSpec,elRef:this.rootElRef},(function(e,t){return qr("div",{className:["fc-timegrid"].concat(t).join(" "),ref:e},qr(ua,{liquid:!o.isHeightAuto&&!o.forPrint,cols:[{width:"shrink"}],sections:i}))}))},t.prototype.renderHScrollLayout=function(e,t,n,r,o,i,a){var s=this,l=this.context.pluginHooks.scrollGridImpl;if(!l)throw new Error("No ScrollGrid implementation");var u=this.context,c=this.props,d=!c.forPrint&&sa(u.options),p=!c.forPrint&&la(u.options),f=[];e&&f.push({type:"header",key:"header",isSticky:d,syncRowHeights:!0,chunks:[{key:"axis",rowContent:function(e){return qr("tr",null,s.renderHeadAxis(e.rowSyncHeights[0]))}},{key:"cols",elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}]}),t&&(f.push({type:"body",key:"all-day",syncRowHeights:!0,chunks:[{key:"axis",rowContent:function(e){return qr("tr",null,s.renderTableRowAxis(e.rowSyncHeights[0]))}},{key:"cols",content:t}]}),f.push({key:"all-day-divider",type:"body",outerContent:qr("tr",{className:"fc-scrollgrid-section"},qr("td",{colSpan:2,className:"fc-timegrid-divider "+u.theme.getClass("tableCellShaded")}))}));var h=u.options.nowIndicator;return f.push({type:"body",key:"body",liquid:!0,expandRows:Boolean(u.options.expandRows),chunks:[{key:"axis",content:function(e){return qr("div",{className:"fc-timegrid-axis-chunk"},qr("table",null,e.tableColGroupNode,qr("tbody",null,qr(As,{slatMetas:i}))),qr("div",{className:"fc-timegrid-now-indicator-container"},qr(Ui,{unit:h?"minute":"day"},(function(e){var t=h&&a&&a.safeComputeTop(e);if("number"==typeof t)return qr(fa,{isAxis:!0,date:e},(function(e,n,r,o){return qr("div",{ref:e,className:["fc-timegrid-now-indicator-arrow"].concat(n).join(" "),style:{top:t}},o)}))}))))}},{key:"cols",scrollerElRef:this.scrollerElRef,content:n}]}),p&&f.push({key:"footer",type:"footer",isSticky:!0,chunks:[{key:"axis",content:aa},{key:"cols",content:aa}]}),qr(Mo,{viewSpec:u.viewSpec,elRef:this.rootElRef},(function(e,t){return qr("div",{className:["fc-timegrid"].concat(t).join(" "),ref:e},qr(l,{liquid:!c.isHeightAuto&&!c.forPrint,colGroups:[{width:"shrink",cols:[{width:"shrink"}]},{cols:[{span:r,minWidth:o}]}],sections:f}))}))},t.prototype.getAllDayMaxEventProps=function(){var e=this.context.options,t=e.dayMaxEvents,n=e.dayMaxEventRows;return!0!==t&&!0!==n||(t=void 0,n=5),{dayMaxEvents:t,dayMaxEventRows:n}},t}(mo);function Ws(e){return e.text}var As=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){return this.props.slatMetas.map((function(e){return qr("tr",{key:e.key},qr(Is,r({},e)))}))},t}(no);function Ls(e,t){var n,r=[];for(n=0;n<t;n++)r.push([]);if(e)for(n=0;n<e.length;n++)r[e[n].col].push(e[n]);return r}function Us(e,t){var n=[];if(e){for(a=0;a<t;a++)n[a]={affectedInstances:e.affectedInstances,isEvent:e.isEvent,segs:[]};for(var r=0,o=e.segs;r<o.length;r++){var i=o[r];n[i.col].segs.push(i)}}else for(var a=0;a<t;a++)n[a]=null;return n}function Bs(e,t,n,r,o){return zs(e,t,n,r),function(e,t){for(var n=0,r=e;n<r.length;n++){(c=r[n]).level=null,c.forwardCoord=null,c.backwardCoord=null,c.forwardPressure=null}var o,i=function(e){var t,n,r,o=[];for(t=0;t<e.length;t++){for(n=e[t],r=0;r<o.length&&Vs(n,o[r]).length;r++);n.level=r,(o[r]||(o[r]=[])).push(n)}return o}(e=Tn(e,t));if(function(e){var t,n,r,o,i;for(t=0;t<e.length;t++)for(n=e[t],r=0;r<n.length;r++)for((o=n[r]).forwardSegs=[],i=t+1;i<e.length;i++)Vs(o,e[i],o.forwardSegs)}(i),o=i[0]){for(var a=0,s=o;a<s.length;a++){Fs(c=s[a])}for(var l=0,u=o;l<u.length;l++){var c;js(c=u[l],0,0,t)}}return e}(e,o)}function zs(e,t,n,r){for(var o=0,i=e;o<i.length;o++){var a=i[o];a.top=n.computeDateTop(a.start,t),a.bottom=Math.max(a.top+(r||0),n.computeDateTop(a.end,t))}}function Vs(e,t,n){void 0===n&&(n=[]);for(var r=0;r<t.length;r++)o=e,i=t[r],o.bottom>i.top&&o.top<i.bottom&&n.push(t[r]);var o,i;return n}function Fs(e){var t,n,r=e.forwardSegs,o=0;if(null==e.forwardPressure){for(t=0;t<r.length;t++)Fs(n=r[t]),o=Math.max(o,1+n.forwardPressure);e.forwardPressure=o}}function js(e,t,n,r){var o,i=e.forwardSegs;if(null==e.forwardCoord)for(i.length?(!function(e,t){var n=e.map(Gs),r=[{field:"forwardPressure",order:-1},{field:"backwardCoord",order:1}].concat(t);n.sort((function(e,t){return he(e,t,r)})),n.map((function(e){return e._seg}))}(i,r),js(i[0],t+1,n,r),e.forwardCoord=i[0].backwardCoord):e.forwardCoord=1,e.backwardCoord=e.forwardCoord-(e.forwardCoord-n)/(t+1),o=0;o<i.length;o++)js(i[o],0,e.forwardCoord,r)}function Gs(e){var t=xn(e);return t.forwardPressure=e.forwardPressure,t.backwardCoord=e.backwardCoord,t}var qs=Nt({hour:"numeric",minute:"2-digit",meridiem:!1}),Ys=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=["fc-timegrid-event","fc-v-event"];return this.props.isCondensed&&e.push("fc-timegrid-event-condensed"),qr(da,r({},this.props,{defaultTimeFormat:qs,extraClassNames:e}))},t}(no);Ei.timeGridEventCondensedHeight=30;var Zs=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context.options.selectMirror,o=t.eventDrag&&t.eventDrag.segs||t.eventResize&&t.eventResize.segs||n&&t.dateSelectionSegs||[],i=t.eventDrag&&t.eventDrag.affectedInstances||t.eventResize&&t.eventResize.affectedInstances||{};return qr(ga,{elRef:t.elRef,date:t.date,dateProfile:t.dateProfile,todayRange:t.todayRange,extraHookProps:t.extraHookProps},(function(a,s,l){return qr("td",r({ref:a,className:["fc-timegrid-col"].concat(s,t.extraClassNames||[]).join(" ")},l,t.extraDataAttrs),qr("div",{className:"fc-timegrid-col-frame"},qr("div",{className:"fc-timegrid-col-bg"},e.renderFillSegs(t.businessHourSegs,"non-business"),e.renderFillSegs(t.bgEventSegs,"bg-event"),e.renderFillSegs(t.dateSelectionSegs,"highlight")),qr("div",{className:"fc-timegrid-col-events"},e.renderFgSegs(t.fgEventSegs,i)),qr("div",{className:"fc-timegrid-col-events"},e.renderFgSegs(o,{},Boolean(t.eventDrag),Boolean(t.eventResize),Boolean(n))),qr("div",{className:"fc-timegrid-now-indicator-container"},e.renderNowIndicator(t.nowIndicatorSegs)),qr(Xs,{date:t.date,dateProfile:t.dateProfile,todayRange:t.todayRange,extraHookProps:t.extraHookProps})))}))},t.prototype.renderFgSegs=function(e,t,n,r,o){var i=this.props;return i.forPrint?this.renderPrintFgSegs(e):i.slatCoords?this.renderPositionedFgSegs(e,t,n,r,o):void 0},t.prototype.renderPrintFgSegs=function(e){var t=this.props;return e.map((function(e){return qr("div",{className:"fc-timegrid-event-harness",key:e.eventRange.instance.instanceId},qr(Ys,r({seg:e,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:!1,isCondensed:!1},Nn(e,t.todayRange,t.nowDate))))}))},t.prototype.renderPositionedFgSegs=function(e,t,n,o,i){var a=this,s=this.context,l=this.props;return(e=Bs(e,l.date,l.slatCoords,s.options.eventMinHeight,s.options.eventOrder)).map((function(e){var s=e.eventRange.instance.instanceId,u=n||o||i?r({left:0,right:0},a.computeSegTopBottomCss(e)):a.computeFgSegPositionCss(e);return qr("div",{className:"fc-timegrid-event-harness"+(e.level>0?" fc-timegrid-event-harness-inset":""),key:s,style:r({visibility:t[s]?"hidden":""},u)},qr(Ys,r({seg:e,isDragging:n,isResizing:o,isDateSelecting:i,isSelected:s===l.eventSelection,isCondensed:e.bottom-e.top<Ei.timeGridEventCondensedHeight},Nn(e,l.todayRange,l.nowDate))))}))},t.prototype.renderFillSegs=function(e,t){var n=this,o=this.context,i=this.props;if(i.slatCoords){zs(e,i.date,i.slatCoords,o.options.eventMinHeight);var a=e.map((function(e){return qr("div",{key:Hn(e.eventRange),className:"fc-timegrid-bg-harness",style:n.computeSegTopBottomCss(e)},"bg-event"===t?qr(Sa,r({seg:e},Nn(e,i.todayRange,i.nowDate))):ya(t))}));return qr(Xr,null,a)}},t.prototype.renderNowIndicator=function(e){var t=this.props,n=t.slatCoords,r=t.date;if(n)return e.map((function(e,t){return qr(fa,{isAxis:!1,date:r,key:t},(function(t,o,i,a){return qr("div",{ref:t,className:["fc-timegrid-now-indicator-line"].concat(o).join(" "),style:{top:n.computeDateTop(e.start,r)}},a)}))}))},t.prototype.computeFgSegPositionCss=function(e){var t,n,o=this.context,i=o.isRtl,a=o.options.slotEventOverlap,s=e.backwardCoord,l=e.forwardCoord;a&&(l=Math.min(1,s+2*(l-s))),i?(t=1-l,n=s):(t=s,n=1-l);var u={zIndex:e.level+1,left:100*t+"%",right:100*n+"%"};return a&&e.forwardPressure&&(u[i?"marginLeft":"marginRight"]=20),r(r({},u),this.computeSegTopBottomCss(e))},t.prototype.computeSegTopBottomCss=function(e){return{top:e.top,bottom:-e.bottom}},t}(no),Xs=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props;return qr(va,{date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,extraHookProps:e.extraHookProps},(function(e,t){return t&&qr("div",{className:"fc-timegrid-col-misc",ref:e},t)}))},t}(no),Ks=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.splitFgEventSegs=gt(Ls),t.splitBgEventSegs=gt(Ls),t.splitBusinessHourSegs=gt(Ls),t.splitNowIndicatorSegs=gt(Ls),t.splitDateSelectionSegs=gt(Ls),t.splitEventDrag=gt(Us),t.splitEventResize=gt(Us),t.rootElRef=Zr(),t.cellElRefs=new Xi,t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context.options.nowIndicator&&t.slatCoords&&t.slatCoords.safeComputeTop(t.nowDate),r=t.cells.length,o=this.splitFgEventSegs(t.fgEventSegs,r),i=this.splitBgEventSegs(t.bgEventSegs,r),a=this.splitBusinessHourSegs(t.businessHourSegs,r),s=this.splitNowIndicatorSegs(t.nowIndicatorSegs,r),l=this.splitDateSelectionSegs(t.dateSelectionSegs,r),u=this.splitEventDrag(t.eventDrag,r),c=this.splitEventResize(t.eventResize,r);return qr("div",{className:"fc-timegrid-cols",ref:this.rootElRef},qr("table",{style:{minWidth:t.tableMinWidth,width:t.clientWidth}},t.tableColGroupNode,qr("tbody",null,qr("tr",null,t.axis&&qr("td",{className:"fc-timegrid-col fc-timegrid-axis"},qr("div",{className:"fc-timegrid-col-frame"},qr("div",{className:"fc-timegrid-now-indicator-container"},"number"==typeof n&&qr(fa,{isAxis:!0,date:t.nowDate},(function(e,t,r,o){return qr("div",{ref:e,className:["fc-timegrid-now-indicator-arrow"].concat(t).join(" "),style:{top:n}},o)}))))),t.cells.map((function(n,r){return qr(Zs,{key:n.key,elRef:e.cellElRefs.createRef(n.key),dateProfile:t.dateProfile,date:n.date,nowDate:t.nowDate,todayRange:t.todayRange,extraHookProps:n.extraHookProps,extraDataAttrs:n.extraDataAttrs,extraClassNames:n.extraClassNames,fgEventSegs:o[r],bgEventSegs:i[r],businessHourSegs:a[r],nowIndicatorSegs:s[r],dateSelectionSegs:l[r],eventDrag:u[r],eventResize:c[r],slatCoords:t.slatCoords,eventSelection:t.eventSelection,forPrint:t.forPrint})}))))))},t.prototype.componentDidMount=function(){this.updateCoords()},t.prototype.componentDidUpdate=function(){this.updateCoords()},t.prototype.updateCoords=function(){var e,t=this.props;t.onColCoords&&null!==t.clientWidth&&t.onColCoords(new Br(this.rootElRef.current,(e=this.cellElRefs.currentMap,t.cells.map((function(t){return e[t.key]}))),!0,!1))},t}(no);var Js=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.processSlotOptions=gt($s),t.state={slatCoords:null},t.handleScrollRequest=function(e){var n=t.props.onScrollTopRequest,r=t.state.slatCoords;if(n&&r){if(e.time){var o=r.computeTimeTop(e.time);(o=Math.ceil(o))&&o++,n(o)}return!0}},t.handleColCoords=function(e){t.colCoords=e},t.handleSlatCoords=function(e){t.setState({slatCoords:e}),t.props.onSlatCoords&&t.props.onSlatCoords(e)},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.state;return qr("div",{className:"fc-timegrid-body",ref:e.rootElRef,style:{width:e.clientWidth,minWidth:e.tableMinWidth}},qr(ks,{axis:e.axis,dateProfile:e.dateProfile,slatMetas:e.slatMetas,clientWidth:e.clientWidth,minHeight:e.expandRows?e.clientHeight:"",tableMinWidth:e.tableMinWidth,tableColGroupNode:e.axis?e.tableColGroupNode:null,onCoords:this.handleSlatCoords}),qr(Ks,{cells:e.cells,axis:e.axis,dateProfile:e.dateProfile,businessHourSegs:e.businessHourSegs,bgEventSegs:e.bgEventSegs,fgEventSegs:e.fgEventSegs,dateSelectionSegs:e.dateSelectionSegs,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,todayRange:e.todayRange,nowDate:e.nowDate,nowIndicatorSegs:e.nowIndicatorSegs,clientWidth:e.clientWidth,tableMinWidth:e.tableMinWidth,tableColGroupNode:e.tableColGroupNode,slatCoords:t.slatCoords,onColCoords:this.handleColCoords,forPrint:e.forPrint}))},t.prototype.componentDidMount=function(){this.scrollResponder=this.context.createScrollResponder(this.handleScrollRequest)},t.prototype.componentDidUpdate=function(e){this.scrollResponder.update(e.dateProfile!==this.props.dateProfile)},t.prototype.componentWillUnmount=function(){this.scrollResponder.detach()},t.prototype.positionToHit=function(e,t){var n=this.context,r=n.dateEnv,o=n.options,i=this.colCoords,a=this.props.dateProfile,s=this.state.slatCoords,l=this.processSlotOptions(this.props.slotDuration,o.snapDuration),u=l.snapDuration,c=l.snapsPerSlot,d=i.leftToIndex(e),p=s.positions.topToIndex(t);if(null!=d&&null!=p){var f=s.positions.tops[p],h=s.positions.getHeight(p),g=(t-f)/h,v=p*c+Math.floor(g*c),m=this.props.cells[d].date,y=ot(a.slotMinTime,it(u,v)),S=r.add(m,y);return{col:d,dateSpan:{range:{start:S,end:r.add(S,u)},allDay:!1},dayEl:i.els[d],relativeRect:{left:i.lefts[d],right:i.rights[d],top:f,bottom:f+h}}}},t}(no);function $s(e,t){var n=t||e,r=ct(e,n);return null===r&&(n=e,r=1),{snapDuration:n,snapsPerSlot:r}}var Qs=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buildDayRanges=gt(el),t.slicer=new tl,t.timeColsRef=Zr(),t.handleRootEl=function(e){e?t.context.registerInteractiveComponent(t,{el:e}):t.context.unregisterInteractiveComponent(t)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,o=t.dateProfile,i=t.dayTableModel,a=n.options.nowIndicator,s=this.buildDayRanges(i,o,n.dateEnv);return qr(Ui,{unit:a?"minute":"day"},(function(l,u){return qr(Js,r({ref:e.timeColsRef,rootElRef:e.handleRootEl},e.slicer.sliceProps(t,o,null,n,s),{forPrint:t.forPrint,axis:t.axis,dateProfile:o,slatMetas:t.slatMetas,slotDuration:t.slotDuration,cells:i.cells[0],tableColGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,clientWidth:t.clientWidth,clientHeight:t.clientHeight,expandRows:t.expandRows,nowDate:l,nowIndicatorSegs:a&&e.slicer.sliceNowDate(l,n,s),todayRange:u,onScrollTopRequest:t.onScrollTopRequest,onSlatCoords:t.onSlatCoords}))}))},t.prototype.queryHit=function(e,t){var n=this.timeColsRef.current.positionToHit(e,t);if(n)return{component:this,dateSpan:n.dateSpan,dayEl:n.dayEl,rect:{left:n.relativeRect.left,right:n.relativeRect.right,top:n.relativeRect.top,bottom:n.relativeRect.bottom},layer:0}},t}(mo);function el(e,t,n){for(var r=[],o=0,i=e.headerDates;o<i.length;o++){var a=i[o];r.push({start:n.add(a,t.slotMinTime),end:n.add(a,t.slotMaxTime)})}return r}var tl=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.sliceRange=function(e,t){for(var n=[],r=0;r<t.length;r++){var o=gn(e,t[r]);o&&n.push({start:o.start,end:o.end,isStart:o.start.valueOf()===e.start.valueOf(),isEnd:o.end.valueOf()===e.end.valueOf(),col:r})}return n},t}(Gi),nl=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buildTimeColsModel=gt(rl),t.buildSlatMetas=gt(_s),t}return n(t,e),t.prototype.render=function(){var e=this,t=this.context,n=t.options,o=t.dateEnv,i=t.dateProfileGenerator,a=this.props,s=a.dateProfile,l=this.buildTimeColsModel(s,i),u=this.allDaySplitter.splitProps(a),c=this.buildSlatMetas(s.slotMinTime,s.slotMaxTime,n.slotLabelInterval,n.slotDuration,o),d=n.dayMinWidth,p=!d,f=d,h=n.dayHeaders&&qr(zi,{dates:l.headerDates,dateProfile:s,datesRepDistinctDays:!0,renderIntro:p?this.renderHeadAxis:null}),g=!1!==n.allDaySlot&&function(t){return qr(Es,r({},u.allDay,{dateProfile:s,dayTableModel:l,nextDayThreshold:n.nextDayThreshold,tableMinWidth:t.tableMinWidth,colGroupNode:t.tableColGroupNode,renderRowIntro:p?e.renderTableRowAxis:null,showWeekNumbers:!1,expandRows:!1,headerAlignElRef:e.headerElRef,clientWidth:t.clientWidth,clientHeight:t.clientHeight,forPrint:a.forPrint},e.getAllDayMaxEventProps()))},v=function(t){return qr(Qs,r({},u.timed,{dayTableModel:l,dateProfile:s,axis:p,slotDuration:n.slotDuration,slatMetas:c,forPrint:a.forPrint,tableColGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,clientWidth:t.clientWidth,clientHeight:t.clientHeight,onSlatCoords:e.handleSlatCoords,expandRows:t.expandRows,onScrollTopRequest:e.handleScrollTopRequest}))};return f?this.renderHScrollLayout(h,g,v,l.colCnt,d,c,this.state.slatCoords):this.renderSimpleLayout(h,g,v)},t}(Os);function rl(e,t){var n=new Fi(e.renderRange,t);return new ji(n,!1)}var ol=yo({initialView:"timeGridWeek",optionRefiners:{allDaySlot:Boolean},views:{timeGrid:{component:nl,usesMinMaxTime:!0,allDaySlot:!0,slotDuration:"00:30:00",slotEventOverlap:!0},timeGridDay:{type:"timeGrid",duration:{days:1}},timeGridWeek:{type:"timeGrid",duration:{weeks:1}}}}),il=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=e.dayDate,n=e.todayRange,o=this.context,i=o.theme,a=o.dateEnv,s=o.options,l=o.viewApi,u=wr(t,n),c=s.listDayFormat?a.format(t,s.listDayFormat):"",d=s.listDaySideFormat?a.format(t,s.listDaySideFormat):"",p=s.navLinks?kr(t):null,f=r({date:a.toDate(t),view:l,text:c,sideText:d,navLinkData:p},u),h=["fc-list-day"].concat(Tr(u,i));return qr(bo,{hookProps:f,classNames:s.dayHeaderClassNames,content:s.dayHeaderContent,defaultContent:al,didMount:s.dayHeaderDidMount,willUnmount:s.dayHeaderWillUnmount},(function(e,n,r,o){return qr("tr",{ref:e,className:h.concat(n).join(" "),"data-date":pt(t)},qr("th",{colSpan:3},qr("div",{className:"fc-list-day-cushion "+i.getClass("tableCellShaded"),ref:r},o)))}))},t}(no);function al(e){var t=e.navLinkData?{"data-navlink":e.navLinkData,tabIndex:0}:{};return qr(Xr,null,e.text&&qr("a",r({className:"fc-list-day-text"},t),e.text),e.sideText&&qr("a",r({className:"fc-list-day-side-text"},t),e.sideText))}var sl=Nt({hour:"numeric",minute:"2-digit",meridiem:"short"}),ll=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=e.seg,r=t.options.eventTimeFormat||sl;return qr(ca,{seg:n,timeText:"",disableDragging:!0,disableResizing:!0,defaultContent:ul,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday,isSelected:e.isSelected,isDragging:e.isDragging,isResizing:e.isResizing,isDateSelecting:e.isDateSelecting},(function(e,o,i,a,s){return qr("tr",{className:["fc-list-event",s.event.url?"fc-event-forced-url":""].concat(o).join(" "),ref:e},function(e,t,n){var r=n.options;if(!1!==r.displayEventTime){var o=e.eventRange.def,i=e.eventRange.instance,a=!1,s=void 0;if(o.allDay?a=!0:dn(e.eventRange.range)?e.isStart?s=In(e,t,n,null,null,i.range.start,e.end):e.isEnd?s=In(e,t,n,null,null,e.start,i.range.end):a=!0:s=In(e,t,n),a){var l={text:n.options.allDayText,view:n.viewApi};return qr(bo,{hookProps:l,classNames:r.allDayClassNames,content:r.allDayContent,defaultContent:cl,didMount:r.allDayDidMount,willUnmount:r.allDayWillUnmount},(function(e,t,n,r){return qr("td",{className:["fc-list-event-time"].concat(t).join(" "),ref:e},r)}))}return qr("td",{className:"fc-list-event-time"},s)}return null}(n,r,t),qr("td",{className:"fc-list-event-graphic"},qr("span",{className:"fc-list-event-dot",style:{borderColor:s.borderColor||s.backgroundColor}})),qr("td",{className:"fc-list-event-title",ref:i},a))}))},t}(no);function ul(e){var t=e.event,n=t.url;return qr("a",r({},n?{href:n}:{}),t.title)}function cl(e){return e.text}var dl=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.computeDateVars=gt(fl),t.eventStoreToSegs=gt(t._eventStoreToSegs),t.setRootEl=function(e){e?t.context.registerInteractiveComponent(t,{el:e}):t.context.unregisterInteractiveComponent(t)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,r=["fc-list",n.theme.getClass("table"),!1!==n.options.stickyHeaderDates?"fc-list-sticky":""],o=this.computeDateVars(t.dateProfile),i=o.dayDates,a=o.dayRanges,s=this.eventStoreToSegs(t.eventStore,t.eventUiBases,a);return qr(Mo,{viewSpec:n.viewSpec,elRef:this.setRootEl},(function(n,o){return qr("div",{ref:n,className:r.concat(o).join(" ")},qr(Zi,{liquid:!t.isHeightAuto,overflowX:t.isHeightAuto?"visible":"hidden",overflowY:t.isHeightAuto?"visible":"auto"},s.length>0?e.renderSegList(s,i):e.renderEmptyMessage()))}))},t.prototype.renderEmptyMessage=function(){var e=this.context,t=e.options,n=e.viewApi,r={text:t.noEventsText,view:n};return qr(bo,{hookProps:r,classNames:t.noEventsClassNames,content:t.noEventsContent,defaultContent:pl,didMount:t.noEventsDidMount,willUnmount:t.noEventsWillUnmount},(function(e,t,n,r){return qr("div",{className:["fc-list-empty"].concat(t).join(" "),ref:e},qr("div",{className:"fc-list-empty-cushion",ref:n},r))}))},t.prototype.renderSegList=function(e,t){var n=this.context,o=n.theme,i=n.options,a=function(e){var t,n,r=[];for(t=0;t<e.length;t++)n=e[t],(r[n.dayIndex]||(r[n.dayIndex]=[])).push(n);return r}(e);return qr(Ui,{unit:"day"},(function(e,n){for(var s=[],l=0;l<a.length;l++){var u=a[l];if(u){var c=t[l].toISOString();s.push(qr(il,{key:c,dayDate:t[l],todayRange:n}));for(var d=0,p=u=Tn(u,i.eventOrder);d<p.length;d++){var f=p[d];s.push(qr(ll,r({key:c+":"+f.eventRange.instance.instanceId,seg:f,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:!1},Nn(f,n,e))))}}}return qr("table",{className:"fc-list-table "+o.getClass("table")},qr("tbody",null,s))}))},t.prototype._eventStoreToSegs=function(e,t,n){return this.eventRangesToSegs(En(e,t,this.props.dateProfile.activeRange,this.context.options.nextDayThreshold).fg,n)},t.prototype.eventRangesToSegs=function(e,t){for(var n=[],r=0,o=e;r<o.length;r++){var i=o[r];n.push.apply(n,this.eventRangeToSegs(i,t))}return n},t.prototype.eventRangeToSegs=function(e,t){var n,r,o,i=this.context.dateEnv,a=this.context.options.nextDayThreshold,s=e.range,l=e.def.allDay,u=[];for(n=0;n<t.length;n++)if((r=gn(s,t[n]))&&(o={component:this,eventRange:e,start:r.start,end:r.end,isStart:e.isStart&&r.start.valueOf()===s.start.valueOf(),isEnd:e.isEnd&&r.end.valueOf()===s.end.valueOf(),dayIndex:n},u.push(o),!o.isEnd&&!l&&n+1<t.length&&s.end<i.add(t[n+1].start,a))){o.end=s.end,o.isEnd=!0;break}return u},t}(mo);function pl(e){return e.text}function fl(e){for(var t=Pe(e.renderRange.start),n=e.renderRange.end,r=[],o=[];t<n;)r.push(t),o.push({start:t,end:De(t,1)}),t=De(t,1);return{dayDates:r,dayRanges:o}}function hl(e){return!1===e?null:Nt(e)}var gl=yo({optionRefiners:{listDayFormat:hl,listDaySideFormat:hl,noEventsClassNames:Vt,noEventsContent:Vt,noEventsDidMount:Vt,noEventsWillUnmount:Vt},views:{list:{component:dl,buttonTextKey:"list",listDayFormat:{month:"long",day:"numeric",year:"numeric"}},listDay:{type:"list",duration:{days:1},listDayFormat:{weekday:"long"}},listWeek:{type:"list",duration:{weeks:1},listDayFormat:{weekday:"long"},listDaySideFormat:{month:"long",day:"numeric",year:"numeric"}},listMonth:{type:"list",duration:{month:1},listDaySideFormat:{weekday:"long"}},listYear:{type:"list",duration:{year:1},listDaySideFormat:{weekday:"long"}}}}),vl=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t}(jr);vl.prototype.classes={root:"fc-theme-bootstrap",table:"table-bordered",tableCellShaded:"table-active",buttonGroup:"btn-group",button:"btn btn-primary",buttonActive:"active",popover:"popover",popoverHeader:"popover-header",popoverContent:"popover-body"},vl.prototype.baseIconClass="fa",vl.prototype.iconClasses={close:"fa-times",prev:"fa-chevron-left",next:"fa-chevron-right",prevYear:"fa-angle-double-left",nextYear:"fa-angle-double-right"},vl.prototype.rtlIconClasses={prev:"fa-chevron-right",next:"fa-chevron-left",prevYear:"fa-angle-double-right",nextYear:"fa-angle-double-left"},vl.prototype.iconOverrideOption="bootstrapFontAwesome",vl.prototype.iconOverrideCustomButtonOption="bootstrapFontAwesome",vl.prototype.iconOverridePrefix="fa-";var ml=yo({themeClasses:{bootstrap:vl}});var yl=yo({eventSourceDefs:[{parseMeta:function(e){var t=e.googleCalendarId;return!t&&e.url&&(t=function(e){var t;if(/^[^/]+@([^/.]+\.)*(google|googlemail|gmail)\.com$/.test(e))return e;if((t=/^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^/]*)/.exec(e))||(t=/^https?:\/\/www.google.com\/calendar\/feeds\/([^/]*)/.exec(e)))return decodeURIComponent(t[1])}(e.url)),t?{googleCalendarId:t,googleCalendarApiKey:e.googleCalendarApiKey,googleCalendarApiBase:e.googleCalendarApiBase,extraParams:e.extraParams}:null},fetch:function(e,t,n){var o=e.context,i=o.dateEnv,a=o.options,s=e.eventSource.meta,l=s.googleCalendarApiKey||a.googleCalendarApiKey;if(l){var u=function(e){var t=e.googleCalendarApiBase;t||(t="https://www.googleapis.com/calendar/v3/calendars");return t+"/"+encodeURIComponent(e.googleCalendarId)+"/events"}(s),c=s.extraParams,d="function"==typeof c?c():c,p=function(e,t,n,o){var i,a,s;o.canComputeOffset?(a=o.formatIso(e.start),s=o.formatIso(e.end)):(a=De(e.start,-1).toISOString(),s=De(e.end,1).toISOString());i=r(r({},n||{}),{key:t,timeMin:a,timeMax:s,singleEvents:!0,maxResults:9999}),"local"!==o.timeZone&&(i.timeZone=o.timeZone);return i}(e.range,l,d,i);Ko("GET",u,p,(function(e,r){var o,i;e.error?n({message:"Google Calendar API: "+e.error.message,errors:e.error.errors,xhr:r}):t({rawEvents:(o=e.items,i=p.timeZone,o.map((function(e){return function(e,t){var n=e.htmlLink||null;n&&t&&(n=function(e,t){return e.replace(/(\?.*?)?(#|$)/,(function(e,n,r){return(n?n+"&":"?")+t+r}))}(n,"ctz="+t));return{id:e.id,title:e.summary,start:e.start.dateTime||e.start.date,end:e.end.dateTime||e.end.date,url:n,location:e.location,description:e.description}}(e,i)}))),xhr:r})}),(function(e,t){n({message:e,xhr:t})}))}else n({message:"Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/"})}}],optionRefiners:{googleCalendarApiKey:String},eventSourceRefiners:{googleCalendarApiKey:String,googleCalendarId:String,googleCalendarApiBase:String,extraParams:Vt}}),Sl=["GPL-My-Project-Is-Open-Source","CC-Attribution-NonCommercial-NoDerivatives"],El={position:"absolute",zIndex:99999,bottom:"1px",left:"1px",background:"#eee",borderColor:"#ddd",borderStyle:"solid",borderWidth:"1px 1px 0 0",padding:"2px 4px",fontSize:"12px",borderTopRightRadius:"3px"};var Cl,bl=yo({optionRefiners:{schedulerLicenseKey:String},viewContainerAppends:[function(e){var t,n=e.options.schedulerLicenseKey;if(!(t=window.location.href,/\w+:\/\/fullcalendar\.io\/|\/examples\/[\w-]+\.html$/.test(t)||function(e){if(-1!==Sl.indexOf(e))return!0;var t=(e||"").match(/^(\d+)-fcs-(\d+)$/);if(t&&10===t[1].length){var n=new Date(1e3*parseInt(t[2],10)),r=new Date(Ei.mockSchedulerReleaseDate||"2020-06-29");if(Ae(r))if(De(r,-372)<n)return!0}return!1}(n)))return qr("div",{className:"fc-license-message",style:El},"Please use a valid license key. ",qr("a",{href:"http://fullcalendar.io/scheduler/license/"},"More Info"))}]}),Dl="wheel mousewheel DomMouseScroll MozMousePixelScroll".split(" "),Rl=function(){function e(e){var t=this;this.el=e,this.emitter=new Ur,this.isScrolling=!1,this.isTouching=!1,this.isRecentlyWheeled=!1,this.isRecentlyScrolled=!1,this.wheelWaiter=new ei(this._handleWheelWaited.bind(this)),this.scrollWaiter=new ei(this._handleScrollWaited.bind(this)),this.handleScroll=function(){t.startScroll(),t.emitter.trigger("scroll",t.isRecentlyWheeled,t.isTouching),t.isRecentlyScrolled=!0,t.scrollWaiter.request(500)},this.handleWheel=function(){t.isRecentlyWheeled=!0,t.wheelWaiter.request(500)},this.handleTouchStart=function(){t.isTouching=!0},this.handleTouchEnd=function(){t.isTouching=!1,t.isRecentlyScrolled||t.endScroll()},e.addEventListener("scroll",this.handleScroll),e.addEventListener("touchstart",this.handleTouchStart,{passive:!0}),e.addEventListener("touchend",this.handleTouchEnd);for(var n=0,r=Dl;n<r.length;n++){var o=r[n];e.addEventListener(o,this.handleWheel)}}return e.prototype.destroy=function(){var e=this.el;e.removeEventListener("scroll",this.handleScroll),e.removeEventListener("touchstart",this.handleTouchStart,{passive:!0}),e.removeEventListener("touchend",this.handleTouchEnd);for(var t=0,n=Dl;t<n.length;t++){var r=n[t];e.removeEventListener(r,this.handleWheel)}},e.prototype.startScroll=function(){this.isScrolling||(this.isScrolling=!0,this.emitter.trigger("scrollStart",this.isRecentlyWheeled,this.isTouching))},e.prototype.endScroll=function(){this.isScrolling&&(this.emitter.trigger("scrollEnd"),this.isScrolling=!1,this.isRecentlyScrolled=!0,this.isRecentlyWheeled=!1,this.scrollWaiter.clear(),this.wheelWaiter.clear())},e.prototype._handleScrollWaited=function(){this.isRecentlyScrolled=!1,this.isTouching||this.endScroll()},e.prototype._handleWheelWaited=function(){this.isRecentlyWheeled=!1},e}();function wl(e){var t=e.scrollLeft;if("rtl"===window.getComputedStyle(e).direction)switch(xl()){case"negative":t=e.scrollWidth-e.clientWidth+t;break;case"reverse":t=e.scrollWidth-e.clientWidth-t}return t}function Tl(e,t){if("rtl"===window.getComputedStyle(e).direction)switch(xl()){case"positive":t=e.scrollWidth-e.clientWidth+t;break;case"reverse":t=-t}e.scrollLeft=t}function xl(){return Cl||(Cl=function(){var e,t=z('<div style=" position: absolute; top: -1000px; width: 1px; height: 1px; overflow: scroll; direction: rtl; font-size: 100px; ">A</div>');document.body.appendChild(t),t.scrollLeft>0?e="positive":(t.scrollLeft=1,e=t.scrollLeft>0?"reverse":"negative");return V(t),e}())}var kl,Ml=-1!==(kl=z('<div style="position:-webkit-sticky;position:sticky"></div>').style.position).indexOf("sticky")?kl:null,Pl=/Edge/.test(navigator.userAgent),Il=function(){function e(e,t){var n=this;this.scrollEl=e,this.isRtl=t,this.usingRelative=null,this.updateSize=function(){var e=n.scrollEl,t=X(e,".fc-sticky"),r=n.queryElGeoms(t),o=e.clientWidth,i=e.clientHeight;n.usingRelative?function(e,t,n,r,o){e.forEach((function(e,i){var a,s,l=t[i],u=l.naturalBound,c=l.parentBound,d=c.right-c.left,p=c.bottom-c.bottom;d>r||p>o?(a=n[i].left-u.left,s=n[i].top-u.top):(a="",s=""),$(e,{position:"relative",left:a,right:-a,top:s})}))}(t,r,n.computeElDestinations(r,o),o,i):function(e,t,n){e.forEach((function(e,r){var o,i=t[r],a=i.textAlign,s=i.elWidth,l=i.parentBound,u=l.right-l.left;$(e,{left:o="center"===a&&u>n?(n-s)/2:"",right:o,top:0})}))}(t,r,o)},this.usingRelative=!Ml||Pl&&t,this.usingRelative&&(this.listener=new Rl(e),this.listener.emitter.on("scrollEnd",this.updateSize))}return e.prototype.destroy=function(){this.listener&&this.listener.destroy()},e.prototype.queryElGeoms=function(e){for(var t=this.scrollEl,n=this.isRtl,r=function(e){var t=e.getBoundingClientRect(),n=Hr(e);return{left:t.left+n.borderLeft+n.scrollbarLeft-wl(e),top:t.top+n.borderTop-e.scrollTop}}(t),o=[],i=0,a=e;i<a.length;i++){var s=a[i],l=yr(Or(s.parentNode,!0,!0),-r.left,-r.top),u=s.getBoundingClientRect(),c=window.getComputedStyle(s),d=window.getComputedStyle(s.parentNode).textAlign,p=null;"start"===d?d=n?"right":"left":"end"===d&&(d=n?"left":"right"),"sticky"!==c.position&&(p=yr(u,-r.left-(parseFloat(c.left)||0),-r.top-(parseFloat(c.top)||0))),o.push({parentBound:l,naturalBound:p,elWidth:u.width,elHeight:u.height,textAlign:d})}return o},e.prototype.computeElDestinations=function(e,t){var n=this.scrollEl,r=n.scrollTop,o=wl(n),i=o+t;return e.map((function(e){var t,n,a=e.elWidth,s=e.elHeight,l=e.parentBound,u=e.naturalBound;switch(e.textAlign){case"left":t=o;break;case"right":t=i-a;break;case"center":t=(o+i)/2-a/2}return t=Math.min(t,l.right-a),t=Math.max(t,l.left),n=r,n=Math.min(n,l.bottom-s),{left:t,top:n=Math.max(n,u.top)}}))},e}();var Nl=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.elRef=Zr(),t.state={xScrollbarWidth:Nr().x,yScrollbarWidth:Nr().y},t.handleScroller=function(e){t.scroller=e,io(t.props.scrollerRef,e)},t.handleSizing=function(){var e=t.props;"scroll-hidden"===e.overflowY&&t.setState({yScrollbarWidth:t.scroller.getYScrollbarWidth()}),"scroll-hidden"===e.overflowX&&t.setState({xScrollbarWidth:t.scroller.getXScrollbarWidth()})},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.state,n=this.context.isRtl&&Ir(),r=0,o=0,i=0;return"scroll-hidden"===e.overflowX&&(i=t.xScrollbarWidth),"scroll-hidden"===e.overflowY&&null!=t.yScrollbarWidth&&(n?r=t.yScrollbarWidth:o=t.yScrollbarWidth),qr("div",{ref:this.elRef,className:"fc-scroller-harness"+(e.liquid?" fc-scroller-harness-liquid":"")},qr(Zi,{ref:this.handleScroller,elRef:this.props.scrollerElRef,overflowX:"scroll-hidden"===e.overflowX?"scroll":e.overflowX,overflowY:"scroll-hidden"===e.overflowY?"scroll":e.overflowY,overcomeLeft:r,overcomeRight:o,overcomeBottom:i,maxHeight:"number"==typeof e.maxHeight?e.maxHeight+("scroll-hidden"===e.overflowX?t.xScrollbarWidth:0):"",liquid:e.liquid,liquidIsAbsolute:!0},e.children))},t.prototype.componentDidMount=function(){this.handleSizing(),this.context.addResizeHandler(this.handleSizing)},t.prototype.componentDidUpdate=function(e){qe(e,this.props)||this.handleSizing()},t.prototype.componentWillUnmount=function(){this.context.removeResizeHandler(this.handleSizing)},t.prototype.needsXScrolling=function(){return this.scroller.needsXScrolling()},t.prototype.needsYScrolling=function(){return this.scroller.needsYScrolling()},t}(no),_l=function(){function e(e,t){var n=this;this.isVertical=e,this.scrollEls=t,this.isPaused=!1,this.scrollListeners=t.map((function(e){return n.bindScroller(e)}))}return e.prototype.destroy=function(){for(var e=0,t=this.scrollListeners;e<t.length;e++){t[e].destroy()}},e.prototype.bindScroller=function(e){var t=this,n=this.scrollEls,r=this.isVertical,o=new Rl(e);return o.emitter.on("scroll",(function(o,i){if(!t.isPaused&&((!t.masterEl||t.masterEl!==e&&(o||i))&&t.assignMaster(e),t.masterEl===e))for(var a=0,s=n;a<s.length;a++){var l=s[a];l!==e&&(r?l.scrollTop=e.scrollTop:l.scrollLeft=e.scrollLeft)}})),o.emitter.on("scrollEnd",(function(){t.masterEl===e&&(t.masterEl=null)})),o},e.prototype.assignMaster=function(e){this.masterEl=e;for(var t=0,n=this.scrollListeners;t<n.length;t++){var r=n[t];r.el!==e&&r.endScroll()}},e.prototype.forceScrollLeft=function(e){this.isPaused=!0;for(var t=0,n=this.scrollListeners;t<n.length;t++){Tl(n[t].el,e)}this.isPaused=!1},e.prototype.forceScrollTop=function(e){this.isPaused=!0;for(var t=0,n=this.scrollListeners;t<n.length;t++){n[t].el.scrollTop=e}this.isPaused=!1},e}(),Hl=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.compileColGroupStats=mt(Ll,zl),t.renderMicroColGroups=mt(ta),t.clippedScrollerRefs=new Xi,t.scrollerElRefs=new Xi(t._handleScrollerEl.bind(t)),t.chunkElRefs=new Xi(t._handleChunkEl.bind(t)),t.getStickyScrolling=mt(jl,null,Gl),t.getScrollSyncersBySection=yt(Vl.bind(t,!0),null,Fl),t.getScrollSyncersByColumn=yt(Vl.bind(t,!1),null,Fl),t.stickyScrollings=[],t.scrollSyncersBySection={},t.scrollSyncersByColumn={},t.rowUnstableMap=new Map,t.rowInnerMaxHeightMap=new Map,t.anyRowHeightsChanged=!1,t.state={shrinkWidths:[],forceYScrollbars:!1,forceXScrollbars:!1,scrollerClientWidths:{},scrollerClientHeights:{},sectionRowMaxHeights:[]},t.handleSizing=function(e){e||(t.anyRowHeightsChanged=!0);var n={};e||t.rowUnstableMap.size||(n.sectionRowMaxHeights=t.computeSectionRowMaxHeights()),t.setState(r(r({shrinkWidths:t.computeShrinkWidths()},t.computeScrollerDims()),n),(function(){t.rowUnstableMap.size||t.updateStickyScrolling()}))},t.handleRowHeightChange=function(e,n){var r=t,o=r.rowUnstableMap,i=r.rowInnerMaxHeightMap;if(n){o.delete(e);var a=Wl(e);i.has(e)&&i.get(e)===a||(i.set(e,a),t.anyRowHeightsChanged=!0),!o.size&&t.anyRowHeightsChanged&&(t.anyRowHeightsChanged=!1,t.setState({sectionRowMaxHeights:t.computeSectionRowMaxHeights()}))}else o.set(e,!0)},t}return n(t,e),t.prototype.render=function(){for(var e,t=this.props,n=this.state,r=this.context,i=n.shrinkWidths,a=this.compileColGroupStats(t.colGroups.map((function(e){return[e]}))),s=this.renderMicroColGroups(a.map((function(e,t){return[e.cols,i[t]]}))),l=oa(t.liquid,r),u=this.getDims(),c=(u[0],u[1],t.sections),d=c.length,p=0,f=[],h=[],g=[];p<d&&"header"===(e=c[p]).type;)f.push(this.renderSection(e,p,a,s,n.sectionRowMaxHeights)),p++;for(;p<d&&"body"===(e=c[p]).type;)h.push(this.renderSection(e,p,a,s,n.sectionRowMaxHeights)),p++;for(;p<d&&"footer"===(e=c[p]).type;)g.push(this.renderSection(e,p,a,s,n.sectionRowMaxHeights)),p++;return qr(Xr,null,qr("table",{ref:t.elRef,className:l.join(" ")},function(e,t){var n=e.map((function(e,n){var r=e.width;return"shrink"===r&&(r=e.totalColWidth+na(t[n])+1),qr("col",{style:{width:r}})}));return qr.apply(void 0,o(["colgroup",{}],n))}(a,i),Boolean(f.length)&&qr.apply(void 0,o(["thead",{}],f)),Boolean(h.length)&&qr.apply(void 0,o(["tbody",{}],h)),Boolean(g.length)&&qr.apply(void 0,o(["tfoot",{}],g))))},t.prototype.renderSection=function(e,t,n,r,o){var i=this;return"outerContent"in e?qr(Xr,{key:e.key},e.outerContent):qr("tr",{key:e.key,className:ia(e,this.props.liquid).join(" ")},e.chunks.map((function(a,s){return i.renderChunk(e,t,n[s],r[s],a,s,(o[t]||[])[s]||[])})))},t.prototype.renderChunk=function(e,t,n,r,o,i,a){if("outerContent"in o)return qr(Xr,{key:o.key},o.outerContent);var s=this.state,l=s.scrollerClientWidths,u=s.scrollerClientHeights,c=this.getDims(),d=c[0],p=c[1],f=t*p+i,h=i===(!this.context.isRtl||Ir()?p-1:0),g=t===d-1,v=g&&s.forceXScrollbars,m=h&&s.forceYScrollbars,y=n&&n.allowXScrolling,S=$i(this.props,e),E=Ji(this.props,e),C=e.expandRows&&E,b=Qi(e,o,{tableColGroupNode:r,tableMinWidth:n&&n.totalColMinWidth||"",clientWidth:void 0!==l[f]?l[f]:null,clientHeight:void 0!==u[f]?u[f]:null,expandRows:C,syncRowHeights:Boolean(e.syncRowHeights),rowSyncHeights:a,reportRowHeightChange:this.handleRowHeightChange}),D=v?g?"scroll":"scroll-hidden":y?g?"auto":"scroll-hidden":"hidden",R=m?h?"scroll":"scroll-hidden":S?h?"auto":"scroll-hidden":"hidden";return b=qr(Nl,{ref:this.clippedScrollerRefs.createRef(f),scrollerElRef:this.scrollerElRefs.createRef(f),overflowX:D,overflowY:R,liquid:E,maxHeight:e.maxHeight},b),qr("td",{key:o.key,ref:this.chunkElRefs.createRef(f)},b)},t.prototype.componentDidMount=function(){this.updateScrollSyncers(),this.handleSizing(),this.context.addResizeHandler(this.handleSizing)},t.prototype.componentDidUpdate=function(e,t){this.updateScrollSyncers(),this.handleSizing(t.sectionRowMaxHeights!==this.state.sectionRowMaxHeights)},t.prototype.componentWillUnmount=function(){this.context.removeResizeHandler(this.handleSizing),this.destroyStickyScrolling(),this.destroyScrollSyncers()},t.prototype.computeShrinkWidths=function(){var e=this,t=this.compileColGroupStats(this.props.colGroups.map((function(e){return[e]}))),n=this.getDims(),r=n[0],o=n[1],i=r*o,a=[];return t.forEach((function(t,n){if(t.hasShrinkCol){var r=e.chunkElRefs.collect(n,i,o);a[n]=Ki(r)}})),a},t.prototype.computeSectionRowMaxHeights=function(){for(var e=this.rowInnerMaxHeightMap,t=new Map,n=this.getDims(),r=n[0],o=n[1],i=[],a=0;a<r;a++){var s=this.props.sections[a],l=[];if(s&&s.syncRowHeights){for(var u=[],c=0;c<o;c++){var d=a*o+c,p=[],f=this.chunkElRefs.currentMap[d];p=f?X(f,".fc-scrollgrid-sync-table tr").map((function(n){var r=e.get(n);return null==r&&(r=Wl(n)),t.set(n,r),r})):[],u.push(p)}var h=u[0].length,g=!0;for(c=1;c<o;c++){if(!(s.chunks[c]&&void 0!==s.chunks[c].outerContent)&&u[c].length!==h){g=!1;break}}if(g){for(c=0;c<o;c++)l.push([]);for(C=0;C<h;C++){var v=[];for(c=0;c<o;c++){var m=u[c][C];null!=m&&v.push(m)}var y=Math.max.apply(Math,v);for(c=0;c<o;c++)l[c].push(y)}}else{for(var S=[],c=0;c<o;c++)S.push(Ol(u[c])+u[c].length);for(var E=Math.max.apply(Math,S),c=0;c<o;c++){var C,b=u[c].length,D=E-b,R=Math.floor(D/b),w=D-R*(b-1),T=[];for((C=0)<b&&(T.push(w),C++);C<b;)T.push(R),C++;l.push(T)}}}i.push(l)}return this.rowInnerMaxHeightMap=t,i},t.prototype.computeScrollerDims=function(){for(var e=Nr(),t=this.getDims(),n=t[0],r=t[1],o=!this.context.isRtl||Ir()?r-1:0,i=n-1,a=this.clippedScrollerRefs.currentMap,s=this.scrollerElRefs.currentMap,l=!1,u=!1,c={},d={},p=0;p<n;p++){if((h=a[g=p*r+o])&&h.needsYScrolling()){l=!0;break}}for(var f=0;f<r;f++){var h;if((h=a[g=i*r+f])&&h.needsXScrolling()){u=!0;break}}for(p=0;p<n;p++)for(f=0;f<r;f++){var g,v=s[g=p*r+f];if(v){var m=v.parentNode;c[g]=Math.floor(m.getBoundingClientRect().width-(f===o&&l?e.y:0)),d[g]=Math.floor(m.getBoundingClientRect().height-(p===i&&u?e.x:0))}}return{forceYScrollbars:l,forceXScrollbars:u,scrollerClientWidths:c,scrollerClientHeights:d}},t.prototype.updateStickyScrolling=function(){var e=this.context.isRtl,t=this.scrollerElRefs.getAll().map((function(t){return[t,e]})),n=this.getStickyScrolling(t);for(var r in n)n[r].updateSize();this.stickyScrollings=n},t.prototype.destroyStickyScrolling=function(){this.stickyScrollings.forEach(Gl)},t.prototype.updateScrollSyncers=function(){for(var e=this.getDims(),t=e[0],n=e[1],r=t*n,o={},i={},a=this.scrollerElRefs.currentMap,s=0;s<t;s++){var l=s*n,u=l+n;o[s]=Ke(a,l,u,1)}for(var c=0;c<n;c++)i[c]=this.scrollerElRefs.collect(c,r,n);this.scrollSyncersBySection=this.getScrollSyncersBySection(o),this.scrollSyncersByColumn=this.getScrollSyncersByColumn(i)},t.prototype.destroyScrollSyncers=function(){Fe(this.scrollSyncersBySection,Fl),Fe(this.scrollSyncersByColumn,Fl)},t.prototype.getChunkConfigByIndex=function(e){var t=this.getDims()[1],n=Math.floor(e/t),r=e%t,o=this.props.sections[n];return o&&o.chunks[r]},t.prototype.forceScrollLeft=function(e,t){var n=this.scrollSyncersByColumn[e];n&&n.forceScrollLeft(t)},t.prototype.forceScrollTop=function(e,t){var n=this.scrollSyncersBySection[e];n&&n.forceScrollTop(t)},t.prototype._handleChunkEl=function(e,t){var n=this.getChunkConfigByIndex(parseInt(t,10));n&&io(n.elRef,e)},t.prototype._handleScrollerEl=function(e,t){var n=this.getChunkConfigByIndex(parseInt(t,10));n&&io(n.scrollerElRef,e)},t.prototype.getDims=function(){var e=this.props.sections.length;return[e,e?this.props.sections[0].chunks.length:0]},t}(no);function Ol(e){for(var t=0,n=0,r=e;n<r.length;n++){t+=r[n]}return t}function Wl(e){var t=X(e,".fc-scrollgrid-sync-inner").map(Al);return t.length?Math.max.apply(Math,t):0}function Al(e){return e.offsetHeight}function Ll(e){var t=Ul(e.cols,"width"),n=Ul(e.cols,"minWidth"),r=ra(e.cols);return{hasShrinkCol:r,totalColWidth:t,totalColMinWidth:n,allowXScrolling:"shrink"!==e.width&&Boolean(t||n||r),cols:e.cols,width:e.width}}function Ul(e,t){for(var n=0,r=0,o=e;r<o.length;r++){var i=o[r],a=i[t];"number"==typeof a&&(n+=a*(i.span||1))}return n}Hl.addStateEquality({shrinkWidths:B,scrollerClientWidths:qe,scrollerClientHeights:qe});var Bl={cols:ea};function zl(e,t){return Ze(e,t,Bl)}function Vl(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return new _l(e,t)}function Fl(e){e.destroy()}function jl(e,t){return new Il(e,t)}function Gl(e){e.destroy()}var ql=yo({deps:[bl],scrollGridImpl:Hl}),Yl=[],Zl=[],Xl=yo({deps:[bl],contextInit:function(e){Yl.length||(window.addEventListener("beforeprint",Kl),window.addEventListener("afterprint",Jl)),Yl.push(e),e.calendarApi.on("_unmount",(function(){U(Yl,e),Yl.length||(window.removeEventListener("beforeprint",Kl),window.removeEventListener("afterprint",Jl))}))}});function Kl(){for(var e=X(document.body,".fc-scroller-harness > .fc-scroller"),t=e.map((function(e){var t=window.getComputedStyle(e);return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop,overflowX:t.overflowX,overflowY:t.overflowY,marginBottom:t.marginBottom}})),n=0,r=Yl;n<r.length;n++){r[n].emitter.trigger("_beforeprint")}Jr(),function(e,t){e.forEach((function(e,n){e.style.overflowX="visible",e.style.overflowY="visible",e.style.marginBottom="",e.style.left=-t[n].scrollLeft+"px"}))}(e,t),Zl.push((function(){return function(e,t){e.forEach((function(e,n){var r=t[n];e.style.overflowX=r.overflowX,e.style.overflowY=r.overflowY,e.style.marginBottom=r.marginBottom,e.style.left="",e.scrollLeft=r.scrollLeft,e.scrollTop=r.scrollTop}))}(e,t)})),Zl.push(function(){var e=X(document.body,".fc-scrollgrid");return e.forEach($l),function(){return e.forEach(Ql)}}())}function Jl(){for(var e=0,t=Yl;e<t.length;e++){t[e].emitter.trigger("_afterprint")}for(Jr();Zl.length;)Zl.shift()()}function $l(e){e.style.width=e.getBoundingClientRect().width+"px"}function Ql(e){e.style.width=""}Ei.MAX_TIMELINE_SLOTS=1e3;var eu=[{years:1},{months:1},{days:1},{hours:1},{minutes:30},{minutes:15},{minutes:10},{minutes:5},{minutes:1},{seconds:30},{seconds:15},{seconds:10},{seconds:5},{seconds:1},{milliseconds:500},{milliseconds:100},{milliseconds:10},{milliseconds:1}];function tu(e,t,n,r){var o={labelInterval:n.slotLabelInterval,slotDuration:n.slotDuration};!function(e,t,n){var r=t.currentRange;if(e.labelInterval){n.countDurationsBetween(r.start,r.end,e.labelInterval)>Ei.MAX_TIMELINE_SLOTS&&(console.warn("slotLabelInterval results in too many cells"),e.labelInterval=null)}if(e.slotDuration){n.countDurationsBetween(r.start,r.end,e.slotDuration)>Ei.MAX_TIMELINE_SLOTS&&(console.warn("slotDuration results in too many cells"),e.slotDuration=null)}if(e.labelInterval&&e.slotDuration){var o=ct(e.labelInterval,e.slotDuration);(null===o||o<1)&&(console.warn("slotLabelInterval must be a multiple of slotDuration"),e.slotDuration=null)}}(o,e,t),ou(o,e,t),function(e,t,n){var r=t.currentRange,o=e.slotDuration;if(!o){for(var i=ou(e,t,n),a=0,s=eu;a<s.length;a++){var l=tt(s[a]),u=ct(i,l);if(null!==u&&u>1&&u<=6){o=l;break}}if(o)n.countDurationsBetween(r.start,r.end,o)>200&&(o=null);o||(o=i),e.slotDuration=o}}(o,e,t);var i=n.slotLabelFormat,a=Array.isArray(i)?i:null!=i?[i]:function(e,t,n,r){var o,i,a=e.labelInterval,s=dt(a).unit,l=r.weekNumbers,u=o=i=null;"week"!==s||l||(s="day");switch(s){case"year":u={year:"numeric"};break;case"month":iu("years",t,n)>1&&(u={year:"numeric"}),o={month:"short"};break;case"week":iu("years",t,n)>1&&(u={year:"numeric"}),o={week:"narrow"};break;case"day":iu("years",t,n)>1?u={year:"numeric",month:"long"}:iu("months",t,n)>1&&(u={month:"long"}),l&&(o={week:"short"}),i={weekday:"narrow",day:"numeric"};break;case"hour":l&&(u={week:"short"}),iu("days",t,n)>1&&(o={weekday:"short",day:"numeric",month:"numeric",omitCommas:!0}),i={hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"short"};break;case"minute":st(a)/60>=6?(u={hour:"numeric",meridiem:"short"},o=function(e){return":"+me(e.date.minute,2)}):u={hour:"numeric",minute:"numeric",meridiem:"short"};break;case"second":lt(a)/60>=6?(u={hour:"numeric",minute:"2-digit",meridiem:"lowercase"},o=function(e){return":"+me(e.date.second,2)}):u={hour:"numeric",minute:"2-digit",second:"2-digit",meridiem:"lowercase"};break;case"millisecond":u={hour:"numeric",minute:"2-digit",second:"2-digit",meridiem:"lowercase"},o=function(e){return"."+me(e.millisecond,3)}}return[].concat(u||[],o||[],i||[])}(o,e,t,n);o.headerFormats=a.map((function(e){return Nt(e)})),o.isTimeScale=Boolean(o.slotDuration.milliseconds);var s=null;if(!o.isTimeScale){var l=dt(o.slotDuration).unit;/year|month|week/.test(l)&&(s=l)}o.largeUnit=s,o.emphasizeWeeks=rt(o.slotDuration)&&iu("weeks",e,t)>=2&&!n.businessHours;var u,c,d=n.snapDuration;d&&(u=tt(d),c=ct(o.slotDuration,u)),null==c&&(u=o.slotDuration,c=1),o.snapDuration=u,o.snapsPerSlot=c;var p=ut(e.slotMaxTime)-ut(e.slotMinTime),f=nu(e.renderRange.start,o,t),h=nu(e.renderRange.end,o,t);o.isTimeScale&&(f=t.add(f,e.slotMinTime),h=t.add(De(h,-1),e.slotMaxTime)),o.timeWindowMs=p,o.normalizedRange={start:f,end:h};for(var g=[],v=f;v<h;)ru(v,o,e,r)&&g.push(v),v=t.add(v,o.slotDuration);o.slotDates=g;var m=-1,y=0,S=[],E=[];for(v=f;v<h;)ru(v,o,e,r)?(m++,S.push(m),E.push(y)):S.push(m+.5),v=t.add(v,o.snapDuration),y++;return o.snapDiffToIndex=S,o.snapIndexToDiff=E,o.snapCnt=m+1,o.slotCnt=o.snapCnt/o.snapsPerSlot,o.isWeekStarts=function(e,t){for(var n=e.slotDates,r=e.emphasizeWeeks,o=null,i=[],a=0,s=n;a<s.length;a++){var l=s[a],u=t.computeWeekNumber(l),c=r&&null!==o&&o!==u;o=u,i.push(c)}return i}(o,t),o.cellRows=function(e,t){for(var n=e.slotDates,r=e.headerFormats,o=r.map((function(e){return[]})),i=r.map((function(e){return e.getLargestUnit?e.getLargestUnit():null})),a=0;a<n.length;a++)for(var s=n[a],l=e.isWeekStarts[a],u=0;u<r.length;u++){var c=r[u],d=o[u],p=d[d.length-1],f=r.length>1&&u<r.length-1,h=null;if(f){var g=t.format(s,c);p&&p.text===g?p.colspan+=1:h=au(s,g,i[u])}else if(!p||Se(t.countDurationsBetween(e.normalizedRange.start,s,e.labelInterval))){g=t.format(s,c);h=au(s,g,i[u])}else p.colspan+=1;h&&(h.weekStart=l,d.push(h))}return o}(o,t),o.slotsPerLabel=ct(o.labelInterval,o.slotDuration),o}function nu(e,t,n){var r=e;return t.isTimeScale||(r=Pe(r),t.largeUnit&&(r=n.startOf(r,t.largeUnit))),r}function ru(e,t,n,r){if(r.isHiddenDay(e))return!1;if(t.isTimeScale){var o=Pe(e),i=e.valueOf()-o.valueOf()-ut(n.slotMinTime);return(i=(i%864e5+864e5)%864e5)<t.timeWindowMs}return!0}function ou(e,t,n){var r=t.currentRange,o=e.labelInterval;if(!o){if(e.slotDuration){for(var i=0,a=eu;i<a.length;i++){var s=tt(a[i]),l=ct(s,e.slotDuration);if(null!==l&&l<=6){o=s;break}}o||(o=e.slotDuration)}else for(var u=0,c=eu;u<c.length;u++){if(o=tt(c[u]),n.countDurationsBetween(r.start,r.end,o)>=18)break}e.labelInterval=o}return o}function iu(e,t,n){var r=t.currentRange,o=null;return"years"===e?o=n.diffWholeYears(r.start,r.end):"months"===e||"weeks"===e?o=n.diffWholeMonths(r.start,r.end):"days"===e&&(o=Me(r.start,r.end)),o||0}function au(e,t,n){return{date:e,text:t,rowUnit:n,colspan:1,isWeekStart:!1}}var su=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.refineHookProps=vt(cu),t.normalizeClassNames=To(),t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.dateEnv,r=t.options,o=e.cell,i=e.dateProfile,a=e.tDateProfile,s=wr(o.date,e.todayRange,e.nowDate,i),l=["fc-timeline-slot","fc-timeline-slot-label"].concat("time"===o.rowUnit?xr(s,t.theme):Tr(s,t.theme));o.isWeekStart&&l.push("fc-timeline-slot-em");var u=r.navLinks&&o.rowUnit&&"time"!==o.rowUnit?kr(o.date,o.rowUnit):null,c=this.refineHookProps({dateMarker:o.date,text:o.text,dateEnv:t.dateEnv,viewApi:t.viewApi}),d=this.normalizeClassNames(r.slotLabelClassNames,c);return qr(wo,{hookProps:c,didMount:r.slotLabelDidMount,willUnmount:r.slotLabelWillUnmount},(function(t){return qr("th",{ref:t,className:l.concat(d).join(" "),"data-date":n.formatIso(o.date,{omitTime:!a.isTimeScale,omitTimeZoneOffset:!0}),colSpan:o.colspan},qr("div",{className:"fc-timeline-slot-frame",style:{height:e.rowInnerHeight}},qr(lu,{hookProps:c,isSticky:e.isSticky,navLinkData:u})))}))},t}(no),lu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=e.navLinkData?{"data-navlink":e.navLinkData,tabIndex:0}:{};return qr(Ro,{hookProps:e.hookProps,content:t.options.slotLabelContent,defaultContent:uu},(function(t,o){return qr("a",r({ref:t,className:"fc-timeline-slot-cushion fc-scrollgrid-sync-inner"+(e.isSticky?" fc-sticky":"")},n),o)}))},t}(no);function uu(e){return e.text}function cu(e){return{date:e.dateEnv.toDate(e.dateMarker),view:e.viewApi,text:e.text}}var du=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=e.dateProfile,n=e.tDateProfile,r=e.rowInnerHeights,o=e.todayRange,i=e.nowDate,a=n.cellRows;return qr(Xr,null,a.map((function(e,s){var l=s===a.length-1,u=n.isTimeScale&&l;return qr("tr",{key:s,className:["fc-timeline-header-row",u?"fc-timeline-header-row-chrono":""].join(" ")},e.map((function(e){return qr(su,{key:e.date.toISOString(),cell:e,dateProfile:t,tDateProfile:n,todayRange:o,nowDate:i,rowInnerHeight:r&&r[s],isSticky:!l})})))})))},t}(no),pu=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.rootElRef=Zr(),t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,r=dt(t.tDateProfile.slotDuration).unit;return qr(Ui,{unit:r},(function(r,o){return qr("div",{className:"fc-timeline-header",ref:e.rootElRef},qr("table",{className:"fc-scrollgrid-sync-table",style:{minWidth:t.tableMinWidth,width:t.clientWidth}},t.tableColGroupNode,qr("tbody",null,qr(du,{dateProfile:t.dateProfile,tDateProfile:t.tDateProfile,nowDate:r,todayRange:o,rowInnerHeights:t.rowInnerHeights}))),n.options.nowIndicator&&t.slatCoords&&t.slatCoords.isDateInRange(r)&&qr(fa,{isAxis:!0,date:r},(function(e,n,o,i){return qr("div",{ref:e,className:["fc-timeline-now-indicator-arrow"].concat(n).join(" "),style:{left:t.slatCoords.dateToCoord(r)}},i)})))}))},t.prototype.componentDidMount=function(){this.updateSize()},t.prototype.componentDidUpdate=function(){this.updateSize()},t.prototype.updateSize=function(){this.props.onMaxCushionWidth&&this.props.onMaxCushionWidth(this.computeMaxCushionWidth())},t.prototype.computeMaxCushionWidth=function(){return Math.max.apply(Math,X(this.rootElRef.current,".fc-timeline-header-row:last-child .fc-timeline-slot-cushion").map((function(e){return e.getBoundingClientRect().width})))},t}(no),fu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.dateEnv,o=t.options,i=t.theme,a=e.date,s=e.tDateProfile,l=e.isEm,u=wr(e.date,e.todayRange,e.nowDate,e.dateProfile),c=["fc-timeline-slot","fc-timeline-slot-lane"],d={"data-date":n.formatIso(a,{omitTimeZoneOffset:!0,omitTime:!s.isTimeScale})},p=r(r({date:n.toDate(e.date)},u),{view:t.viewApi});return l&&c.push("fc-timeline-slot-em"),s.isTimeScale&&c.push(Se(n.countDurationsBetween(s.normalizedRange.start,e.date,s.labelInterval))?"fc-timeline-slot-major":"fc-timeline-slot-minor"),c.push.apply(c,e.isDay?Tr(u,i):xr(u,i)),qr(bo,{hookProps:p,classNames:o.slotLaneClassNames,content:o.slotLaneContent,didMount:o.slotLaneDidMount,willUnmount:o.slotLaneWillUnmount,elRef:e.elRef},(function(e,t,n,o){return qr("td",r({ref:e,className:c.concat(t).join(" ")},d),qr("div",{ref:n},o))}))},t}(no),hu=function(){function e(e,t,n,r,o,i){this.slatRootEl=e,this.dateProfile=n,this.tDateProfile=r,this.dateEnv=o,this.isRtl=i,this.outerCoordCache=new Br(e,t,!0,!1),this.innerCoordCache=new Br(e,K(t,"div"),!0,!1)}return e.prototype.rangeToCoords=function(e){return this.isRtl?{right:this.dateToCoord(e.start),left:this.dateToCoord(e.end)}:{left:this.dateToCoord(e.start),right:this.dateToCoord(e.end)}},e.prototype.isDateInRange=function(e){return Sn(this.dateProfile.currentRange,e)},e.prototype.dateToCoord=function(e){var t=this.tDateProfile,n=this.computeDateSnapCoverage(e)/t.snapsPerSlot,r=Math.floor(n),o=n-(r=Math.min(r,t.slotCnt-1)),i=this.innerCoordCache,a=this.outerCoordCache;return this.isRtl?a.rights[r]-i.getWidth(r)*o-a.originClientRect.width:a.lefts[r]+i.getWidth(r)*o},e.prototype.computeDateSnapCoverage=function(e){return gu(e,this.tDateProfile,this.dateEnv)},e.prototype.computeDurationLeft=function(e){var t=this.dateProfile,n=this.dateEnv,r=this.isRtl,o=0;return t&&(o=this.dateToCoord(n.add(Pe(t.activeRange.start),e)),!r&&o&&(o+=1)),o},e}();function gu(e,t,n){var r=n.countDurationsBetween(t.normalizedRange.start,e,t.snapDuration);if(r<0)return 0;if(r>=t.snapDiffToIndex.length)return t.snapCnt;var o=Math.floor(r),i=t.snapDiffToIndex[o];return Se(i)?i+=r-o:i=Math.ceil(i),i}var vu=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.rootElRef=Zr(),t.cellElRefs=new Xi,t.handleScrollRequest=function(e){var n=t.props.onScrollLeftRequest,r=t.coords;if(n&&r){if(e.time)n(r.computeDurationLeft(e.time));return!0}},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context;return qr("div",{className:"fc-timeline-slots",ref:this.rootElRef},qr("table",{className:t.theme.getClass("table"),style:{minWidth:e.tableMinWidth,width:e.clientWidth}},e.tableColGroupNode,qr(mu,{cellElRefs:this.cellElRefs,dateProfile:e.dateProfile,tDateProfile:e.tDateProfile,nowDate:e.nowDate,todayRange:e.todayRange})))},t.prototype.componentDidMount=function(){this.updateSizing(),this.scrollResponder=this.context.createScrollResponder(this.handleScrollRequest)},t.prototype.componentDidUpdate=function(e){this.updateSizing(),this.scrollResponder.update(e.dateProfile!==this.props.dateProfile)},t.prototype.componentWillUnmount=function(){this.scrollResponder.detach(),this.props.onCoords&&this.props.onCoords(null)},t.prototype.updateSizing=function(){var e,t=this.props,n=this.context;null!==t.clientWidth&&this.scrollResponder&&(this.rootElRef.current.offsetWidth&&(this.coords=new hu(this.rootElRef.current,(e=this.cellElRefs.currentMap,t.tDateProfile.slotDates.map((function(t){var n=t.toISOString();return e[n]}))),t.dateProfile,t.tDateProfile,n.dateEnv,n.isRtl),t.onCoords&&t.onCoords(this.coords),this.scrollResponder.update(!1)))},t.prototype.positionToHit=function(e){var t=this.coords.outerCoordCache,n=this.context,r=n.dateEnv,o=n.isRtl,i=this.props.tDateProfile,a=t.leftToIndex(e);if(null!=a){var s=t.getWidth(a),l=o?(t.rights[a]-e)/s:(e-t.lefts[a])/s,u=Math.floor(l*i.snapsPerSlot),c=r.add(i.slotDates[a],it(i.snapDuration,u));return{dateSpan:{range:{start:c,end:r.add(c,i.snapDuration)},allDay:!this.props.tDateProfile.isTimeScale},dayEl:this.cellElRefs.currentMap[a],left:t.lefts[a],right:t.rights[a]}}return null},t}(no),mu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=e.tDateProfile,n=e.cellElRefs,r=t.slotDates,o=t.isWeekStarts,i=!t.isTimeScale&&!t.largeUnit;return qr("tbody",null,qr("tr",null,r.map((function(r,a){var s=r.toISOString();return qr(fu,{key:s,elRef:n.createRef(s),date:r,dateProfile:e.dateProfile,tDateProfile:t,nowDate:e.nowDate,todayRange:e.todayRange,isEm:o[a],isDay:i})}))))},t}(no);var yu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=[].concat(e.eventResizeSegs,e.dateSelectionSegs);return e.timelineCoords&&qr("div",{className:"fc-timeline-bg"},this.renderSegs(e.businessHourSegs||[],e.timelineCoords,"non-business"),this.renderSegs(e.bgEventSegs||[],e.timelineCoords,"bg-event"),this.renderSegs(t,e.timelineCoords,"highlight"))},t.prototype.renderSegs=function(e,t,n){var o=this.props,i=o.todayRange,a=o.nowDate,s=e.map((function(e){var o=t.rangeToCoords(e);return qr("div",{key:Hn(e.eventRange),className:"fc-timeline-bg-harness",style:{left:o.left,right:-o.right}},"bg-event"===n?qr(Sa,r({seg:e},Nn(e,i,a))):ya(n))}));return qr(Xr,null,s)},t}(no),Su=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.sliceRange=function(e,t,n,r,o){var i=function(e,t,n){if(!t.isTimeScale&&(e=cn(e),t.largeUnit)){var r=e;((e={start:n.startOf(e.start,t.largeUnit),end:n.startOf(e.end,t.largeUnit)}).end.valueOf()!==r.end.valueOf()||e.end<=e.start)&&(e={start:e.start,end:n.add(e.end,t.slotDuration)})}return e}(e,r,o),a=[];if(gu(i.start,r,o)<gu(i.end,r,o)){var s=gn(i,r.normalizedRange);s&&a.push({start:s.start,end:s.end,isStart:s.start.valueOf()===i.start.valueOf()&&ru(s.start,r,t,n),isEnd:s.end.valueOf()===i.end.valueOf()&&ru(Re(s.end,-1),r,t,n)})}return a},t}(Gi),Eu=Nt({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"narrow"}),Cu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props;return qr(da,r({},e,{extraClassNames:["fc-timeline-event","fc-h-event"],defaultTimeFormat:Eu,defaultDisplayEventTime:!e.isTimeScale}))},t}(no);function bu(e,t){var n={};if(t)for(var r=0,o=e;r<o.length;r++){var i=o[r];n[i.eventRange.instance.instanceId]=t.rangeToCoords(i)}return n}function Du(e,t,n){var r,o,i,a,s=[],l=0;if(n)for(var u=0,c=e=Tn(e,t);u<c.length;u++){var d=c[u].eventRange.instance.instanceId,p=n[d];if(p){for(var f=0,h=0,g=0;g<s.length;g++){var v=s[g];r=p,o=f,i=v.dims,a=v.top,r.right>i.left&&r.left<i.right&&o+r.height>a&&o<a+i.height&&(f=v.top+v.dims.height,h=g)}for(;h<s.length&&f>=s[h].top;)h++;s.splice(h,0,{key:d,dims:p,top:f}),l=Math.max(l,f+p.height)}}for(var m={},y=0,S=s;y<S.length;y++){m[(v=S[y]).key]=v.top}return{segTops:m,height:l}}var Ru=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.slicer=new Su,t.computeFgSegHorizontals=gt(bu),t.computeSegVerticals=gt(Du),t.harnessElRefs=new Xi,t.innerElRef=Zr(),t.state={segDims:null},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.state,n=this.context,r=e.dateProfile,o=e.tDateProfile,i=this.slicer.sliceProps(e,r,o.isTimeScale?null:e.nextDayThreshold,n,r,n.dateProfileGenerator,o,n.dateEnv),a=(i.eventDrag?i.eventDrag.segs:null)||(i.eventResize?i.eventResize.segs:null)||[],s=this.computeFgSegHorizontals(i.fgEventSegs,e.timelineCoords),l=this.computeSegVerticals(i.fgEventSegs,n.options.eventOrder,t.segDims),u=l.segTops,c=l.height,d=(i.eventDrag?i.eventDrag.affectedInstances:null)||(i.eventResize?i.eventResize.affectedInstances:null)||{};return qr(Xr,null,qr(yu,{businessHourSegs:i.businessHourSegs,bgEventSegs:i.bgEventSegs,timelineCoords:e.timelineCoords,eventResizeSegs:i.eventResize?i.eventResize.segs:[],dateSelectionSegs:i.dateSelectionSegs,nowDate:e.nowDate,todayRange:e.todayRange}),qr("div",{className:"fc-timeline-events fc-scrollgrid-sync-inner",ref:this.innerElRef,style:{height:c}},this.renderFgSegs(i.fgEventSegs,s,u,d,!1,!1,!1),this.renderFgSegs(a,bu(a,e.timelineCoords),u,{},Boolean(i.eventDrag),Boolean(i.eventResize),!1)))},t.prototype.componentDidMount=function(){this.updateSize()},t.prototype.componentDidUpdate=function(e,t){e.eventStore===this.props.eventStore&&e.timelineCoords===this.props.timelineCoords||this.updateSize()},t.prototype.updateSize=function(){var e=this,t=this.props,n=t.timelineCoords;if(t.onHeightChange&&t.onHeightChange(this.innerElRef.current,!1),n){var r=n.slatRootEl.getBoundingClientRect();this.setState({segDims:Fe(this.harnessElRefs.currentMap,(function(e){var t=e.getBoundingClientRect();return{left:Math.round(t.left-r.left),right:Math.round(t.right-r.left),height:Math.round(t.height)}}))},(function(){t.onHeightChange&&t.onHeightChange(e.innerElRef.current,!0)}))}},t.prototype.renderFgSegs=function(e,t,n,o,i,a,s){var l=this,u=this.harnessElRefs,c=this.props,d=i||a||s;return qr(Xr,null,e.map((function(e){var p=e.eventRange.instance.instanceId,f=t[p],h=n[p];return qr("div",{key:p,ref:d?null:u.createRef(p),className:"fc-timeline-event-harness",style:{left:f?f.left:"",right:f?-f.right:"",top:null!=h?h:"",visibility:o[p]?"hidden":""}},qr(Cu,r({isTimeScale:l.props.tDateProfile.isTimeScale,seg:e,isDragging:i,isResizing:a,isDateSelecting:s,isSelected:p===l.props.eventSelection},Nn(e,c.todayRange,c.nowDate))))})))},t}(no),wu=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.slatsRef=Zr(),t.state={coords:null},t.handeEl=function(e){e?t.context.registerInteractiveComponent(t,{el:e}):t.context.unregisterInteractiveComponent(t)},t.handleCoords=function(e){t.setState({coords:e}),t.props.onSlatCoords&&t.props.onSlatCoords(e)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.state,r=this.context.options,o=t.dateProfile,i=t.tDateProfile,a=dt(i.slotDuration).unit;return qr("div",{className:"fc-timeline-body",ref:this.handeEl,style:{minWidth:t.tableMinWidth,height:t.clientHeight,width:t.clientWidth}},qr(Ui,{unit:a},(function(a,s){return qr(Xr,null,qr(vu,{ref:e.slatsRef,dateProfile:o,tDateProfile:i,nowDate:a,todayRange:s,clientWidth:t.clientWidth,tableColGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,onCoords:e.handleCoords,onScrollLeftRequest:t.onScrollLeftRequest}),qr(Ru,{dateProfile:o,tDateProfile:t.tDateProfile,nowDate:a,todayRange:s,nextDayThreshold:r.nextDayThreshold,businessHours:t.businessHours,eventStore:t.eventStore,eventUiBases:t.eventUiBases,dateSelection:t.dateSelection,eventSelection:t.eventSelection,eventDrag:t.eventDrag,eventResize:t.eventResize,timelineCoords:n.coords}),r.nowIndicator&&n.coords&&n.coords.isDateInRange(a)&&qr(fa,{isAxis:!1,date:a},(function(e,t,r,o){return qr("div",{ref:e,className:["fc-timeline-now-indicator-line"].concat(t).join(" "),style:{left:n.coords.dateToCoord(a)}},o)})))})))},t.prototype.queryHit=function(e,t,n,r){var o=this.slatsRef.current.positionToHit(e);if(o)return{component:this,dateSpan:o.dateSpan,rect:{left:o.left,right:o.right,top:0,bottom:r},dayEl:o.dayEl,layer:0}},t}(mo),Tu=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buildTimelineDateProfile=gt(tu),t.scrollGridRef=Zr(),t.state={slatCoords:null,slotCushionMaxWidth:null},t.handleSlatCoords=function(e){t.setState({slatCoords:e})},t.handleScrollLeftRequest=function(e){t.scrollGridRef.current.forceScrollLeft(0,e)},t.handleMaxCushionWidth=function(e){t.setState({slotCushionMaxWidth:Math.ceil(e)})},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.state,o=this.context,i=o.options,a=!t.forPrint&&sa(i),s=!t.forPrint&&la(i),l=this.buildTimelineDateProfile(t.dateProfile,o.dateEnv,i,o.dateProfileGenerator),u=["fc-timeline",!1===i.eventOverlap?"fc-timeline-overlap-disabled":""],c=i.slotMinWidth,d=xu(l,c||this.computeFallbackSlotMinWidth(l)),p=[{type:"header",key:"header",isSticky:a,chunks:[{key:"timeline",content:function(r){return qr(pu,{dateProfile:t.dateProfile,clientWidth:r.clientWidth,clientHeight:r.clientHeight,tableMinWidth:r.tableMinWidth,tableColGroupNode:r.tableColGroupNode,tDateProfile:l,slatCoords:n.slatCoords,onMaxCushionWidth:c?null:e.handleMaxCushionWidth})}}]},{type:"body",key:"body",liquid:!0,chunks:[{key:"timeline",content:function(n){return qr(wu,r({},t,{clientWidth:n.clientWidth,clientHeight:n.clientHeight,tableMinWidth:n.tableMinWidth,tableColGroupNode:n.tableColGroupNode,tDateProfile:l,onSlatCoords:e.handleSlatCoords,onScrollLeftRequest:e.handleScrollLeftRequest}))}}]}];return s&&p.push({type:"footer",key:"footer",isSticky:!0,chunks:[{key:"timeline",content:aa}]}),qr(Mo,{viewSpec:o.viewSpec},(function(n,r){return qr("div",{ref:n,className:u.concat(r).join(" ")},qr(Hl,{ref:e.scrollGridRef,liquid:!t.isHeightAuto&&!t.forPrint,colGroups:[{cols:d}],sections:p}))}))},t.prototype.computeFallbackSlotMinWidth=function(e){return Math.max(30,(this.state.slotCushionMaxWidth||0)/e.slotsPerLabel)},t}(mo);function xu(e,t){return[{span:e.slotCnt,minWidth:t||1}]}var ku=yo({deps:[bl],initialView:"timelineDay",views:{timeline:{component:Tu,eventResizableFromStart:!0},timelineDay:{type:"timeline",duration:{days:1}},timelineWeek:{type:"timeline",duration:{weeks:1}},timelineMonth:{type:"timeline",duration:{months:1}},timelineYear:{type:"timeline",duration:{years:1}}}});function Mu(e,t){var n=e.resourceEditable;if(null==n){var r=e.sourceId&&t.getCurrentData().eventSources[e.sourceId];r&&(n=r.extendedProps.resourceEditable),null==n&&null==(n=t.options.eventResourceEditable)&&(n=t.options.editable)}return n}var Pu=function(){function e(){this.filterResources=gt(Iu)}return e.prototype.transform=function(e,t){if(t.viewSpec.optionDefaults.needsResourceData)return{resourceStore:this.filterResources(t.resourceStore,t.options.filterResourcesWithEvents,t.eventStore,t.dateProfile.activeRange),resourceEntityExpansions:t.resourceEntityExpansions}},e}();function Iu(e,t,n,o){if(t){var i=function(e,t){var n={};for(var r in e)for(var o=e[r],i=0,a=t[o.defId].resourceIds;i<a.length;i++){var s=a[i];n[s]=!0}return n}(function(e,t){return Ve(e,(function(e){return mn(e.range,t)}))}(n.instances,o),n.defs);return r(i,function(e,t){var n={};for(var r in e)for(var o=void 0;(o=t[r])&&(r=o.parentId);)n[r]=!0;return n}(i,e)),Ve(e,(function(e,t){return i[t]}))}return e}var Nu=function(){function e(){this.buildResourceEventUis=gt(_u,qe),this.injectResourceEventUis=gt(Hu)}return e.prototype.transform=function(e,t){if(!t.viewSpec.optionDefaults.needsResourceData)return{eventUiBases:this.injectResourceEventUis(e.eventUiBases,e.eventStore.defs,this.buildResourceEventUis(t.resourceStore))}},e}();function _u(e){return Fe(e,(function(e){return e.ui}))}function Hu(e,t,n){return Fe(e,(function(e,r){return r?function(e,t,n){for(var r=[],o=0,i=t.resourceIds;o<i.length;o++){var a=i[o];n[a]&&r.unshift(n[a])}return r.unshift(e),$t(r)}(e,t[r],n):e}))}var Ou=[];function Wu(e){Ou.push(e)}function Au(e){return Ou[e]}function Lu(){return Ou}var Uu={id:String,resources:Vt,url:String,method:String,startParam:String,endParam:String,timeZoneParam:String,extraParams:Vt};function Bu(e){var t;if("string"==typeof e?t={url:e}:"function"==typeof e||Array.isArray(e)?t={resources:e}:"object"==typeof e&&e&&(t=e),t){var n=zt(t,Uu),r=n.refined;!function(e){for(var t in e)console.warn("Unknown resource prop '"+t+"'")}(n.extra);var o=function(e){for(var t=Lu(),n=t.length-1;n>=0;n--){var r=t[n].parseMeta(e);if(r)return{meta:r,sourceDefId:n}}}(r);if(o)return{_raw:e,sourceId:ae(),sourceDefId:o.sourceDefId,meta:o.meta,publicId:r.id||"",isFetching:!1,latestFetchId:"",fetchRange:null}}return null}function zu(e,t,n){var o=n.options,i=n.dateProfile;if(!e||!t)return Vu(o.initialResources||o.resources,i.activeRange,o.refetchResourcesOnNavigate,n);switch(t.type){case"RESET_RESOURCE_SOURCE":return Vu(t.resourceSourceInput,i.activeRange,o.refetchResourcesOnNavigate,n);case"PREV":case"NEXT":case"CHANGE_DATE":case"CHANGE_VIEW_TYPE":return function(e,t,n,r){return!n||function(e){return Boolean(Au(e.sourceDefId).ignoreRange)}(e)||e.fetchRange&&vn(e.fetchRange,t)?e:Fu(e,t,r)}(e,i.activeRange,o.refetchResourcesOnNavigate,n);case"RECEIVE_RESOURCES":case"RECEIVE_RESOURCE_ERROR":return function(e,t,n){if(t===e.latestFetchId)return r(r({},e),{isFetching:!1,fetchRange:n});return e}(e,t.fetchId,t.fetchRange);case"REFETCH_RESOURCES":return Fu(e,i.activeRange,n);default:return e}}function Vu(e,t,n,r){if(e){var o=Bu(e);return o=Fu(o,n?t:null,r)}return null}function Fu(e,t,n){var o=Au(e.sourceDefId),i=ae();return o.fetch({resourceSource:e,range:t,context:n},(function(e){n.dispatch({type:"RECEIVE_RESOURCES",fetchId:i,fetchRange:t,rawResources:e.rawResources})}),(function(e){n.dispatch({type:"RECEIVE_RESOURCE_ERROR",fetchId:i,fetchRange:t,error:e})})),r(r({},e),{isFetching:!0,latestFetchId:i})}var ju={id:String,parentId:String,children:Vt,title:String,businessHours:Vt,extendedProps:Vt,eventEditable:Boolean,eventStartEditable:Boolean,eventDurationEditable:Boolean,eventConstraint:Vt,eventOverlap:Boolean,eventAllow:Vt,eventClassNames:Xt,eventBackgroundColor:String,eventBorderColor:String,eventTextColor:String,eventColor:String};function Gu(e,t,n,o){void 0===t&&(t="");var i=zt(e,ju),a=i.refined,s=i.extra,l={id:a.id||"_fc:"+ae(),parentId:a.parentId||t,title:a.title||"",businessHours:a.businessHours?gr(a.businessHours,o):null,ui:Jt({editable:a.eventEditable,startEditable:a.eventStartEditable,durationEditable:a.eventDurationEditable,constraint:a.eventConstraint,overlap:a.eventOverlap,allow:a.eventAllow,classNames:a.eventClassNames,backgroundColor:a.eventBackgroundColor,borderColor:a.eventBorderColor,textColor:a.eventTextColor,color:a.eventColor},o),extendedProps:r(r({},s),a.extendedProps)};if(Object.freeze(l.ui.classNames),Object.freeze(l.extendedProps),n[l.id]);else if(n[l.id]=l,a.children)for(var u=0,c=a.children;u<c.length;u++){Gu(c[u],l.id,n,o)}return l}function qu(e){return 0===e.indexOf("_fc:")?"":e}function Yu(e,t,n,o){if(!e||!t)return{};switch(t.type){case"RECEIVE_RESOURCES":return function(e,t,n,r,o){if(r.latestFetchId===n){for(var i={},a=0,s=t;a<s.length;a++){Gu(s[a],"",i,o)}return i}return e}(e,t.rawResources,t.fetchId,n,o);case"ADD_RESOURCE":return i=e,a=t.resourceHash,r(r({},i),a);case"REMOVE_RESOURCE":return function(e,t){var n=r({},e);for(var o in delete n[t],n)n[o].parentId===t&&(n[o]=r(r({},n[o]),{parentId:""}));return n}(e,t.resourceId);case"SET_RESOURCE_PROP":return function(e,t,n,o){var i,a,s=e[t];return s?r(r({},e),((i={})[t]=r(r({},s),((a={})[n]=o,a)),i)):e}(e,t.resourceId,t.propName,t.propValue);case"SET_RESOURCE_EXTENDED_PROP":return function(e,t,n,o){var i,a,s=e[t];return s?r(r({},e),((i={})[t]=r(r({},s),{extendedProps:r(r({},s.extendedProps),(a={},a[n]=o,a))}),i)):e}(e,t.resourceId,t.propName,t.propValue);default:return e}var i,a}var Zu={resourceId:String,resourceIds:Vt,resourceEditable:Boolean};var Xu=function(){function e(e,t){this._context=e,this._resource=t}return e.prototype.setProp=function(e,t){var n=this._resource;this._context.dispatch({type:"SET_RESOURCE_PROP",resourceId:n.id,propName:e,propValue:t}),this.sync(n)},e.prototype.setExtendedProp=function(e,t){var n=this._resource;this._context.dispatch({type:"SET_RESOURCE_EXTENDED_PROP",resourceId:n.id,propName:e,propValue:t}),this.sync(n)},e.prototype.sync=function(t){var n=this._context,r=t.id;this._resource=n.getCurrentData().resourceStore[r],n.emitter.trigger("resourceChange",{oldResource:new e(n,t),resource:this,revert:function(){var e;n.dispatch({type:"ADD_RESOURCE",resourceHash:(e={},e[r]=t,e)})}})},e.prototype.remove=function(){var e=this._context,t=this._resource,n=t.id;e.dispatch({type:"REMOVE_RESOURCE",resourceId:n}),e.emitter.trigger("resourceRemove",{resource:this,revert:function(){var r;e.dispatch({type:"ADD_RESOURCE",resourceHash:(r={},r[n]=t,r)})}})},e.prototype.getParent=function(){var t=this._context,n=this._resource.parentId;return n?new e(t,t.getCurrentData().resourceSource[n]):null},e.prototype.getChildren=function(){var t=this._resource.id,n=this._context,r=n.getCurrentData().resourceStore,o=[];for(var i in r)r[i].parentId===t&&o.push(new e(n,r[i]));return o},e.prototype.getEvents=function(){var e=this._resource.id,t=this._context,n=t.getCurrentData().eventStore,r=n.defs,o=n.instances,i=[];for(var a in o){var s=o[a],l=r[s.defId];-1!==l.resourceIds.indexOf(e)&&i.push(new Qn(t,l,s))}return i},Object.defineProperty(e.prototype,"id",{get:function(){return qu(this._resource.id)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"title",{get:function(){return this._resource.title},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"eventConstraint",{get:function(){return this._resource.ui.constraints[0]||null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"eventOverlap",{get:function(){return this._resource.ui.overlap},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"eventAllow",{get:function(){return this._resource.ui.allows[0]||null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"eventBackgroundColor",{get:function(){return this._resource.ui.backgroundColor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"eventBorderColor",{get:function(){return this._resource.ui.borderColor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"eventTextColor",{get:function(){return this._resource.ui.textColor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"eventClassNames",{get:function(){return this._resource.ui.classNames},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"extendedProps",{get:function(){return this._resource.extendedProps},enumerable:!1,configurable:!0}),e.prototype.toPlainObject=function(e){void 0===e&&(e={});var t=this._resource,n=t.ui,o=this.id,i={};return o&&(i.id=o),t.title&&(i.title=t.title),e.collapseEventColor&&n.backgroundColor&&n.backgroundColor===n.borderColor?i.eventColor=n.backgroundColor:(n.backgroundColor&&(i.eventBackgroundColor=n.backgroundColor),n.borderColor&&(i.eventBorderColor=n.borderColor)),n.textColor&&(i.eventTextColor=n.textColor),n.classNames.length&&(i.eventClassNames=n.classNames),Object.keys(t.extendedProps).length&&(e.collapseExtendedProps?r(i,t.extendedProps):i.extendedProps=t.extendedProps),i},e.prototype.toJSON=function(){return this.toPlainObject()},e}();$n.prototype.addResource=function(e,t){var n,r=this;void 0===t&&(t=!0);var o,i,a=this.getCurrentData();e instanceof Xu?((n={})[(i=e._resource).id]=i,o=n):i=Gu(e,"",o={},a),this.dispatch({type:"ADD_RESOURCE",resourceHash:o}),t&&this.trigger("_scrollRequest",{resourceId:i.id});var s=new Xu(a,i);return a.emitter.trigger("resourceAdd",{resource:s,revert:function(){r.dispatch({type:"REMOVE_RESOURCE",resourceId:i.id})}}),s},$n.prototype.getResourceById=function(e){e=String(e);var t=this.getCurrentData();if(t.resourceStore){var n=t.resourceStore[e];if(n)return new Xu(t,n)}return null},$n.prototype.getResources=function(){var e=this.getCurrentData(),t=e.resourceStore,n=[];if(t)for(var r in t)n.push(new Xu(e,t[r]));return n},$n.prototype.getTopLevelResources=function(){var e=this.getCurrentData(),t=e.resourceStore,n=[];if(t)for(var r in t)t[r].parentId||n.push(new Xu(e,t[r]));return n},$n.prototype.refetchResources=function(){this.dispatch({type:"REFETCH_RESOURCES"})};var Ku=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.getKeyInfo=function(e){return r({"":{}},e.resourceStore)},t.prototype.getKeysForDateSpan=function(e){return[e.resourceId||""]},t.prototype.getKeysForEventDef=function(e){var t=e.resourceIds;return t.length?t:[""]},t}(Dr);function Ju(e,t){return r(r({},t),{constraints:$u(e,t.constraints)})}function $u(e,t){return t.map((function(t){var n=t.defs;if(n)for(var r in n){var o=n[r].resourceIds;if(o.length&&-1===o.indexOf(e))return!1}return t}))}Qn.prototype.getResources=function(){var e=this._context.calendarApi;return this._def.resourceIds.map((function(t){return e.getResourceById(t)}))},Qn.prototype.setResources=function(e){for(var t=[],n=0,r=e;n<r.length;n++){var o=r[n],i=null;"string"==typeof o?i=o:"number"==typeof o?i=String(o):o instanceof Xu?i=o.id:console.warn("unknown resource type: "+o),i&&t.push(i)}this.mutate({standardProps:{resourceIds:t}})};var Qu={resources:function(e,t){t.getCurrentData().resourceSource._raw!==e&&t.dispatch({type:"RESET_RESOURCE_SOURCE",resourceSourceInput:e})}};var ec=fe("id,title");var tc={initialResources:Vt,resources:Vt,eventResourceEditable:Boolean,refetchResourcesOnNavigate:Boolean,resourceOrder:fe,filterResourcesWithEvents:Boolean,resourceGroupField:String,resourceAreaWidth:Vt,resourceAreaColumns:Vt,resourcesInitiallyExpanded:Boolean,datesAboveResources:Boolean,needsResourceData:Boolean,resourceAreaHeaderClassNames:Vt,resourceAreaHeaderContent:Vt,resourceAreaHeaderDidMount:Vt,resourceAreaHeaderWillUnmount:Vt,resourceGroupLabelClassNames:Vt,resourceGroupLabelContent:Vt,resourceGroupLabelDidMount:Vt,resourceGroupLabelWillUnmount:Vt,resourceLabelClassNames:Vt,resourceLabelContent:Vt,resourceLabelDidMount:Vt,resourceLabelWillUnmount:Vt,resourceLaneClassNames:Vt,resourceLaneContent:Vt,resourceLaneDidMount:Vt,resourceLaneWillUnmount:Vt,resourceGroupLaneClassNames:Vt,resourceGroupLaneContent:Vt,resourceGroupLaneDidMount:Vt,resourceGroupLaneWillUnmount:Vt},nc={resourcesSet:Vt,resourceAdd:Vt,resourceChange:Vt,resourceRemove:Vt};function rc(e){return qr(Qr.Consumer,null,(function(t){var n=t.options,r={resource:new Xu(t,e.resource),date:e.date?t.dateEnv.toDate(e.date):null,view:t.viewApi},o={"data-resource-id":e.resource.id,"data-date":e.date?pt(e.date):void 0};return qr(bo,{hookProps:r,classNames:n.resourceLabelClassNames,content:n.resourceLabelContent,defaultContent:oc,didMount:n.resourceLabelDidMount,willUnmount:n.resourceLabelWillUnmount},(function(t,n,r,i){return e.children(t,n,o,r,i)}))}))}function oc(e){return e.resource.title||e.resource.id}Wu({ignoreRange:!0,parseMeta:function(e){return Array.isArray(e.resources)?e.resources:null},fetch:function(e,t){t({rawResources:e.resourceSource.meta})}}),Wu({parseMeta:function(e){return"function"==typeof e.resources?e.resources:null},fetch:function(e,t,n){var r=e.context.dateEnv,o=e.resourceSource.meta,i=e.range?{start:r.toDate(e.range.start),end:r.toDate(e.range.end),startStr:r.formatIso(e.range.start),endStr:r.formatIso(e.range.end),timeZone:r.timeZone}:{};Lr(o.bind(null,i),(function(e){t({rawResources:e})}),n)}}),Wu({parseMeta:function(e){return e.url?{url:e.url,method:(e.method||"GET").toUpperCase(),extraParams:e.extraParams}:null},fetch:function(e,t,n){var o=e.resourceSource.meta,i=function(e,t,n){var o,i,a,s,l=n.dateEnv,u=n.options,c={};t&&(null==(o=e.startParam)&&(o=u.startParam),null==(i=e.endParam)&&(i=u.endParam),null==(a=e.timeZoneParam)&&(a=u.timeZoneParam),c[o]=l.formatIso(t.start),c[i]=l.formatIso(t.end),"local"!==l.timeZone&&(c[a]=l.timeZone));s="function"==typeof e.extraParams?e.extraParams():e.extraParams||{};return r(c,s),c}(o,e.range,e.context);Ko(o.method,o.url,i,(function(e,n){t({rawResources:e,xhr:n})}),(function(e,t){n({message:e,xhr:t})}))}});var ic=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buildDateFormat=gt(ac),t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,r=this.buildDateFormat(n.options.dayHeaderFormat,t.datesRepDistinctDays,t.dates.length);return qr(Ui,{unit:"day"},(function(o,i){return 1===t.dates.length?e.renderResourceRow(t.resources,t.dates[0]):n.options.datesAboveResources?e.renderDayAndResourceRows(t.dates,r,i,t.resources):e.renderResourceAndDayRows(t.resources,t.dates,r,i)}))},t.prototype.renderResourceRow=function(e,t){var n=e.map((function(e){return qr(sc,{key:e.id,resource:e,colSpan:1,date:t})}));return this.buildTr(n,"resources")},t.prototype.renderDayAndResourceRows=function(e,t,n,r){for(var o=[],i=[],a=0,s=e;a<s.length;a++){var l=s[a];o.push(this.renderDateCell(l,t,n,r.length,null,!0));for(var u=0,c=r;u<c.length;u++){var d=c[u];i.push(qr(sc,{key:d.id+":"+l.toISOString(),resource:d,colSpan:1,date:l}))}}return qr(Xr,null,this.buildTr(o,"day"),this.buildTr(i,"resources"))},t.prototype.renderResourceAndDayRows=function(e,t,n,r){for(var o=[],i=[],a=0,s=e;a<s.length;a++){var l=s[a];o.push(qr(sc,{key:l.id,resource:l,colSpan:t.length,isSticky:!0}));for(var u=0,c=t;u<c.length;u++){var d=c[u];i.push(this.renderDateCell(d,n,r,1,l))}}return qr(Xr,null,this.buildTr(o,"day"),this.buildTr(i,"resources"))},t.prototype.renderDateCell=function(e,t,n,r,o,i){var a=this.props,s=o?":"+o.id:"",l=o?{resource:new Xu(this.context,o)}:{},u=o?{"data-resource-id":o.id}:{};return a.datesRepDistinctDays?qr(Wi,{key:e.toISOString()+s,date:e,dateProfile:a.dateProfile,todayRange:n,colCnt:a.dates.length*a.resources.length,dayHeaderFormat:t,colSpan:r,isSticky:i,extraHookProps:l,extraDataAttrs:u}):qr(Ai,{key:e.getUTCDay()+s,dow:e.getUTCDay(),dayHeaderFormat:t,colSpan:r,isSticky:i,extraHookProps:l,extraDataAttrs:u})},t.prototype.buildTr=function(e,t){var n=this.props.renderIntro;return e.length||(e=[qr("td",{key:0}," ")]),qr("tr",{key:t},n&&n(),e)},t}(no);function ac(e,t,n){return e||Hi(t,n)}var sc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props;return qr(rc,{resource:e.resource,date:e.date},(function(t,n,o,i,a){return qr("th",r({ref:t,className:["fc-col-header-cell","fc-resource"].concat(n).join(" "),colSpan:e.colSpan},o),qr("div",{className:"fc-scrollgrid-sync-inner"},qr("span",{className:["fc-col-header-cell-cushion",e.isSticky?"fc-sticky":""].join(" "),ref:i},a)))}))},t}(no),lc=function(){function e(e,t,n){this.dayTableModel=e,this.resources=t,this.context=n,this.resourceIndex=new dc(t),this.rowCnt=e.rowCnt,this.colCnt=e.colCnt*t.length,this.cells=this.buildCells()}return e.prototype.buildCells=function(){for(var e=this.rowCnt,t=this.dayTableModel,n=this.resources,r=[],o=0;o<e;o++){for(var i=[],a=0;a<t.colCnt;a++)for(var s=0;s<n.length;s++){var l=n[s],u={resource:new Xu(this.context,l)},c={"data-resource-id":l.id},d=t.cells[o][a].date;i[this.computeCol(a,s)]={key:l.id+":"+d.toISOString(),date:d,resource:l,extraHookProps:u,extraDataAttrs:c,extraClassNames:["fc-resource"]}}r.push(i)}return r},e}(),uc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.computeCol=function(e,t){return t*this.dayTableModel.colCnt+e},t.prototype.computeColRanges=function(e,t,n){return[{firstCol:this.computeCol(e,n),lastCol:this.computeCol(t,n),isStart:!0,isEnd:!0}]},t}(lc),cc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.computeCol=function(e,t){return e*this.resources.length+t},t.prototype.computeColRanges=function(e,t,n){for(var r=[],o=e;o<=t;o++){var i=this.computeCol(o,n);r.push({firstCol:i,lastCol:i,isStart:o===e,isEnd:o===t})}return r},t}(lc),dc=function(e){for(var t={},n=[],r=0;r<e.length;r++){var o=e[r].id;n.push(o),t[o]=r}this.ids=n,this.indicesById=t,this.length=e.length},pc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.getKeyInfo=function(e){var t=e.resourceDayTableModel,n=Fe(t.resourceIndex.indicesById,(function(e){return t.resources[e]}));return n[""]={},n},t.prototype.getKeysForDateSpan=function(e){return[e.resourceId||""]},t.prototype.getKeysForEventDef=function(e){var t=e.resourceIds;return t.length?t:[""]},t}(Dr),fc=[],hc=function(){function e(){this.joinDateSelection=gt(this.joinSegs),this.joinBusinessHours=gt(this.joinSegs),this.joinFgEvents=gt(this.joinSegs),this.joinBgEvents=gt(this.joinSegs),this.joinEventDrags=gt(this.joinInteractions),this.joinEventResizes=gt(this.joinInteractions)}return e.prototype.joinProps=function(e,t){for(var n=[],r=[],i=[],a=[],s=[],l=[],u="",c=0,d=t.resourceIndex.ids.concat([""]);c<d.length;c++){var p=d[c],f=e[p];n.push(f.dateSelectionSegs),r.push(p?f.businessHourSegs:fc),i.push(p?f.fgEventSegs:fc),a.push(f.bgEventSegs),s.push(f.eventDrag),l.push(f.eventResize),u=u||f.eventSelection}return{dateSelectionSegs:this.joinDateSelection.apply(this,o([t],n)),businessHourSegs:this.joinBusinessHours.apply(this,o([t],r)),fgEventSegs:this.joinFgEvents.apply(this,o([t],i)),bgEventSegs:this.joinBgEvents.apply(this,o([t],a)),eventDrag:this.joinEventDrags.apply(this,o([t],s)),eventResize:this.joinEventResizes.apply(this,o([t],l)),eventSelection:u}},e.prototype.joinSegs=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var r=e.resources.length,o=[],i=0;i<r;i++){for(var a=0,s=t[i];a<s.length;a++){var l=s[a];o.push.apply(o,this.transformSeg(l,e,i))}for(var u=0,c=t[r];u<c.length;u++){l=c[u];o.push.apply(o,this.transformSeg(l,e,i))}}return o},e.prototype.expandSegs=function(e,t){for(var n=e.resources.length,r=[],o=0;o<n;o++)for(var i=0,a=t;i<a.length;i++){var s=a[i];r.push.apply(r,this.transformSeg(s,e,o))}return r},e.prototype.joinInteractions=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var o=e.resources.length,i={},a=[],s=!1,l=!1,u=0;u<o;u++){var c=t[u];if(c){s=!0;for(var d=0,p=c.segs;d<p.length;d++){var f=p[d];a.push.apply(a,this.transformSeg(f,e,u))}r(i,c.affectedInstances),l=l||c.isEvent}if(t[o])for(var h=0,g=t[o].segs;h<g.length;h++){f=g[h];a.push.apply(a,this.transformSeg(f,e,u))}}return s?{affectedInstances:i,segs:a,isEvent:l}:null},e}();function gc(e,t){return vc(e,[],t,!1,{},!0).map((function(e){return e.resource}))}function vc(e,t,n,r,o,i){var a=[];return function e(t,n,r,o,i,a,s){for(var l=0;l<t.length;l++){var u=t[l],c=u.group;if(c)if(r){var d=n.length,p=o.length;if(e(u.children,n,r,o.concat(0),i,a,s),d<n.length){var f=n[d];(f.rowSpans=f.rowSpans.slice())[p]=n.length-d}}else{var h=c.spec.field+":"+c.value,g=null!=a[h]?a[h]:s;n.push({id:h,group:c,isExpanded:g}),g&&e(u.children,n,r,o,i+1,a,s)}else if(u.resource){h=u.resource.id,g=null!=a[h]?a[h]:s;n.push({id:h,rowSpans:o,depth:i,isExpanded:g,hasChildren:Boolean(u.children.length),resource:u.resource,resourceFields:u.resourceFields}),g&&e(u.children,n,r,o,i+1,a,s)}}}(function(e,t,n,r){var o=function(e,t){var n={};for(var r in e){var o=e[r];n[r]={resource:o,resourceFields:Sc(o),children:[]}}for(var r in e){if((o=e[r]).parentId){var i=n[o.parentId];i&&yc(n[r],i.children,t)}}return n}(e,r),i=[];for(var a in o){var s=o[a];s.resource.parentId||mc(s,i,n,0,t,r)}return i}(e,r?-1:1,t,n),a,r,[],0,o,i),a}function mc(e,t,n,r,o,i){n.length&&(-1===o||r<=o)?mc(e,function(e,t,n){var r,o,i=e.resourceFields[n.field];if(n.order)for(o=0;o<t.length;o++){if((s=t[o]).group){var a=ve(i,s.group.value)*n.order;if(0===a){r=s;break}if(a<0)break}}else for(o=0;o<t.length;o++){var s;if((s=t[o]).group&&i===s.group.value){r=s;break}}r||(r={group:{value:i,spec:n},children:[]},t.splice(o,0,r));return r}(e,t,n[0]).children,n.slice(1),r+1,o,i):yc(e,t,i)}function yc(e,t,n){var r;for(r=0;r<t.length;r++){if(he(t[r].resourceFields,e.resourceFields,n)>0)break}t.splice(r,0,e)}function Sc(e){var t=r(r(r({},e.extendedProps),e.ui),e);return delete t.ui,delete t.extendedProps,t}function Ec(e,t){return e.spec===t.spec&&e.value===t.value}var Cc=yo({deps:[bl],reducers:[function(e,t,n){var o=zu(e&&e.resourceSource,t,n);return{resourceSource:o,resourceStore:Yu(e&&e.resourceStore,t,o,n),resourceEntityExpansions:function(e,t){var n;if(!e||!t)return{};switch(t.type){case"SET_RESOURCE_ENTITY_EXPANDED":return r(r({},e),((n={})[t.id]=t.isExpanded,n));default:return e}}(e&&e.resourceEntityExpansions,t),loadingLevel:n.loadingLevel+(o&&o.isFetching?1:0)}}],eventRefiners:Zu,eventDefMemberAdders:[function(e){return{resourceIds:(t=e.resourceIds,(t||[]).map((function(e){return String(e)}))).concat(e.resourceId?[e.resourceId]:[]),resourceEditable:e.resourceEditable};var t}],isDraggableTransformers:[function(e,t,n,r){if(!e){var o=r.getCurrentData();if(o.viewSpecs[o.currentViewType].optionDefaults.needsResourceData&&Mu(t,r))return!0}return e}],eventDragMutationMassagers:[function(e,t,n){var r=t.dateSpan.resourceId,o=n.dateSpan.resourceId;r&&o&&r!==o&&(e.resourceMutation={matchResourceId:r,setResourceId:o})}],eventDefMutationAppliers:[function(e,t,n){var r=t.resourceMutation;if(r&&Mu(e,n)){var o=e.resourceIds.indexOf(r.matchResourceId);if(-1!==o){var i=e.resourceIds.slice();i.splice(o,1),-1===i.indexOf(r.setResourceId)&&i.push(r.setResourceId),e.resourceIds=i}}}],dateSelectionTransformers:[function(e,t){var n=e.dateSpan.resourceId,r=t.dateSpan.resourceId;if(n&&r)return(!1!==e.component.allowAcrossResources||n===r)&&{resourceId:n}}],datePointTransforms:[function(e,t){return e.resourceId?{resource:t.calendarApi.getResourceById(e.resourceId)}:{}}],dateSpanTransforms:[function(e,t){return e.resourceId?{resource:t.calendarApi.getResourceById(e.resourceId)}:{}}],viewPropsTransformers:[Pu,Nu],isPropsValid:function(e,t){var n=(new Ku).splitProps(r(r({},e),{resourceStore:t.getCurrentData().resourceStore}));for(var o in n){var i=n[o];if(o&&n[""]&&(i=r(r({},i),{eventStore:Yt(n[""].eventStore,i.eventStore),eventUiBases:r(r({},n[""].eventUiBases),i.eventUiBases)})),!po(i,t,{resourceId:o},Ju.bind(null,o)))return!1}return!0},externalDefTransforms:[function(e){return e.resourceId?{resourceId:e.resourceId}:{}}],eventResizeJoinTransforms:[function(e,t){if(!1===e.component.allowAcrossResources&&e.dateSpan.resourceId!==t.dateSpan.resourceId)return!1}],eventDropTransformers:[function(e,t){var n=e.resourceMutation;if(n){var r=t.calendarApi;return{oldResource:r.getResourceById(n.matchResourceId),newResource:r.getResourceById(n.setResourceId)}}return{oldResource:null,newResource:null}}],optionChangeHandlers:Qu,optionRefiners:tc,listenerRefiners:nc,propSetHandlers:{resourceStore:function(e,t){var n=t.emitter;n.hasHandlers("resourcesSet")&&n.trigger("resourcesSet",function(e,t){var n=[];for(var r in e)n.push(new Xu(t,e[r]));return n}(e,t))}}}),bc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.allowAcrossResources=!1,t.splitter=new pc,t.slicers={},t.joiner=new Dc,t.tableRef=Zr(),t.handleRootEl=function(e){e?t.context.registerInteractiveComponent(t,{el:e}):t.context.unregisterInteractiveComponent(t)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,o=t.resourceDayTableModel,i=t.nextDayThreshold,a=t.dateProfile,s=this.splitter.splitProps(t);this.slicers=Fe(s,(function(t,n){return e.slicers[n]||new Cs}));var l=Fe(this.slicers,(function(e,t){return e.sliceProps(s[t],a,i,n,o.dayTableModel)}));return this.allowAcrossResources=1===o.dayTableModel.colCnt,qr(ms,r({forPrint:t.forPrint,ref:this.tableRef,elRef:this.handleRootEl},this.joiner.joinProps(l,o),{cells:o.cells,dateProfile:a,colGroupNode:t.colGroupNode,tableMinWidth:t.tableMinWidth,renderRowIntro:t.renderRowIntro,dayMaxEvents:t.dayMaxEvents,dayMaxEventRows:t.dayMaxEventRows,showWeekNumbers:t.showWeekNumbers,expandRows:t.expandRows,headerAlignElRef:t.headerAlignElRef,clientWidth:t.clientWidth,clientHeight:t.clientHeight}))},t.prototype.prepareHits=function(){this.tableRef.current.prepareHits()},t.prototype.queryHit=function(e,t){var n=this.tableRef.current.positionToHit(e,t);if(n)return{component:this,dateSpan:{range:n.dateSpan.range,allDay:n.dateSpan.allDay,resourceId:this.props.resourceDayTableModel.cells[n.row][n.col].resource.id},dayEl:n.dayEl,rect:{left:n.relativeRect.left,right:n.relativeRect.right,top:n.relativeRect.top,bottom:n.relativeRect.bottom},layer:0}},t}(mo),Dc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.transformSeg=function(e,t,n){return t.computeColRanges(e.firstCol,e.lastCol,n).map((function(t){return r(r(r({},e),t),{isStart:e.isStart&&t.isStart,isEnd:e.isEnd&&t.isEnd})}))},t}(hc),Rc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.flattenResources=gt(gc),t.buildResourceDayTableModel=gt(wc),t.headerRef=Zr(),t.tableRef=Zr(),t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,r=n.options,o=r.resourceOrder||ec,i=this.flattenResources(t.resourceStore,o),a=this.buildResourceDayTableModel(t.dateProfile,n.dateProfileGenerator,i,r.datesAboveResources,n),s=r.dayHeaders&&qr(ic,{ref:this.headerRef,resources:i,dateProfile:t.dateProfile,dates:a.dayTableModel.headerDates,datesRepDistinctDays:!0}),l=function(n){return qr(bc,{ref:e.tableRef,dateProfile:t.dateProfile,resourceDayTableModel:a,businessHours:t.businessHours,eventStore:t.eventStore,eventUiBases:t.eventUiBases,dateSelection:t.dateSelection,eventSelection:t.eventSelection,eventDrag:t.eventDrag,eventResize:t.eventResize,nextDayThreshold:r.nextDayThreshold,tableMinWidth:n.tableMinWidth,colGroupNode:n.tableColGroupNode,dayMaxEvents:r.dayMaxEvents,dayMaxEventRows:r.dayMaxEventRows,showWeekNumbers:r.weekNumbers,expandRows:!t.isHeightAuto,headerAlignElRef:e.headerElRef,clientWidth:n.clientWidth,clientHeight:n.clientHeight,forPrint:t.forPrint})};return r.dayMinWidth?this.renderHScrollLayout(s,l,a.colCnt,r.dayMinWidth):this.renderSimpleLayout(s,l)},t}(Ja);function wc(e,t,n,r,o){var i=Ds(e,t);return r?new cc(i,n,o):new uc(i,n,o)}var Tc=yo({deps:[bl,Cc,Rs],initialView:"resourceDayGridDay",views:{resourceDayGrid:{type:"dayGrid",component:Rc,needsResourceData:!0},resourceDayGridDay:{type:"resourceDayGrid",duration:{days:1}},resourceDayGridWeek:{type:"resourceDayGrid",duration:{weeks:1}},resourceDayGridMonth:{type:"resourceDayGrid",duration:{months:1},monthMode:!0,fixedWeekCount:!0}}}),xc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.allowAcrossResources=!1,t.buildDayRanges=gt(el),t.splitter=new pc,t.slicers={},t.joiner=new kc,t.timeColsRef=Zr(),t.handleRootEl=function(e){e?t.context.registerInteractiveComponent(t,{el:e}):t.context.unregisterInteractiveComponent(t)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,o=n.dateEnv,i=n.options,a=t.dateProfile,s=t.resourceDayTableModel,l=this.dayRanges=this.buildDayRanges(s.dayTableModel,a,o),u=this.splitter.splitProps(t);this.slicers=Fe(u,(function(t,n){return e.slicers[n]||new tl}));var c=Fe(this.slicers,(function(e,t){return e.sliceProps(u[t],a,null,n,l)}));return this.allowAcrossResources=1===l.length,qr(Ui,{unit:i.nowIndicator?"minute":"day"},(function(n,o){return qr(Js,r({ref:e.timeColsRef,rootElRef:e.handleRootEl},e.joiner.joinProps(c,s),{dateProfile:a,axis:t.axis,slotDuration:t.slotDuration,slatMetas:t.slatMetas,cells:s.cells[0],tableColGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,clientWidth:t.clientWidth,clientHeight:t.clientHeight,expandRows:t.expandRows,nowDate:n,nowIndicatorSegs:i.nowIndicator&&e.buildNowIndicatorSegs(n),todayRange:o,onScrollTopRequest:t.onScrollTopRequest,forPrint:t.forPrint,onSlatCoords:t.onSlatCoords}))}))},t.prototype.buildNowIndicatorSegs=function(e){var t=this.slicers[""].sliceNowDate(e,this.context,this.dayRanges);return this.joiner.expandSegs(this.props.resourceDayTableModel,t)},t.prototype.queryHit=function(e,t){var n=this.timeColsRef.current.positionToHit(e,t);if(n)return{component:this,dateSpan:{range:n.dateSpan.range,allDay:n.dateSpan.allDay,resourceId:this.props.resourceDayTableModel.cells[0][n.col].resource.id},dayEl:n.dayEl,rect:{left:n.relativeRect.left,right:n.relativeRect.right,top:n.relativeRect.top,bottom:n.relativeRect.bottom},layer:0}},t}(mo),kc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.transformSeg=function(e,t,n){return[r(r({},e),{col:t.computeCol(e.col,n)})]},t}(hc),Mc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.flattenResources=gt(gc),t.buildResourceTimeColsModel=gt(Pc),t.buildSlatMetas=gt(_s),t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,o=n.options,i=n.dateEnv,a=t.dateProfile,s=this.allDaySplitter.splitProps(t),l=o.resourceOrder||ec,u=this.flattenResources(t.resourceStore,l),c=this.buildResourceTimeColsModel(a,n.dateProfileGenerator,u,o.datesAboveResources,n),d=this.buildSlatMetas(a.slotMinTime,a.slotMaxTime,o.slotLabelInterval,o.slotDuration,i),p=o.dayMinWidth,f=!p,h=p,g=o.dayHeaders&&qr(ic,{resources:u,dates:c.dayTableModel.headerDates,dateProfile:a,datesRepDistinctDays:!0,renderIntro:f?this.renderHeadAxis:null}),v=!1!==o.allDaySlot&&function(n){return qr(bc,r({},s.allDay,{dateProfile:a,resourceDayTableModel:c,nextDayThreshold:o.nextDayThreshold,tableMinWidth:n.tableMinWidth,colGroupNode:n.tableColGroupNode,renderRowIntro:f?e.renderTableRowAxis:null,showWeekNumbers:!1,expandRows:!1,headerAlignElRef:e.headerElRef,clientWidth:n.clientWidth,clientHeight:n.clientHeight,forPrint:t.forPrint},e.getAllDayMaxEventProps()))},m=function(n){return qr(xc,r({},s.timed,{dateProfile:a,axis:f,slotDuration:o.slotDuration,slatMetas:d,resourceDayTableModel:c,tableColGroupNode:n.tableColGroupNode,tableMinWidth:n.tableMinWidth,clientWidth:n.clientWidth,clientHeight:n.clientHeight,onSlatCoords:e.handleSlatCoords,expandRows:n.expandRows,forPrint:t.forPrint,onScrollTopRequest:e.handleScrollTopRequest}))};return h?this.renderHScrollLayout(g,v,m,c.colCnt,p,d,this.state.slatCoords):this.renderSimpleLayout(g,v,m)},t}(Os);function Pc(e,t,n,r,o){var i=rl(e,t);return r?new cc(i,n,o):new uc(i,n,o)}var Ic=yo({deps:[bl,Cc,ol],initialView:"resourceTimeGridDay",views:{resourceTimeGrid:{type:"timeGrid",component:Mc,needsResourceData:!0},resourceTimeGridDay:{type:"resourceTimeGrid",duration:{days:1}},resourceTimeGridWeek:{type:"resourceTimeGrid",duration:{weeks:1}}}});function Nc(e){for(var t=e.depth,n=e.hasChildren,r=e.isExpanded,i=e.onExpanderClick,a=[],s=0;s<t;s++)a.push(qr("span",{className:"fc-icon"}));var l=["fc-icon"];return n&&(r?l.push("fc-icon-minus-square"):l.push("fc-icon-plus-square")),a.push(qr("span",{className:"fc-datagrid-expander"+(n?"":" fc-datagrid-expander-placeholder"),onClick:i},qr("span",{className:l.join(" ")}))),qr.apply(void 0,o([Xr,{}],a))}var _c=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.refineHookProps=vt(Wc),t.normalizeClassNames=To(),t.onExpanderClick=function(e){var n=t.props;n.hasChildren&&t.context.dispatch({type:"SET_RESOURCE_ENTITY_EXPANDED",id:n.resource.id,isExpanded:!n.isExpanded})},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,r=t.colSpec,o=this.refineHookProps({resource:t.resource,fieldValue:t.fieldValue,context:n}),i=this.normalizeClassNames(r.cellClassNames,o);return qr(wo,{hookProps:o,didMount:r.cellDidMount,willUnmount:r.cellWillUnmount},(function(n){return qr("td",{className:["fc-datagrid-cell","fc-resource"].concat(i).join(" "),"data-resource-id":t.resource.id,ref:n},qr("div",{className:"fc-datagrid-cell-frame",style:{height:t.innerHeight}},qr("div",{className:"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner"},r.isMain&&qr(Nc,{depth:t.depth,hasChildren:t.hasChildren,isExpanded:t.isExpanded,onExpanderClick:e.onExpanderClick}),qr(Hc,{hookProps:o,colSpec:r}))))}))},t}(no),Hc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props;return qr(Ro,{hookProps:e.hookProps,content:e.colSpec.cellContent,defaultContent:Oc},(function(e,t){return qr("span",{className:"fc-datagrid-cell-main",ref:e},t)}))},t}(no);function Oc(e){return e.fieldValue||qr(Xr,null," ")}function Wc(e){return{resource:new Xu(e.context,e.resource),fieldValue:e.fieldValue,view:e.context.viewApi}}var Ac=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=e.colSpec,r={groupValue:e.fieldValue,view:t.viewApi};return qr(bo,{hookProps:r,classNames:n.cellClassNames,content:n.cellContent,defaultContent:Lc,didMount:n.cellDidMount,willUnmount:n.cellWillUnmount},(function(t,n,r,o){return qr("td",{className:["fc-datagrid-cell","fc-resource-group"].concat(n).join(" "),rowSpan:e.rowSpan,ref:t},qr("div",{className:"fc-datagrid-cell-frame fc-datagrid-cell-frame-liquid"}," ",qr("div",{className:"fc-datagrid-cell-cushion fc-sticky",ref:r},o)))}))},t}(no);function Lc(e){return e.groupValue||qr(Xr,null," ")}var Uc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=e.resource,n=e.rowSpans,r=e.depth,o=Sc(t);return qr("tr",null,e.colSpecs.map((function(i,a){var s=n[a];if(0!==s){null==s&&(s=1);var l=i.field?o[i.field]:t.title||qu(t.id);return s>1?qr(Ac,{key:a,colSpec:i,fieldValue:l,rowSpan:s}):qr(_c,{key:a,colSpec:i,resource:t,fieldValue:l,depth:r,hasChildren:e.hasChildren,isExpanded:e.isExpanded,innerHeight:e.innerHeight})}})))},t}(no);Uc.addPropsEquality({rowSpans:B});var Bc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.innerInnerRef=Zr(),t.onExpanderClick=function(){var e=t.props;t.context.dispatch({type:"SET_RESOURCE_ENTITY_EXPANDED",id:e.id,isExpanded:!e.isExpanded})},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,r={groupValue:t.group.value,view:n.viewApi},o=t.group.spec;return qr("tr",null,qr(bo,{hookProps:r,classNames:o.labelClassNames,content:o.labelContent,defaultContent:zc,didMount:o.labelDidMount,willUnmount:o.labelWillUnmount},(function(r,o,i,a){return qr("td",{className:["fc-datagrid-cell","fc-resource-group",n.theme.getClass("tableCellShaded")].concat(o).join(" "),colSpan:t.spreadsheetColCnt,ref:r},qr("div",{className:"fc-datagrid-cell-frame",style:{height:t.innerHeight}},qr("div",{className:"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner",ref:e.innerInnerRef},qr(Nc,{depth:0,hasChildren:!0,isExpanded:t.isExpanded,onExpanderClick:e.onExpanderClick}),qr("span",{className:"fc-datagrid-cell-main",ref:i},a))))})))},t}(no);function zc(e){return e.groupValue||qr(Xr,null," ")}Bc.addPropsEquality({group:Ec});var Vc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.resizerElRefs=new Xi(t._handleColResizerEl.bind(t)),t.colDraggings={},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=t.colSpecs,r=t.superHeaderRendering,o=t.rowInnerHeights,i={view:this.context.viewApi},a=[];if(o=o.slice(),r){var s=o.shift();a.push(qr("tr",{key:"row-super"},qr(bo,{hookProps:i,classNames:r.headerClassNames,content:r.headerContent,didMount:r.headerDidMount,willUnmount:r.headerWillUnmount},(function(e,t,r,o){return qr("th",{colSpan:n.length,className:["fc-datagrid-cell","fc-datagrid-cell-super"].concat(t).join(" "),ref:e},qr("div",{className:"fc-datagrid-cell-frame",style:{height:s}},qr("div",{className:"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner",ref:r},o)))}))))}var l=o.shift();return a.push(qr("tr",{key:"row"},n.map((function(t,r){var o=r===n.length-1;return qr(bo,{key:r,hookProps:i,classNames:t.headerClassNames,content:t.headerContent,didMount:t.headerDidMount,willUnmount:t.headerWillUnmount},(function(n,i,a,s){return qr("th",{ref:n,className:["fc-datagrid-cell"].concat(i).join(" ")},qr("div",{className:"fc-datagrid-cell-frame",style:{height:l}},qr("div",{className:"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner"},t.isMain&&qr("span",{className:"fc-datagrid-expander fc-datagrid-expander-placeholder"},qr("span",{className:"fc-icon"})),qr("span",{className:"fc-datagrid-cell-main",ref:a},s)),!o&&qr("div",{className:"fc-datagrid-cell-resizer",ref:e.resizerElRefs.createRef(r)})))}))})))),qr(Xr,null,a)},t.prototype._handleColResizerEl=function(e,t){var n,r=this.colDraggings;e?(n=this.initColResizing(e,parseInt(t,10)))&&(r[t]=n):(n=r[t])&&(n.destroy(),delete r[t])},t.prototype.initColResizing=function(e,t){var n=this.context,r=n.pluginHooks,o=n.isRtl,i=this.props.onColWidthChange,a=r.elementDraggingImpl;if(a){var s,l,u=new a(e);return u.emitter.on("dragstart",(function(){var n=X(Y(e,"tr"),"th");l=n.map((function(e){return Y(e,"th").getBoundingClientRect().width})),s=l[t]})),u.emitter.on("dragmove",(function(e){l[t]=Math.max(s+e.deltaX*(o?-1:1),20),i&&i(l.slice())})),u.setAutoScrollEnabled(!1),u}},t}(no),Fc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.refineHookProps=vt(Gc),t.normalizeClassNames=To(),t.handleHeightChange=function(e,n){t.props.onHeightChange&&t.props.onHeightChange(Y(e,"tr"),n)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,r=n.options,o=this.refineHookProps({resource:t.resource,context:n}),i=this.normalizeClassNames(r.resourceLaneClassNames,o);return qr("tr",{ref:t.elRef},qr(wo,{hookProps:o,didMount:r.resourceLaneDidMount,willUnmount:r.resourceLaneWillUnmount},(function(n){return qr("td",{ref:n,className:["fc-timeline-lane","fc-resource"].concat(i).join(" "),"data-resource-id":t.resource.id},qr("div",{className:"fc-timeline-lane-frame",style:{height:t.innerHeight}},qr(jc,{resource:t.resource}),qr(Ru,{dateProfile:t.dateProfile,tDateProfile:t.tDateProfile,nowDate:t.nowDate,todayRange:t.todayRange,nextDayThreshold:t.nextDayThreshold,businessHours:t.businessHours,eventStore:t.eventStore,eventUiBases:t.eventUiBases,dateSelection:t.dateSelection,eventSelection:t.eventSelection,eventDrag:t.eventDrag,eventResize:t.eventResize,timelineCoords:t.timelineCoords,onHeightChange:e.handleHeightChange})))})))},t}(no),jc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n={resource:new Xu(t,e.resource)};return qr(Ro,{hookProps:n,content:t.options.resourceLaneContent},(function(e,t){return t&&qr("div",{className:"fc-timeline-lane-misc",ref:e},t)}))},t}(no);function Gc(e){return{resource:new Xu(e.context,e.resource)}}var qc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.props.renderingHooks,r={groupValue:t.groupValue,view:this.context.viewApi};return qr("tr",{ref:t.elRef},qr(bo,{hookProps:r,classNames:n.laneClassNames,content:n.laneContent,didMount:n.laneDidMount,willUnmount:n.laneWillUnmount},(function(n,r,o,i){return qr("td",{className:["fc-timeline-lane","fc-resource-group",e.context.theme.getClass("tableCellShaded")].concat(r).join(" "),ref:n},qr("div",{style:{height:t.innerHeight},ref:o},i))})))},t}(no),Yc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.rootElRef=Zr(),t.rowElRefs=new Xi,t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context;return qr("table",{ref:this.rootElRef,className:"fc-scrollgrid-sync-table "+t.theme.getClass("table"),style:{minWidth:e.tableMinWidth,width:e.clientWidth,height:e.minHeight}},qr(Zc,{rowElRefs:this.rowElRefs,rowNodes:e.rowNodes,dateProfile:e.dateProfile,tDateProfile:e.tDateProfile,nowDate:e.nowDate,todayRange:e.todayRange,splitProps:e.splitProps,fallbackBusinessHours:e.fallbackBusinessHours,slatCoords:e.slatCoords,innerHeights:e.innerHeights,onRowHeightChange:e.onRowHeightChange}))},t.prototype.componentDidMount=function(){this.updateCoords()},t.prototype.componentDidUpdate=function(){this.updateCoords()},t.prototype.componentWillUnmount=function(){this.props.onRowCoords&&this.props.onRowCoords(null)},t.prototype.updateCoords=function(){var e,t=this.props;t.onRowCoords&&null!==t.clientWidth&&this.props.onRowCoords(new Br(this.rootElRef.current,(e=this.rowElRefs.currentMap,t.rowNodes.map((function(t){return e[t.id]}))),!1,!0))},t}(no);var Zc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=e.rowElRefs,o=e.innerHeights;return qr("tbody",null,e.rowNodes.map((function(i,a){if(i.group)return qr(qc,{key:i.id,elRef:n.createRef(i.id),groupValue:i.group.value,renderingHooks:i.group.spec,innerHeight:o[a]||""});if(i.resource){var s=i.resource;return qr(Fc,r({key:i.id,elRef:n.createRef(i.id)},e.splitProps[s.id],{resource:s,dateProfile:e.dateProfile,tDateProfile:e.tDateProfile,nowDate:e.nowDate,todayRange:e.todayRange,nextDayThreshold:t.options.nextDayThreshold,businessHours:s.businessHours||e.fallbackBusinessHours,innerHeight:o[a]||"",timelineCoords:e.slatCoords,onHeightChange:e.onRowHeightChange}))}})))},t}(no),Xc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.computeHasResourceBusinessHours=gt(Kc),t.resourceSplitter=new Ku,t.bgSlicer=new Su,t.slatsRef=Zr(),t.state={slatCoords:null},t.handleEl=function(e){e?t.context.registerInteractiveComponent(t,{el:e}):t.context.unregisterInteractiveComponent(t)},t.handleSlatCoords=function(e){t.setState({slatCoords:e}),t.props.onSlatCoords&&t.props.onSlatCoords(e)},t.handleRowCoords=function(e){t.rowCoords=e,t.props.onRowCoords&&t.props.onRowCoords(e)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.state,r=this.context,o=t.dateProfile,i=t.tDateProfile,a=dt(i.slotDuration).unit,s=this.computeHasResourceBusinessHours(t.rowNodes),l=this.resourceSplitter.splitProps(t),u=l[""],c=this.bgSlicer.sliceProps(u,o,i.isTimeScale?null:t.nextDayThreshold,r,o,r.dateProfileGenerator,i,r.dateEnv);return qr("div",{ref:this.handleEl,className:"fc-timeline-body",style:{minWidth:t.tableMinWidth}},qr(Ui,{unit:a},(function(a,u){return qr(Xr,null,qr(vu,{ref:e.slatsRef,dateProfile:o,tDateProfile:i,nowDate:a,todayRange:u,clientWidth:t.clientWidth,tableColGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,onCoords:e.handleSlatCoords,onScrollLeftRequest:t.onScrollLeftRequest}),qr(yu,{businessHourSegs:s?null:c.businessHourSegs,bgEventSegs:c.bgEventSegs,timelineCoords:n.slatCoords,eventResizeSegs:c.eventResize?c.eventResize.segs:[],dateSelectionSegs:c.dateSelectionSegs,nowDate:a,todayRange:u}),qr(Yc,{rowNodes:t.rowNodes,dateProfile:o,tDateProfile:t.tDateProfile,nowDate:a,todayRange:u,splitProps:l,fallbackBusinessHours:s?t.businessHours:null,clientWidth:t.clientWidth,minHeight:t.expandRows?t.clientHeight:"",tableMinWidth:t.tableMinWidth,innerHeights:t.rowInnerHeights,slatCoords:n.slatCoords,onRowCoords:e.handleRowCoords,onRowHeightChange:t.onRowHeightChange}),r.options.nowIndicator&&n.slatCoords&&n.slatCoords.isDateInRange(a)&&qr(fa,{isAxis:!1,date:a},(function(e,t,r,o){return qr("div",{ref:e,className:["fc-timeline-now-indicator-line"].concat(t).join(" "),style:{left:n.slatCoords.dateToCoord(a)}},o)})))})))},t.prototype.queryHit=function(e,t){var n=this.rowCoords,r=n.topToIndex(t);if(null!=r){var o=this.props.rowNodes[r].resource;if(o){var i=this.slatsRef.current.positionToHit(e);if(i)return{component:this,dateSpan:{range:i.dateSpan.range,allDay:i.dateSpan.allDay,resourceId:o.id},rect:{left:i.left,right:i.right,top:n.tops[r],bottom:n.bottoms[r]},dayEl:i.dayEl,layer:0}}}},t}(mo);function Kc(e){for(var t=0,n=e;t<n.length;t++){var r=n[t].resource;if(r&&r.businessHours)return!0}return!1}var Jc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.scrollGridRef=Zr(),t.timeBodyScrollerElRef=Zr(),t.spreadsheetHeaderChunkElRef=Zr(),t.rootElRef=Zr(),t.state={resourceAreaWidthOverride:null},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.state,n=this.context,r=n.options,o=!e.forPrint&&sa(r),i=!e.forPrint&&la(r),a=[{type:"header",key:"header",syncRowHeights:!0,isSticky:o,chunks:[{key:"datagrid",elRef:this.spreadsheetHeaderChunkElRef,tableClassName:"fc-datagrid-header",rowContent:e.spreadsheetHeaderRows},{key:"divider",outerContent:qr("td",{className:"fc-resource-timeline-divider "+n.theme.getClass("tableCellShaded")})},{key:"timeline",content:e.timeHeaderContent}]},{type:"body",key:"body",syncRowHeights:!0,liquid:!0,expandRows:Boolean(r.expandRows),chunks:[{key:"datagrid",tableClassName:"fc-datagrid-body",rowContent:e.spreadsheetBodyRows},{key:"divider",outerContent:qr("td",{className:"fc-resource-timeline-divider "+n.theme.getClass("tableCellShaded")})},{key:"timeline",scrollerElRef:this.timeBodyScrollerElRef,content:e.timeBodyContent}]}];i&&a.push({type:"footer",key:"footer",isSticky:!0,chunks:[{key:"datagrid",content:aa},{key:"divider",outerContent:qr("td",{className:"fc-resource-timeline-divider "+n.theme.getClass("tableCellShaded")})},{key:"timeline",content:aa}]});var s=null!=t.resourceAreaWidthOverride?t.resourceAreaWidthOverride:r.resourceAreaWidth;return qr(Hl,{ref:this.scrollGridRef,elRef:this.rootElRef,liquid:!e.isHeightAuto&&!e.forPrint,colGroups:[{cols:e.spreadsheetCols,width:s},{cols:[]},{cols:e.timeCols}],sections:a})},t.prototype.forceTimeScroll=function(e){this.scrollGridRef.current.forceScrollLeft(2,e)},t.prototype.forceResourceScroll=function(e){this.scrollGridRef.current.forceScrollTop(1,e)},t.prototype.getResourceScroll=function(){return this.timeBodyScrollerElRef.current.scrollTop},t.prototype.componentDidMount=function(){this.initSpreadsheetResizing()},t.prototype.componentWillUnmount=function(){this.destroySpreadsheetResizing()},t.prototype.initSpreadsheetResizing=function(){var e=this,t=this.context,n=t.isRtl,r=t.pluginHooks.elementDraggingImpl,o=this.spreadsheetHeaderChunkElRef.current;if(r){var i,a,s=this.rootElRef.current,l=this.spreadsheetResizerDragging=new r(s,".fc-resource-timeline-divider");l.emitter.on("dragstart",(function(){i=o.getBoundingClientRect().width,a=s.getBoundingClientRect().width})),l.emitter.on("dragmove",(function(t){var r=i+t.deltaX*(n?-1:1);r=Math.max(r,30),r=Math.min(r,a-30),e.setState({resourceAreaWidthOverride:r})})),l.setAutoScrollEnabled(!1)}},t.prototype.destroySpreadsheetResizing=function(){this.spreadsheetResizerDragging&&this.spreadsheetResizerDragging.destroy()},t}(no),$c=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.processColOptions=gt(nd),r.buildTimelineDateProfile=gt(tu),r.hasNesting=gt(td),r.buildRowNodes=gt(vc),r.layoutRef=Zr(),r.rowNodes=[],r.renderedRowNodes=[],r.buildRowIndex=gt(Qc),r.handleSlatCoords=function(e){r.setState({slatCoords:e})},r.handleRowCoords=function(e){r.rowCoords=e,r.scrollResponder.update(!1)},r.handleMaxCushionWidth=function(e){r.setState({slotCushionMaxWidth:Math.ceil(e)})},r.handleScrollLeftRequest=function(e){r.layoutRef.current.forceTimeScroll(e)},r.handleScrollRequest=function(e){var t=r.rowCoords,n=r.layoutRef.current,o=e.rowId||e.resourceId;if(t){if(o){var i=r.buildRowIndex(r.renderedRowNodes)[o];if(null!=i){var a=null!=e.fromBottom?t.bottoms[i]-e.fromBottom:t.tops[i];n.forceResourceScroll(a)}}return!0}},r.handleColWidthChange=function(e){r.setState({spreadsheetColWidths:e})},r.state={resourceAreaWidth:n.options.resourceAreaWidth,spreadsheetColWidths:[]},r}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.state,r=this.context,o=r.options,i=r.viewSpec,a=this.processColOptions(r.options),s=a.superHeaderRendering,l=a.groupSpecs,u=a.orderSpecs,c=a.isVGrouping,d=a.colSpecs,p=this.buildTimelineDateProfile(t.dateProfile,r.dateEnv,o,r.dateProfileGenerator),f=this.rowNodes=this.buildRowNodes(t.resourceStore,l,u,c,t.resourceEntityExpansions,o.resourcesInitiallyExpanded),h=["fc-resource-timeline",this.hasNesting(f)?"":"fc-resource-timeline-flat","fc-timeline",!1===o.eventOverlap?"fc-timeline-overlap-disabled":"fc-timeline-overlap-enabled"],g=o.slotMinWidth,v=xu(p,g||this.computeFallbackSlotMinWidth(p));return qr(Mo,{viewSpec:i},(function(o,i){return qr("div",{ref:o,className:h.concat(i).join(" ")},qr(Jc,{ref:e.layoutRef,forPrint:t.forPrint,isHeightAuto:t.isHeightAuto,spreadsheetCols:ed(d,n.spreadsheetColWidths,""),spreadsheetHeaderRows:function(t){return qr(Vc,{superHeaderRendering:s,colSpecs:d,onColWidthChange:e.handleColWidthChange,rowInnerHeights:t.rowSyncHeights})},spreadsheetBodyRows:function(t){return qr(Xr,null,e.renderSpreadsheetRows(f,d,t.rowSyncHeights))},timeCols:v,timeHeaderContent:function(r){return qr(pu,{clientWidth:r.clientWidth,clientHeight:r.clientHeight,tableMinWidth:r.tableMinWidth,tableColGroupNode:r.tableColGroupNode,dateProfile:t.dateProfile,tDateProfile:p,slatCoords:n.slatCoords,rowInnerHeights:r.rowSyncHeights,onMaxCushionWidth:g?null:e.handleMaxCushionWidth})},timeBodyContent:function(n){return qr(Xc,{dateProfile:t.dateProfile,clientWidth:n.clientWidth,clientHeight:n.clientHeight,tableMinWidth:n.tableMinWidth,tableColGroupNode:n.tableColGroupNode,expandRows:n.expandRows,tDateProfile:p,rowNodes:f,businessHours:t.businessHours,dateSelection:t.dateSelection,eventStore:t.eventStore,eventUiBases:t.eventUiBases,eventSelection:t.eventSelection,eventDrag:t.eventDrag,eventResize:t.eventResize,resourceStore:t.resourceStore,nextDayThreshold:r.options.nextDayThreshold,rowInnerHeights:n.rowSyncHeights,onSlatCoords:e.handleSlatCoords,onRowCoords:e.handleRowCoords,onScrollLeftRequest:e.handleScrollLeftRequest,onRowHeightChange:n.reportRowHeightChange})}}))}))},t.prototype.renderSpreadsheetRows=function(e,t,n){return e.map((function(e,r){return e.group?qr(Bc,{key:e.id,id:e.id,spreadsheetColCnt:t.length,isExpanded:e.isExpanded,group:e.group,innerHeight:n[r]||""}):e.resource?qr(Uc,{key:e.id,colSpecs:t,rowSpans:e.rowSpans,depth:e.depth,isExpanded:e.isExpanded,hasChildren:e.hasChildren,resource:e.resource,innerHeight:n[r]||""}):void 0}))},t.prototype.componentDidMount=function(){this.renderedRowNodes=this.rowNodes,this.scrollResponder=this.context.createScrollResponder(this.handleScrollRequest)},t.prototype.getSnapshotBeforeUpdate=function(){return this.props.forPrint?{}:{resourceScroll:this.queryResourceScroll()}},t.prototype.componentDidUpdate=function(e,t,n){this.renderedRowNodes=this.rowNodes,this.scrollResponder.update(e.dateProfile!==this.props.dateProfile),n.resourceScroll&&this.handleScrollRequest(n.resourceScroll)},t.prototype.componentWillUnmount=function(){this.scrollResponder.detach()},t.prototype.computeFallbackSlotMinWidth=function(e){return Math.max(30,(this.state.slotCushionMaxWidth||0)/e.slotsPerLabel)},t.prototype.queryResourceScroll=function(){var e=this.rowCoords,t=this.renderedRowNodes;if(e){for(var n=this.layoutRef.current,r=e.bottoms,o=n.getResourceScroll(),i={},a=0;a<r.length;a++){var s=t[a],l=r[a]-o;if(l>0){i.rowId=s.id,i.fromBottom=l;break}}return i}},t}(no);function Qc(e){for(var t={},n=0;n<e.length;n++)t[e[n].id]=n;return t}function ed(e,t,n){return void 0===n&&(n=""),e.map((function(e,r){return{className:e.isMain?"fc-main-col":"",width:t[r]||e.width||n}}))}function td(e){for(var t=0,n=e;t<n.length;t++){var r=n[t];if(r.group)return!0;if(r.resource&&r.hasChildren)return!0}return!1}function nd(e){var t=e.resourceAreaColumns||[],n=null;t.length?e.resourceAreaHeaderContent&&(n={headerClassNames:e.resourceAreaHeaderClassNames,headerContent:e.resourceAreaHeaderContent,headerDidMount:e.resourceAreaHeaderDidMount,headerWillUnmount:e.resourceAreaHeaderWillUnmount}):t.push({headerClassNames:e.resourceAreaHeaderClassNames,headerContent:e.resourceAreaHeaderContent||"Resources",headerDidMount:e.resourceAreaHeaderDidMount,headerWillUnmount:e.resourceAreaHeaderWillUnmount});for(var o=[],i=[],a=[],s=!1,l=0,u=t;l<u.length;l++){var c=u[l];c.group?i.push(r(r({},c),{cellClassNames:c.cellClassNames||e.resourceGroupLabelClassNames,cellContent:c.cellContent||e.resourceGroupLabelContent,cellDidMount:c.cellDidMount||e.resourceGroupLabelDidMount,cellWillUnmount:c.cellWillUnmount||e.resourceGroupLaneWillUnmount})):o.push(c)}var d=o[0];if(d.isMain=!0,d.cellClassNames=d.cellClassNames||e.resourceLabelClassNames,d.cellContent=d.cellContent||e.resourceLabelContent,d.cellDidMount=d.cellDidMount||e.resourceLabelDidMount,d.cellWillUnmount=d.cellWillUnmount||e.resourceLabelWillUnmount,i.length)a=i,s=!0;else{var p=e.resourceGroupField;p&&a.push({field:p,labelClassNames:e.resourceGroupLabelClassNames,labelContent:e.resourceGroupLabelContent,labelDidMount:e.resourceGroupLabelDidMount,labelWillUnmount:e.resourceGroupLabelWillUnmount,laneClassNames:e.resourceGroupLaneClassNames,laneContent:e.resourceGroupLaneContent,laneDidMount:e.resourceGroupLaneDidMount,laneWillUnmount:e.resourceGroupLaneWillUnmount})}for(var f=[],h=0,g=e.resourceOrder||ec;h<g.length;h++){for(var v=g[h],m=!1,y=0,S=a;y<S.length;y++){var E=S[y];if(E.field===v.field){E.order=v.order,m=!0;break}}m||f.push(v)}return{superHeaderRendering:n,isVGrouping:s,groupSpecs:a,colSpecs:i.concat(o),orderSpecs:f}}$c.addStateEquality({spreadsheetColWidths:B});var rd=yo({deps:[bl,Cc,ku],initialView:"resourceTimelineDay",views:{resourceTimeline:{type:"timeline",component:$c,needsResourceData:!0,resourceAreaWidth:"30%",resourcesInitiallyExpanded:!0,eventResizableFromStart:!0},resourceTimelineDay:{type:"resourceTimeline",duration:{days:1}},resourceTimelineWeek:{type:"resourceTimeline",duration:{weeks:1}},resourceTimelineMonth:{type:"resourceTimeline",duration:{months:1}},resourceTimelineYear:{type:"resourceTimeline",duration:{years:1}}}});return Qo.push(Ka,Rs,ol,gl,ml,yl,ql,Xl,ku,Cc,Tc,Ic,rd),e.AbstractResourceDayTableModel=lc,e.BASE_OPTION_DEFAULTS=Ht,e.BASE_OPTION_REFINERS=_t,e.BaseComponent=no,e.BgEvent=Sa,e.BootstrapTheme=vl,e.Calendar=Da,e.CalendarApi=$n,e.CalendarContent=Mi,e.CalendarDataManager=ri,e.CalendarDataProvider=fi,e.CalendarRoot=_i,e.Component=Gr,e.ContentHook=Ro,e.CustomContentRenderContext=Do,e.DEFAULT_RESOURCE_ORDER=ec,e.DateComponent=mo,e.DateEnv=sr,e.DateProfileGenerator=Ho,e.DayCellContent=va,e.DayCellRoot=ga,e.DayGridView=bs,e.DayHeader=zi,e.DayResourceTableModel=cc,e.DaySeriesModel=Fi,e.DayTable=Es,e.DayTableModel=ji,e.DayTableSlicer=Cs,e.DayTimeCols=Qs,e.DayTimeColsSlicer=tl,e.DayTimeColsView=nl,e.DelayedRunner=ei,e.Draggable=Ya,e.ElementDragging=Si,e.ElementScrollController=Vr,e.Emitter=Ur,e.EventApi=Qn,e.EventRoot=ca,e.EventSourceApi=L,e.FeaturefulElementDragging=Oa,e.Fragment=Xr,e.Interaction=gi,e.ListView=dl,e.MountHook=wo,e.NamedTimeZoneImpl=hi,e.NowIndicatorRoot=fa,e.NowTimer=Ui,e.PointerDragging=xa,e.PositionCache=Br,e.RefMap=Xi,e.RenderHook=bo,e.ResourceApi=Xu,e.ResourceDayHeader=ic,e.ResourceDayTable=bc,e.ResourceDayTableModel=uc,e.ResourceDayTableView=Rc,e.ResourceDayTimeCols=xc,e.ResourceDayTimeColsView=Mc,e.ResourceLabelRoot=rc,e.ResourceSplitter=Ku,e.ResourceTimelineLane=Fc,e.ResourceTimelineView=$c,e.ScrollController=zr,e.ScrollGrid=Hl,e.ScrollResponder=$r,e.Scroller=Zi,e.SimpleScrollGrid=ua,e.Slicer=Gi,e.Splitter=Dr,e.SpreadsheetRow=Uc,e.StandardEvent=da,e.Table=ms,e.TableDateCell=Wi,e.TableDowCell=Ai,e.TableView=Ja,e.Theme=jr,e.ThirdPartyDraggable=Xa,e.TimeCols=Js,e.TimeColsSlatsCoords=Ts,e.TimeColsView=Os,e.TimelineCoords=hu,e.TimelineHeader=pu,e.TimelineHeaderRows=du,e.TimelineLane=Ru,e.TimelineLaneBg=yu,e.TimelineLaneSlicer=Su,e.TimelineSlats=vu,e.TimelineView=Tu,e.VResourceJoiner=hc,e.VResourceSplitter=pc,e.ViewApi=Yn,e.ViewContextType=Qr,e.ViewRoot=Mo,e.WeekNumberRoot=Ca,e.WindowScrollController=Fr,e.addDays=De,e.addDurations=ot,e.addMs=Re,e.addWeeks=be,e.allowContextMenu=pe,e.allowSelection=ce,e.applyMutationToEventStore=jn,e.applyStyle=$,e.applyStyleProp=Q,e.asRoughMinutes=st,e.asRoughMs=ut,e.asRoughSeconds=lt,e.buildClassNameNormalizer=To,e.buildDayRanges=el,e.buildDayTableModel=Ds,e.buildEventApis=tr,e.buildEventRangeKey=Hn,e.buildHashFromArray=function(e,t){for(var n={},r=0;r<e.length;r++){var o=t(e[r],r);n[o[0]]=o[1]}return n},e.buildNavLinkData=kr,e.buildResourceFields=Sc,e.buildRowNodes=vc,e.buildSegCompareObj=xn,e.buildSegTimeText=In,e.buildSlatCols=xu,e.buildSlatMetas=_s,e.buildTimeColsModel=rl,e.buildTimelineDateProfile=tu,e.collectFromHash=Ke,e.combineEventUis=$t,e.compareByFieldSpec=ge,e.compareByFieldSpecs=he,e.compareNumbers=ye,e.compareObjs=Ze,e.computeEdges=Hr,e.computeFallbackHeaderFormat=Hi,e.computeHeightAndMargins=function(e){return e.getBoundingClientRect().height+function(e){var t=window.getComputedStyle(e);return parseInt(t.marginTop,10)+parseInt(t.marginBottom,10)}(e)},e.computeInnerRect=Or,e.computeRect=Wr,e.computeSegDraggable=kn,e.computeSegEndResizable=Pn,e.computeSegStartResizable=Mn,e.computeShrinkWidth=Ki,e.computeSmallestCellWidth=Ee,e.computeVisibleDayRange=cn,e.config=Ei,e.constrainPoint=Sr,e.createContext=Kr,e.createDuration=tt,e.createElement=qr,e.createEmptyEventStore=qt,e.createEventInstance=Ue,e.createEventUi=Jt,e.createFormatter=Nt,e.createPlugin=yo,e.createRef=Zr,e.diffDates=pn,e.diffDayAndTime=xe,e.diffDays=Te,e.diffPoints=Cr,e.diffWeeks=we,e.diffWholeDays=Me,e.diffWholeWeeks=ke,e.disableCursor=se,e.elementClosest=Y,e.elementMatches=Z,e.enableCursor=le,e.eventTupleToStore=jt,e.filterEventStoreDefs=Zt,e.filterHash=Ve,e.findDirectChildren=K,e.findElements=X,e.flattenResources=gc,e.flexibleCompare=ve,e.flushToDom=Jr,e.formatDate=function(e,t){void 0===t&&(t={});var n=fr(t),r=Nt(t),o=n.createMarkerMeta(e);return o?n.format(o.marker,r,{forcedTzo:o.forcedTzo}):""},e.formatDayString=pt,e.formatIsoTimeString=ft,e.formatRange=function(e,t,n){var r=fr("object"==typeof n&&n?n:{}),o=Nt(n),i=r.createMarkerMeta(e),a=r.createMarkerMeta(t);return i&&a?r.formatRange(i.marker,a.marker,o,{forcedStartTzo:i.forcedTzo,forcedEndTzo:a.forcedTzo,isEndExclusive:n.isEndExclusive,defaultSeparator:Ht.defaultRangeSeparator}):""},e.getAllowYScrolling=$i,e.getClippingParents=Ar,e.getDateMeta=wr,e.getDayClassNames=Tr,e.getDefaultEventEnd=Fn,e.getElSeg=Dn,e.getEventClassNames=_n,e.getIsRtlScrollbarOnLeft=Ir,e.getPublicId=qu,e.getRectCenter=Er,e.getRelevantEvents=Gt,e.getScrollGridClassNames=oa,e.getScrollbarWidths=Nr,e.getSectionClassNames=ia,e.getSectionHasLiquidHeight=Ji,e.getSegMeta=Nn,e.getSlotClassNames=xr,e.getStickyFooterScrollbar=la,e.getStickyHeaderDates=sa,e.getUnequalProps=Ye,e.globalLocales=lr,e.globalPlugins=Qo,e.greatestDurationDenominator=dt,e.guid=ae,e.hasBgRendering=Cn,e.hasShrinkWidth=ra,e.htmlToElement=z,e.identity=Vt,e.interactionSettingsStore=yi,e.interactionSettingsToStore=mi,e.intersectRanges=gn,e.intersectRects=mr,e.isArraysEqual=B,e.isColPropsEqual=ea,e.isDateSpansEqual=An,e.isGroupsEqual=Ec,e.isInt=Se,e.isInteractionValid=uo,e.isMultiDayRange=dn,e.isPropsEqual=qe,e.isPropsValid=po,e.isSingleDay=rt,e.isValidDate=Ae,e.listenBySelector=ne,e.mapHash=Fe,e.memoize=gt,e.memoizeArraylike=mt,e.memoizeHashlike=yt,e.memoizeObjArg=vt,e.mergeEventStores=Yt,e.multiplyDuration=it,e.padStart=me,e.parseBusinessHours=gr,e.parseClassNames=Xt,e.parseDragMeta=bi,e.parseEventDef=ln,e.parseFieldSpecs=fe,e.parseMarker=ar,e.pointInsideRect=vr,e.preventContextMenu=de,e.preventDefault=ee,e.preventSelection=ue,e.rangeContainsMarker=Sn,e.rangeContainsRange=yn,e.rangesEqual=vn,e.rangesIntersect=mn,e.refineEventDef=an,e.refineProps=zt,e.removeElement=V,e.removeExact=U,e.render=Yr,e.renderChunkContent=Qi,e.renderFill=ya,e.renderMicroColGroup=ta,e.renderScrollShim=aa,e.requestJson=Ko,e.sanitizeShrinkWidth=na,e.setElSeg=bn,e.setRef=io,e.setScrollFromStartingEdge=Tl,e.sliceEventStore=En,e.sliceEvents=function(e,t){return En(e.eventStore,e.eventUiBases,e.dateProfile.activeRange,t?e.nextDayThreshold:null).fg},e.sortEventSegs=Tn,e.startOfDay=Pe,e.translateRect=yr,e.triggerDateSelect=zn,e.unpromisify=Lr,e.version="<%= version %>",e.whenTransitionDone=oe,e.wholeDivideDurations=ct,e}({});
\ No newline at end of file
+var FullCalendar=function(e){"use strict";var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,n)};function n(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}var r=function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};function o(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),o=0;for(t=0;t<n;t++)for(var i=arguments[t],a=0,s=i.length;a<s;a++,o++)r[o]=i[a];return r}var i,a,s,l,u,c,d={},p=[],f=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function h(e,t){for(var n in t)e[n]=t[n];return e}function g(e){var t=e.parentNode;t&&t.removeChild(e)}function v(e,t,n){var r,o,i,a=arguments,s={};for(i in t)"key"==i?r=t[i]:"ref"==i?o=t[i]:s[i]=t[i];if(arguments.length>3)for(n=[n],i=3;i<arguments.length;i++)n.push(a[i]);if(null!=n&&(s.children=n),"function"==typeof e&&null!=e.defaultProps)for(i in e.defaultProps)void 0===s[i]&&(s[i]=e.defaultProps[i]);return m(e,s,r,o,null)}function m(e,t,n,r,o){var a={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++i.__v:o};return null!=i.vnode&&i.vnode(a),a}function y(e){return e.children}function S(e,t){this.props=e,this.context=t}function E(e,t){if(null==t)return e.__?E(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e)return n.__e;return"function"==typeof e.type?E(e):null}function C(e){var t,n;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e){e.__e=e.__c.base=n.__e;break}return C(e)}}function b(e){(!e.__d&&(e.__d=!0)&&a.push(e)&&!R.__r++||l!==i.debounceRendering)&&((l=i.debounceRendering)||s)(R)}function R(){for(var e;R.__r=a.length;)e=a.sort((function(e,t){return e.__v.__b-t.__v.__b})),a=[],e.some((function(e){var t,n,r,o,i,a,s;e.__d&&(a=(i=(t=e).__v).__e,(s=t.__P)&&(n=[],(r=h({},i)).__v=i.__v+1,o=I(s,i,r,t.__n,void 0!==s.ownerSVGElement,null!=i.__h?[a]:null,n,null==a?E(i):a,i.__h),_(n,i),o!=a&&C(i)))}))}function D(e,t,n,r,o,i,a,s,l,u){var c,f,h,v,S,C,b,R=r&&r.__k||p,D=R.length;for(l==d&&(l=null!=a?a[0]:D?E(r,0):null),n.__k=[],c=0;c<t.length;c++)if(null!=(v=n.__k[c]=null==(v=t[c])||"boolean"==typeof v?null:"string"==typeof v||"number"==typeof v?m(null,v,null,null,v):Array.isArray(v)?m(y,{children:v},null,null,null):null!=v.__e||null!=v.__c?m(v.type,v.props,v.key,null,v.__v):v)){if(v.__=n,v.__b=n.__b+1,null===(h=R[c])||h&&v.key==h.key&&v.type===h.type)R[c]=void 0;else for(f=0;f<D;f++){if((h=R[f])&&v.key==h.key&&v.type===h.type){R[f]=void 0;break}h=null}S=I(e,v,h=h||d,o,i,a,s,l,u),(f=v.ref)&&h.ref!=f&&(b||(b=[]),h.ref&&b.push(h.ref,null,v),b.push(f,v.__c||S,v)),null!=S?(null==C&&(C=S),l=w(e,v,h,R,a,S,l),u||"option"!=n.type?"function"==typeof n.type&&(n.__d=l):e.value=""):l&&h.__e==l&&l.parentNode!=e&&(l=E(h))}if(n.__e=C,null!=a&&"function"!=typeof n.type)for(c=a.length;c--;)null!=a[c]&&g(a[c]);for(c=D;c--;)null!=R[c]&&O(R[c],R[c]);if(b)for(c=0;c<b.length;c++)H(b[c],b[++c],b[++c])}function w(e,t,n,r,o,i,a){var s,l,u;if(void 0!==t.__d)s=t.__d,t.__d=void 0;else if(o==n||i!=a||null==i.parentNode)e:if(null==a||a.parentNode!==e)e.appendChild(i),s=null;else{for(l=a,u=0;(l=l.nextSibling)&&u<r.length;u+=2)if(l==i)break e;e.insertBefore(i,a),s=a}return void 0!==s?s:i.nextSibling}function T(e,t,n){"-"===t[0]?e.setProperty(t,n):e[t]=null==n?"":"number"!=typeof n||f.test(t)?n:n+"px"}function x(e,t,n,r,o){var i,a,s;if(o&&"className"==t&&(t="class"),"style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof r&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||T(e.style,t,"");if(n)for(t in n)r&&n[t]===r[t]||T(e.style,t,n[t])}else"o"===t[0]&&"n"===t[1]?(i=t!==(t=t.replace(/Capture$/,"")),(a=t.toLowerCase())in e&&(t=a),t=t.slice(2),e.l||(e.l={}),e.l[t+i]=n,s=i?k:M,n?r||e.addEventListener(t,s,i):e.removeEventListener(t,s,i)):"list"!==t&&"tagName"!==t&&"form"!==t&&"type"!==t&&"size"!==t&&"download"!==t&&"href"!==t&&!o&&t in e?e[t]=null==n?"":n:"function"!=typeof n&&"dangerouslySetInnerHTML"!==t&&(t!==(t=t.replace(/xlink:?/,""))?null==n||!1===n?e.removeAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase()):e.setAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase(),n):null==n||!1===n&&!/^ar/.test(t)?e.removeAttribute(t):e.setAttribute(t,n))}function M(e){this.l[e.type+!1](i.event?i.event(e):e)}function k(e){this.l[e.type+!0](i.event?i.event(e):e)}function P(e,t,n){var r,o;for(r=0;r<e.__k.length;r++)(o=e.__k[r])&&(o.__=e,o.__e&&("function"==typeof o.type&&o.__k.length>1&&P(o,t,n),t=w(n,o,o,e.__k,null,o.__e,t),"function"==typeof e.type&&(e.__d=t)))}function I(e,t,n,r,o,a,s,l,u){var c,d,p,f,g,v,m,E,C,b,R,w=t.type;if(void 0!==t.constructor)return null;null!=n.__h&&(u=n.__h,l=t.__e=n.__e,t.__h=null,a=[l]),(c=i.__b)&&c(t);try{e:if("function"==typeof w){if(E=t.props,C=(c=w.contextType)&&r[c.__c],b=c?C?C.props.value:c.__:r,n.__c?m=(d=t.__c=n.__c).__=d.__E:("prototype"in w&&w.prototype.render?t.__c=d=new w(E,b):(t.__c=d=new S(E,b),d.constructor=w,d.render=W),C&&C.sub(d),d.props=E,d.state||(d.state={}),d.context=b,d.__n=r,p=d.__d=!0,d.__h=[]),null==d.__s&&(d.__s=d.state),null!=w.getDerivedStateFromProps&&(d.__s==d.state&&(d.__s=h({},d.__s)),h(d.__s,w.getDerivedStateFromProps(E,d.__s))),f=d.props,g=d.state,p)null==w.getDerivedStateFromProps&&null!=d.componentWillMount&&d.componentWillMount(),null!=d.componentDidMount&&d.__h.push(d.componentDidMount);else{if(null==w.getDerivedStateFromProps&&E!==f&&null!=d.componentWillReceiveProps&&d.componentWillReceiveProps(E,b),!d.__e&&null!=d.shouldComponentUpdate&&!1===d.shouldComponentUpdate(E,d.__s,b)||t.__v===n.__v){d.props=E,d.state=d.__s,t.__v!==n.__v&&(d.__d=!1),d.__v=t,t.__e=n.__e,t.__k=n.__k,d.__h.length&&s.push(d),P(t,l,e);break e}null!=d.componentWillUpdate&&d.componentWillUpdate(E,d.__s,b),null!=d.componentDidUpdate&&d.__h.push((function(){d.componentDidUpdate(f,g,v)}))}d.context=b,d.props=E,d.state=d.__s,(c=i.__r)&&c(t),d.__d=!1,d.__v=t,d.__P=e,c=d.render(d.props,d.state,d.context),d.state=d.__s,null!=d.getChildContext&&(r=h(h({},r),d.getChildContext())),p||null==d.getSnapshotBeforeUpdate||(v=d.getSnapshotBeforeUpdate(f,g)),R=null!=c&&c.type==y&&null==c.key?c.props.children:c,D(e,Array.isArray(R)?R:[R],t,n,r,o,a,s,l,u),d.base=t.__e,t.__h=null,d.__h.length&&s.push(d),m&&(d.__E=d.__=null),d.__e=!1}else null==a&&t.__v===n.__v?(t.__k=n.__k,t.__e=n.__e):t.__e=N(n.__e,t,n,r,o,a,s,u);(c=i.diffed)&&c(t)}catch(e){t.__v=null,(u||null!=a)&&(t.__e=l,t.__h=!!u,a[a.indexOf(l)]=null),i.__e(e,t,n)}return t.__e}function _(e,t){i.__c&&i.__c(t,e),e.some((function(t){try{e=t.__h,t.__h=[],e.some((function(e){e.call(t)}))}catch(e){i.__e(e,t.__v)}}))}function N(e,t,n,r,o,i,a,s){var l,u,c,f,h,g=n.props,v=t.props;if(o="svg"===t.type||o,null!=i)for(l=0;l<i.length;l++)if(null!=(u=i[l])&&((null===t.type?3===u.nodeType:u.localName===t.type)||e==u)){e=u,i[l]=null;break}if(null==e){if(null===t.type)return document.createTextNode(v);e=o?document.createElementNS("http://www.w3.org/2000/svg",t.type):document.createElement(t.type,v.is&&{is:v.is}),i=null,s=!1}if(null===t.type)g===v||s&&e.data===v||(e.data=v);else{if(null!=i&&(i=p.slice.call(e.childNodes)),c=(g=n.props||d).dangerouslySetInnerHTML,f=v.dangerouslySetInnerHTML,!s){if(null!=i)for(g={},h=0;h<e.attributes.length;h++)g[e.attributes[h].name]=e.attributes[h].value;(f||c)&&(f&&(c&&f.__html==c.__html||f.__html===e.innerHTML)||(e.innerHTML=f&&f.__html||""))}(function(e,t,n,r,o){var i;for(i in n)"children"===i||"key"===i||i in t||x(e,i,null,n[i],r);for(i in t)o&&"function"!=typeof t[i]||"children"===i||"key"===i||"value"===i||"checked"===i||n[i]===t[i]||x(e,i,t[i],n[i],r)})(e,v,g,o,s),f?t.__k=[]:(l=t.props.children,D(e,Array.isArray(l)?l:[l],t,n,r,"foreignObject"!==t.type&&o,i,a,d,s)),s||("value"in v&&void 0!==(l=v.value)&&(l!==e.value||"progress"===t.type&&!l)&&x(e,"value",l,g.value,!1),"checked"in v&&void 0!==(l=v.checked)&&l!==e.checked&&x(e,"checked",l,g.checked,!1))}return e}function H(e,t,n){try{"function"==typeof e?e(t):e.current=t}catch(e){i.__e(e,n)}}function O(e,t,n){var r,o,a;if(i.unmount&&i.unmount(e),(r=e.ref)&&(r.current&&r.current!==e.__e||H(r,null,t)),n||"function"==typeof e.type||(n=null!=(o=e.__e)),e.__e=e.__d=void 0,null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){i.__e(e,t)}r.base=r.__P=null}if(r=e.__k)for(a=0;a<r.length;a++)r[a]&&O(r[a],t,n);null!=o&&g(o)}function W(e,t,n){return this.constructor(e,n)}function A(e,t,n){var r,o,a;i.__&&i.__(e,t),o=(r=n===u)?null:n&&n.__k||t.__k,e=v(y,null,[e]),a=[],I(t,(r?t:n||t).__k=e,o||d,d,void 0!==t.ownerSVGElement,n&&!r?[n]:o?null:t.childNodes.length?p.slice.call(t.childNodes):null,a,n||d,r),_(a,e)}i={__e:function(e,t){for(var n,r,o,i=t.__h;t=t.__;)if((n=t.__c)&&!n.__)try{if((r=n.constructor)&&null!=r.getDerivedStateFromError&&(n.setState(r.getDerivedStateFromError(e)),o=n.__d),null!=n.componentDidCatch&&(n.componentDidCatch(e),o=n.__d),o)return t.__h=i,n.__E=n}catch(t){e=t}throw e},__v:0},S.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=h({},this.state),"function"==typeof e&&(e=e(h({},n),this.props)),e&&h(n,e),null!=e&&this.__v&&(t&&this.__h.push(t),b(this))},S.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),b(this))},S.prototype.render=y,a=[],s="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,R.__r=0,u=d,c=0;var L="undefined"!=typeof globalThis?globalThis:window;L.FullCalendarVDom?console.warn("FullCalendar VDOM already loaded"):L.FullCalendarVDom={Component:S,createElement:v,render:A,createRef:function(){return{current:null}},Fragment:y,createContext:function(e){var t=function(e,t){var n={__c:t="__cC"+c++,__:e,Consumer:function(e,t){return e.children(t)},Provider:function(e,n,r){return this.getChildContext||(n=[],(r={})[t]=this,this.getChildContext=function(){return r},this.shouldComponentUpdate=function(e){this.props.value!==e.value&&n.some(b)},this.sub=function(e){n.push(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){n.splice(n.indexOf(e),1),t&&t.call(e)}}),e.children}};return n.Provider.__=n.Consumer.contextType=n}(e),n=t.Provider;return t.Provider=function(){var e=this,t=!this.getChildContext,r=n.apply(this,arguments);if(t){var o=[];this.shouldComponentUpdate=function(t){e.props.value!==t.value&&o.forEach((function(e){e.context=t.value,e.forceUpdate()}))},this.sub=function(e){o.push(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){o.splice(o.indexOf(e),1),t&&t.call(e)}}}return r},t},flushToDom:function(){var e=i.debounceRendering,t=[];i.debounceRendering=function(e){t.push(e)},A(v(U,{}),document.createElement("div"));for(;t.length;)t.shift()();i.debounceRendering=e},unmountComponentAtNode:function(e){A(null,e)}};var U=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){return v("div",{})},t.prototype.componentDidMount=function(){this.setState({})},t}(S);var B=function(){function e(e,t){this.context=e,this.internalEventSource=t}return e.prototype.remove=function(){this.context.dispatch({type:"REMOVE_EVENT_SOURCE",sourceId:this.internalEventSource.sourceId})},e.prototype.refetch=function(){this.context.dispatch({type:"FETCH_EVENT_SOURCES",sourceIds:[this.internalEventSource.sourceId]})},Object.defineProperty(e.prototype,"id",{get:function(){return this.internalEventSource.publicId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"url",{get:function(){return this.internalEventSource.meta.url},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"format",{get:function(){return this.internalEventSource.meta.format},enumerable:!1,configurable:!0}),e}();function z(e){e.parentNode&&e.parentNode.removeChild(e)}function V(e,t){if(e.closest)return e.closest(t);if(!document.documentElement.contains(e))return null;do{if(F(e,t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null}function F(e,t){return(e.matches||e.matchesSelector||e.msMatchesSelector).call(e,t)}function j(e,t){for(var n=e instanceof HTMLElement?[e]:e,r=[],o=0;o<n.length;o+=1)for(var i=n[o].querySelectorAll(t),a=0;a<i.length;a+=1)r.push(i[a]);return r}function G(e,t){for(var n=e instanceof HTMLElement?[e]:e,r=[],o=0;o<n.length;o+=1)for(var i=n[o].children,a=0;a<i.length;a+=1){var s=i[a];t&&!F(s,t)||r.push(s)}return r}var q=/(top|left|right|bottom|width|height)$/i;function Y(e,t){for(var n in t)Z(e,n,t[n])}function Z(e,t,n){null==n?e.style[t]="":"number"==typeof n&&q.test(t)?e.style[t]=n+"px":e.style[t]=n}function X(e){e.preventDefault()}function K(e,t){return function(n){var r=V(n.target,e);r&&t.call(r,n,r)}}function J(e,t,n,r){var o=K(n,r);return e.addEventListener(t,o),function(){e.removeEventListener(t,o)}}var $=["webkitTransitionEnd","otransitionend","oTransitionEnd","msTransitionEnd","transitionend"];function Q(e,t){var n=function(r){t(r),$.forEach((function(t){e.removeEventListener(t,n)}))};$.forEach((function(t){e.addEventListener(t,n)}))}var ee=0;function te(){return String(ee+=1)}function ne(){document.body.classList.add("fc-not-allowed")}function re(){document.body.classList.remove("fc-not-allowed")}function oe(e){e.classList.add("fc-unselectable"),e.addEventListener("selectstart",X)}function ie(e){e.classList.remove("fc-unselectable"),e.removeEventListener("selectstart",X)}function ae(e){e.addEventListener("contextmenu",X)}function se(e){e.removeEventListener("contextmenu",X)}function le(e){var t,n,r=[],o=[];for("string"==typeof e?o=e.split(/\s*,\s*/):"function"==typeof e?o=[e]:Array.isArray(e)&&(o=e),t=0;t<o.length;t+=1)"string"==typeof(n=o[t])?r.push("-"===n.charAt(0)?{field:n.substring(1),order:-1}:{field:n,order:1}):"function"==typeof n&&r.push({func:n});return r}function ue(e,t,n){var r,o;for(r=0;r<n.length;r+=1)if(o=ce(e,t,n[r]))return o;return 0}function ce(e,t,n){return n.func?n.func(e,t):de(e[n.field],t[n.field])*(n.order||1)}function de(e,t){return e||t?null==t?-1:null==e?1:"string"==typeof e||"string"==typeof t?String(e).localeCompare(String(t)):e-t:0}function pe(e,t){var n=String(e);return"000".substr(0,t-n.length)+n}function fe(e,t){return e-t}function he(e){return e%1==0}function ge(e){var t=e.querySelector(".fc-scrollgrid-shrink-frame"),n=e.querySelector(".fc-scrollgrid-shrink-cushion");if(!t)throw new Error("needs fc-scrollgrid-shrink-frame className");if(!n)throw new Error("needs fc-scrollgrid-shrink-cushion className");return e.getBoundingClientRect().width-t.getBoundingClientRect().width+n.getBoundingClientRect().width}var ve=["sun","mon","tue","wed","thu","fri","sat"];function me(e,t){var n=Pe(e);return n[2]+=7*t,Ie(n)}function ye(e,t){var n=Pe(e);return n[2]+=t,Ie(n)}function Se(e,t){var n=Pe(e);return n[6]+=t,Ie(n)}function Ee(e,t){return Ce(e,t)/7}function Ce(e,t){return(t.valueOf()-e.valueOf())/864e5}function be(e,t){var n=we(e),r=we(t);return{years:0,months:0,days:Math.round(Ce(n,r)),milliseconds:t.valueOf()-r.valueOf()-(e.valueOf()-n.valueOf())}}function Re(e,t){var n=De(e,t);return null!==n&&n%7==0?n/7:null}function De(e,t){return Ne(e)===Ne(t)?Math.round(Ce(e,t)):null}function we(e){return Ie([e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()])}function Te(e,t,n,r){var o=Ie([t,0,1+xe(t,n,r)]),i=we(e),a=Math.round(Ce(o,i));return Math.floor(a/7)+1}function xe(e,t,n){var r=7+t-n;return-((7+Ie([e,0,r]).getUTCDay()-t)%7)+r-1}function Me(e){return[e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()]}function ke(e){return new Date(e[0],e[1]||0,null==e[2]?1:e[2],e[3]||0,e[4]||0,e[5]||0)}function Pe(e){return[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()]}function Ie(e){return 1===e.length&&(e=e.concat([0])),new Date(Date.UTC.apply(Date,e))}function _e(e){return!isNaN(e.valueOf())}function Ne(e){return 1e3*e.getUTCHours()*60*60+1e3*e.getUTCMinutes()*60+1e3*e.getUTCSeconds()+e.getUTCMilliseconds()}function He(e,t,n,r){return{instanceId:te(),defId:e,range:t,forcedStartTzo:null==n?null:n,forcedEndTzo:null==r?null:r}}var Oe=Object.prototype.hasOwnProperty;function We(e,t){var n={};if(t)for(var r in t){for(var o=[],i=e.length-1;i>=0;i-=1){var a=e[i][r];if("object"==typeof a&&a)o.unshift(a);else if(void 0!==a){n[r]=a;break}}o.length&&(n[r]=We(o))}for(i=e.length-1;i>=0;i-=1){var s=e[i];for(var l in s)l in n||(n[l]=s[l])}return n}function Ae(e,t){var n={};for(var r in e)t(e[r],r)&&(n[r]=e[r]);return n}function Le(e,t){var n={};for(var r in e)n[r]=t(e[r],r);return n}function Ue(e){for(var t={},n=0,r=e;n<r.length;n++){t[r[n]]=!0}return t}function Be(e){var t=[];for(var n in e)t.push(e[n]);return t}function ze(e,t){if(e===t)return!0;for(var n in e)if(Oe.call(e,n)&&!(n in t))return!1;for(var n in t)if(Oe.call(t,n)&&e[n]!==t[n])return!1;return!0}function Ve(e,t){var n=[];for(var r in e)Oe.call(e,r)&&(r in t||n.push(r));for(var r in t)Oe.call(t,r)&&e[r]!==t[r]&&n.push(r);return n}function Fe(e,t,n){if(void 0===n&&(n={}),e===t)return!0;for(var r in t)if(!(r in e)||!je(e[r],t[r],n[r]))return!1;for(var r in e)if(!(r in t))return!1;return!0}function je(e,t,n){return e===t||!0===n||!!n&&n(e,t)}function Ge(e,t,n,r){void 0===t&&(t=0),void 0===r&&(r=1);var o=[];null==n&&(n=Object.keys(e).length);for(var i=t;i<n;i+=r){var a=e[i];void 0!==a&&o.push(a)}return o}function qe(e,t,n){var r=n.dateEnv,o=n.pluginHooks,i=n.options,a=e.defs,s=e.instances;for(var l in s=Ae(s,(function(e){return!a[e.defId].recurringDef})),a){var u=a[l];if(u.recurringDef){var c=u.recurringDef.duration;c||(c=u.allDay?i.defaultAllDayEventDuration:i.defaultTimedEventDuration);for(var d=0,p=Ye(u,c,t,r,o.recurringTypes);d<p.length;d++){var f=p[d],h=He(l,{start:f,end:r.add(f,c)});s[h.instanceId]=h}}}return{defs:a,instances:s}}function Ye(e,t,n,r,o){var i=o[e.recurringDef.typeId].expand(e.recurringDef.typeData,{start:r.subtract(n.start,t),end:n.end},r);return e.allDay&&(i=i.map(we)),i}var Ze=["years","months","days","milliseconds"],Xe=/^(-?)(?:(\d+)\.)?(\d+):(\d\d)(?::(\d\d)(?:\.(\d\d\d))?)?/;function Ke(e,t){var n;return"string"==typeof e?function(e){var t=Xe.exec(e);if(t){var n=t[1]?-1:1;return{years:0,months:0,days:n*(t[2]?parseInt(t[2],10):0),milliseconds:n*(60*(t[3]?parseInt(t[3],10):0)*60*1e3+60*(t[4]?parseInt(t[4],10):0)*1e3+1e3*(t[5]?parseInt(t[5],10):0)+(t[6]?parseInt(t[6],10):0))}}return null}(e):"object"==typeof e&&e?Je(e):"number"==typeof e?Je(((n={})[t||"milliseconds"]=e,n)):null}function Je(e){var t={years:e.years||e.year||0,months:e.months||e.month||0,days:e.days||e.day||0,milliseconds:60*(e.hours||e.hour||0)*60*1e3+60*(e.minutes||e.minute||0)*1e3+1e3*(e.seconds||e.second||0)+(e.milliseconds||e.millisecond||e.ms||0)},n=e.weeks||e.week;return n&&(t.days+=7*n,t.specifiedWeeks=!0),t}function $e(e){return e.years||e.months||e.milliseconds?0:e.days}function Qe(e,t){return{years:e.years+t.years,months:e.months+t.months,days:e.days+t.days,milliseconds:e.milliseconds+t.milliseconds}}function et(e,t){return{years:e.years*t,months:e.months*t,days:e.days*t,milliseconds:e.milliseconds*t}}function tt(e){return ot(e)/864e5}function nt(e){return ot(e)/6e4}function rt(e){return ot(e)/1e3}function ot(e){return 31536e6*e.years+2592e6*e.months+864e5*e.days+e.milliseconds}function it(e,t){for(var n=null,r=0;r<Ze.length;r+=1){var o=Ze[r];if(t[o]){var i=e[o]/t[o];if(!he(i)||null!==n&&n!==i)return null;n=i}else if(e[o])return null}return n}function at(e){var t=e.milliseconds;if(t){if(t%1e3!=0)return{unit:"millisecond",value:t};if(t%6e4!=0)return{unit:"second",value:t/1e3};if(t%36e5!=0)return{unit:"minute",value:t/6e4};if(t)return{unit:"hour",value:t/36e5}}return e.days?e.specifiedWeeks&&e.days%7==0?{unit:"week",value:e.days/7}:{unit:"day",value:e.days}:e.months?{unit:"month",value:e.months}:e.years?{unit:"year",value:e.years}:{unit:"millisecond",value:0}}function st(e){return e.toISOString().replace(/T.*$/,"")}function lt(e){return pe(e.getUTCHours(),2)+":"+pe(e.getUTCMinutes(),2)+":"+pe(e.getUTCSeconds(),2)}function ut(e,t){void 0===t&&(t=!1);var n=e<0?"-":"+",r=Math.abs(e),o=Math.floor(r/60),i=Math.round(r%60);return t?n+pe(o,2)+":"+pe(i,2):"GMT"+n+o+(i?":"+pe(i,2):"")}function ct(e,t){for(var n=0,r=0;r<e.length;)e[r]===t?(e.splice(r,1),n+=1):r+=1;return n}function dt(e,t,n){if(e===t)return!0;var r,o=e.length;if(o!==t.length)return!1;for(r=0;r<o;r+=1)if(!(n?n(e[r],t[r]):e[r]===t[r]))return!1;return!0}function pt(e,t,n){var r,o;return function(){for(var i=[],a=0;a<arguments.length;a++)i[a]=arguments[a];if(r){if(!dt(r,i)){n&&n(o);var s=e.apply(this,i);t&&t(s,o)||(o=s)}}else o=e.apply(this,i);return r=i,o}}function ft(e,t,n){var r,o,i=this;return function(a){if(r){if(!ze(r,a)){n&&n(o);var s=e.call(i,a);t&&t(s,o)||(o=s)}}else o=e.call(i,a);return r=a,o}}function ht(e,t,n){var r=this,o=[],i=[];return function(a){for(var s=o.length,l=a.length,u=0;u<s;u+=1)if(a[u]){if(!dt(o[u],a[u])){n&&n(i[u]);var c=e.apply(r,a[u]);t&&t(c,i[u])||(i[u]=c)}}else n&&n(i[u]);for(;u<l;u+=1)i[u]=e.apply(r,a[u]);return o=a,i.splice(l),i}}function gt(e,t,n){var r=this,o={},i={};return function(a){var s={};for(var l in a)if(i[l])if(dt(o[l],a[l]))s[l]=i[l];else{n&&n(i[l]);var u=e.apply(r,a[l]);s[l]=t&&t(u,i[l])?i[l]:u}else s[l]=e.apply(r,a[l]);return o=a,i=s,s}}var vt={week:3,separator:0,omitZeroMinute:0,meridiem:0,omitCommas:0},mt={timeZoneName:7,era:6,year:5,month:4,day:2,weekday:2,hour:1,minute:1,second:1},yt=/\s*([ap])\.?m\.?/i,St=/,/g,Et=/\s+/g,Ct=/\u200e/g,bt=/UTC|GMT/,Rt=function(){function e(e){var t={},n={},r=0;for(var o in e)o in vt?(n[o]=e[o],r=Math.max(vt[o],r)):(t[o]=e[o],o in mt&&(r=Math.max(mt[o],r)));this.standardDateProps=t,this.extendedSettings=n,this.severity=r,this.buildFormattingFunc=pt(Dt)}return e.prototype.format=function(e,t){return this.buildFormattingFunc(this.standardDateProps,this.extendedSettings,t)(e)},e.prototype.formatRange=function(e,t,n,r){var o=this.standardDateProps,i=this.extendedSettings,a=function(e,t,n){if(n.getMarkerYear(e)!==n.getMarkerYear(t))return 5;if(n.getMarkerMonth(e)!==n.getMarkerMonth(t))return 4;if(n.getMarkerDay(e)!==n.getMarkerDay(t))return 2;if(Ne(e)!==Ne(t))return 1;return 0}(e.marker,t.marker,n.calendarSystem);if(!a)return this.format(e,n);var s=a;!(s>1)||"numeric"!==o.year&&"2-digit"!==o.year||"numeric"!==o.month&&"2-digit"!==o.month||"numeric"!==o.day&&"2-digit"!==o.day||(s=1);var l=this.format(e,n),u=this.format(t,n);if(l===u)return l;var c=Dt(function(e,t){var n={};for(var r in e)(!(r in mt)||mt[r]<=t)&&(n[r]=e[r]);return n}(o,s),i,n),d=c(e),p=c(t),f=function(e,t,n,r){var o=0;for(;o<e.length;){var i=e.indexOf(t,o);if(-1===i)break;var a=e.substr(0,i);o=i+t.length;for(var s=e.substr(o),l=0;l<n.length;){var u=n.indexOf(r,l);if(-1===u)break;var c=n.substr(0,u);l=u+r.length;var d=n.substr(l);if(a===c&&s===d)return{before:a,after:s}}}return null}(l,d,u,p),h=i.separator||r||n.defaultSeparator||"";return f?f.before+d+h+p+f.after:l+h+u},e.prototype.getLargestUnit=function(){switch(this.severity){case 7:case 6:case 5:return"year";case 4:return"month";case 3:return"week";case 2:return"day";default:return"time"}},e}();function Dt(e,t,n){var o=Object.keys(e).length;return 1===o&&"short"===e.timeZoneName?function(e){return ut(e.timeZoneOffset)}:0===o&&t.week?function(e){return function(e,t,n,r){var o=[];"narrow"===r?o.push(t):"short"===r&&o.push(t," ");o.push(n.simpleNumberFormat.format(e)),"rtl"===n.options.direction&&o.reverse();return o.join("")}(n.computeWeekNumber(e.marker),n.weekText,n.locale,t.week)}:function(e,t,n){e=r({},e),t=r({},t),function(e,t){e.timeZoneName&&(e.hour||(e.hour="2-digit"),e.minute||(e.minute="2-digit"));"long"===e.timeZoneName&&(e.timeZoneName="short");t.omitZeroMinute&&(e.second||e.millisecond)&&delete t.omitZeroMinute}(e,t),e.timeZone="UTC";var o,i=new Intl.DateTimeFormat(n.locale.codes,e);if(t.omitZeroMinute){var a=r({},e);delete a.minute,o=new Intl.DateTimeFormat(n.locale.codes,a)}return function(r){var a=r.marker;return function(e,t,n,r,o){e=e.replace(Ct,""),"short"===n.timeZoneName&&(e=function(e,t){var n=!1;e=e.replace(bt,(function(){return n=!0,t})),n||(e+=" "+t);return e}(e,"UTC"===o.timeZone||null==t.timeZoneOffset?"UTC":ut(t.timeZoneOffset)));r.omitCommas&&(e=e.replace(St,"").trim());r.omitZeroMinute&&(e=e.replace(":00",""));!1===r.meridiem?e=e.replace(yt,"").trim():"narrow"===r.meridiem?e=e.replace(yt,(function(e,t){return t.toLocaleLowerCase()})):"short"===r.meridiem?e=e.replace(yt,(function(e,t){return t.toLocaleLowerCase()+"m"})):"lowercase"===r.meridiem&&(e=e.replace(yt,(function(e){return e.toLocaleLowerCase()})));return e=(e=e.replace(Et," ")).trim()}((o&&!a.getUTCMinutes()?o:i).format(a),r,e,t,n)}}(e,t,n)}function wt(e,t){var n=t.markerToArray(e.marker);return{marker:e.marker,timeZoneOffset:e.timeZoneOffset,array:n,year:n[0],month:n[1],day:n[2],hour:n[3],minute:n[4],second:n[5],millisecond:n[6]}}function Tt(e,t,n,r){var o=wt(e,n.calendarSystem);return{date:o,start:o,end:t?wt(t,n.calendarSystem):null,timeZone:n.timeZone,localeCodes:n.locale.codes,defaultSeparator:r||n.defaultSeparator}}var xt=function(){function e(e){this.cmdStr=e}return e.prototype.format=function(e,t,n){return t.cmdFormatter(this.cmdStr,Tt(e,null,t,n))},e.prototype.formatRange=function(e,t,n,r){return n.cmdFormatter(this.cmdStr,Tt(e,t,n,r))},e}(),Mt=function(){function e(e){this.func=e}return e.prototype.format=function(e,t,n){return this.func(Tt(e,null,t,n))},e.prototype.formatRange=function(e,t,n,r){return this.func(Tt(e,t,n,r))},e}();function kt(e){return"object"==typeof e&&e?new Rt(e):"string"==typeof e?new xt(e):"function"==typeof e?new Mt(e):null}var Pt={navLinkDayClick:Ut,navLinkWeekClick:Ut,duration:Ke,bootstrapFontAwesome:Ut,buttonIcons:Ut,customButtons:Ut,defaultAllDayEventDuration:Ke,defaultTimedEventDuration:Ke,nextDayThreshold:Ke,scrollTime:Ke,slotMinTime:Ke,slotMaxTime:Ke,dayPopoverFormat:kt,slotDuration:Ke,snapDuration:Ke,headerToolbar:Ut,footerToolbar:Ut,defaultRangeSeparator:String,titleRangeSeparator:String,forceEventDuration:Boolean,dayHeaders:Boolean,dayHeaderFormat:kt,dayHeaderClassNames:Ut,dayHeaderContent:Ut,dayHeaderDidMount:Ut,dayHeaderWillUnmount:Ut,dayCellClassNames:Ut,dayCellContent:Ut,dayCellDidMount:Ut,dayCellWillUnmount:Ut,initialView:String,aspectRatio:Number,weekends:Boolean,weekNumberCalculation:Ut,weekNumbers:Boolean,weekNumberClassNames:Ut,weekNumberContent:Ut,weekNumberDidMount:Ut,weekNumberWillUnmount:Ut,editable:Boolean,viewClassNames:Ut,viewDidMount:Ut,viewWillUnmount:Ut,nowIndicator:Boolean,nowIndicatorClassNames:Ut,nowIndicatorContent:Ut,nowIndicatorDidMount:Ut,nowIndicatorWillUnmount:Ut,showNonCurrentDates:Boolean,lazyFetching:Boolean,startParam:String,endParam:String,timeZoneParam:String,timeZone:String,locales:Ut,locale:Ut,themeSystem:String,dragRevertDuration:Number,dragScroll:Boolean,allDayMaintainDuration:Boolean,unselectAuto:Boolean,dropAccept:Ut,eventOrder:le,handleWindowResize:Boolean,windowResizeDelay:Number,longPressDelay:Number,eventDragMinDistance:Number,expandRows:Boolean,height:Ut,contentHeight:Ut,direction:String,weekNumberFormat:kt,eventResizableFromStart:Boolean,displayEventTime:Boolean,displayEventEnd:Boolean,weekText:String,progressiveEventRendering:Boolean,businessHours:Ut,initialDate:Ut,now:Ut,eventDataTransform:Ut,stickyHeaderDates:Ut,stickyFooterScrollbar:Ut,viewHeight:Ut,defaultAllDay:Boolean,eventSourceFailure:Ut,eventSourceSuccess:Ut,eventDisplay:String,eventStartEditable:Boolean,eventDurationEditable:Boolean,eventOverlap:Ut,eventConstraint:Ut,eventAllow:Ut,eventBackgroundColor:String,eventBorderColor:String,eventTextColor:String,eventColor:String,eventClassNames:Ut,eventContent:Ut,eventDidMount:Ut,eventWillUnmount:Ut,selectConstraint:Ut,selectOverlap:Ut,selectAllow:Ut,droppable:Boolean,unselectCancel:String,slotLabelFormat:Ut,slotLaneClassNames:Ut,slotLaneContent:Ut,slotLaneDidMount:Ut,slotLaneWillUnmount:Ut,slotLabelClassNames:Ut,slotLabelContent:Ut,slotLabelDidMount:Ut,slotLabelWillUnmount:Ut,dayMaxEvents:Ut,dayMaxEventRows:Ut,dayMinWidth:Number,slotLabelInterval:Ke,allDayText:String,allDayClassNames:Ut,allDayContent:Ut,allDayDidMount:Ut,allDayWillUnmount:Ut,slotMinWidth:Number,navLinks:Boolean,eventTimeFormat:kt,rerenderDelay:Number,moreLinkText:Ut,selectMinDistance:Number,selectable:Boolean,selectLongPressDelay:Number,eventLongPressDelay:Number,selectMirror:Boolean,eventMinHeight:Number,slotEventOverlap:Boolean,plugins:Ut,firstDay:Number,dayCount:Number,dateAlignment:String,dateIncrement:Ke,hiddenDays:Ut,monthMode:Boolean,fixedWeekCount:Boolean,validRange:Ut,visibleRange:Ut,titleFormat:Ut,noEventsText:String},It={eventDisplay:"auto",defaultRangeSeparator:" - ",titleRangeSeparator:" – ",defaultTimedEventDuration:"01:00:00",defaultAllDayEventDuration:{day:1},forceEventDuration:!1,nextDayThreshold:"00:00:00",dayHeaders:!0,initialView:"",aspectRatio:1.35,headerToolbar:{start:"title",center:"",end:"today prev,next"},weekends:!0,weekNumbers:!1,weekNumberCalculation:"local",editable:!1,nowIndicator:!1,scrollTime:"06:00:00",slotMinTime:"00:00:00",slotMaxTime:"24:00:00",showNonCurrentDates:!0,lazyFetching:!0,startParam:"start",endParam:"end",timeZoneParam:"timeZone",timeZone:"local",locales:[],locale:"",themeSystem:"standard",dragRevertDuration:500,dragScroll:!0,allDayMaintainDuration:!1,unselectAuto:!0,dropAccept:"*",eventOrder:"start,-duration,allDay,title",dayPopoverFormat:{month:"long",day:"numeric",year:"numeric"},handleWindowResize:!0,windowResizeDelay:100,longPressDelay:1e3,eventDragMinDistance:5,expandRows:!1,navLinks:!1,selectable:!1},_t={datesSet:Ut,eventsSet:Ut,eventAdd:Ut,eventChange:Ut,eventRemove:Ut,windowResize:Ut,eventClick:Ut,eventMouseEnter:Ut,eventMouseLeave:Ut,select:Ut,unselect:Ut,loading:Ut,_unmount:Ut,_beforeprint:Ut,_afterprint:Ut,_noEventDrop:Ut,_noEventResize:Ut,_resize:Ut,_scrollRequest:Ut},Nt={buttonText:Ut,views:Ut,plugins:Ut,initialEvents:Ut,events:Ut,eventSources:Ut},Ht={headerToolbar:Ot,footerToolbar:Ot,buttonText:Ot,buttonIcons:Ot};function Ot(e,t){return"object"==typeof e&&"object"==typeof t&&e&&t?ze(e,t):e===t}var Wt={type:String,component:Ut,buttonText:String,buttonTextKey:String,dateProfileGeneratorClass:Ut,usesMinMaxTime:Boolean,classNames:Ut,content:Ut,didMount:Ut,willUnmount:Ut};function At(e){return We(e,Ht)}function Lt(e,t){var n={},r={};for(var o in t)o in e&&(n[o]=t[o](e[o]));for(var o in e)o in t||(r[o]=e[o]);return{refined:n,extra:r}}function Ut(e){return e}function Bt(e,t,n,r){for(var o={defs:{},instances:{}},i=rn(n),a=0,s=e;a<s.length;a++){var l=tn(s[a],t,n,r,i);l&&zt(l,o)}return o}function zt(e,t){return void 0===t&&(t={defs:{},instances:{}}),t.defs[e.def.defId]=e.def,e.instance&&(t.instances[e.instance.instanceId]=e.instance),t}function Vt(e,t){var n=e.instances[t];if(n){var r=e.defs[n.defId],o=Gt(e,(function(e){return t=r,n=e,Boolean(t.groupId&&t.groupId===n.groupId);var t,n}));return o.defs[r.defId]=r,o.instances[n.instanceId]=n,o}return{defs:{},instances:{}}}function Ft(){return{defs:{},instances:{}}}function jt(e,t){return{defs:r(r({},e.defs),t.defs),instances:r(r({},e.instances),t.instances)}}function Gt(e,t){var n=Ae(e.defs,t),r=Ae(e.instances,(function(e){return n[e.defId]}));return{defs:n,instances:r}}function qt(e){return Array.isArray(e)?e:"string"==typeof e?e.split(/\s+/):[]}var Yt={display:String,editable:Boolean,startEditable:Boolean,durationEditable:Boolean,constraint:Ut,overlap:Ut,allow:Ut,className:qt,classNames:qt,color:String,backgroundColor:String,borderColor:String,textColor:String},Zt={display:null,startEditable:null,durationEditable:null,constraints:[],overlap:null,allows:[],backgroundColor:"",borderColor:"",textColor:"",classNames:[]};function Xt(e,t){var n=function(e,t){return Array.isArray(e)?Bt(e,null,t,!0):"object"==typeof e&&e?Bt([e],null,t,!0):null!=e?String(e):null}(e.constraint,t);return{display:e.display||null,startEditable:null!=e.startEditable?e.startEditable:e.editable,durationEditable:null!=e.durationEditable?e.durationEditable:e.editable,constraints:null!=n?[n]:[],overlap:null!=e.overlap?e.overlap:null,allows:null!=e.allow?[e.allow]:[],backgroundColor:e.backgroundColor||e.color||"",borderColor:e.borderColor||e.color||"",textColor:e.textColor||"",classNames:(e.className||[]).concat(e.classNames||[])}}function Kt(e){return e.reduce(Jt,Zt)}function Jt(e,t){return{display:null!=t.display?t.display:e.display,startEditable:null!=t.startEditable?t.startEditable:e.startEditable,durationEditable:null!=t.durationEditable?t.durationEditable:e.durationEditable,constraints:e.constraints.concat(t.constraints),overlap:"boolean"==typeof t.overlap?t.overlap:e.overlap,allows:e.allows.concat(t.allows),backgroundColor:t.backgroundColor||e.backgroundColor,borderColor:t.borderColor||e.borderColor,textColor:t.textColor||e.textColor,classNames:e.classNames.concat(t.classNames)}}var $t={id:String,groupId:String,title:String,url:String},Qt={start:Ut,end:Ut,date:Ut,allDay:Boolean},en=r(r(r({},$t),Qt),{extendedProps:Ut});function tn(e,t,n,r,o){void 0===o&&(o=rn(n));var i=nn(e,n,o),a=i.refined,s=i.extra,l=function(e,t){var n=null;e&&(n=e.defaultAllDay);null==n&&(n=t.options.defaultAllDay);return n}(t,n),u=function(e,t,n,r){for(var o=0;o<r.length;o+=1){var i=r[o].parse(e,n);if(i){var a=e.allDay;return null==a&&null==(a=t)&&null==(a=i.allDayGuess)&&(a=!1),{allDay:a,duration:i.duration,typeData:i.typeData,typeId:o}}}return null}(a,l,n.dateEnv,n.pluginHooks.recurringTypes);if(u)return(c=on(a,s,t?t.sourceId:"",u.allDay,Boolean(u.duration),n)).recurringDef={typeId:u.typeId,typeData:u.typeData,duration:u.duration},{def:c,instance:null};var c,d=function(e,t,n,r){var o,i,a=e.allDay,s=null,l=!1,u=null,c=null!=e.start?e.start:e.date;if(o=n.dateEnv.createMarkerMeta(c))s=o.marker;else if(!r)return null;null!=e.end&&(i=n.dateEnv.createMarkerMeta(e.end));null==a&&(a=null!=t?t:(!o||o.isTimeUnspecified)&&(!i||i.isTimeUnspecified));a&&s&&(s=we(s));i&&(u=i.marker,a&&(u=we(u)),s&&u<=s&&(u=null));u?l=!0:r||(l=n.options.forceEventDuration||!1,u=n.dateEnv.add(s,a?n.options.defaultAllDayEventDuration:n.options.defaultTimedEventDuration));return{allDay:a,hasEnd:l,range:{start:s,end:u},forcedStartTzo:o?o.forcedTzo:null,forcedEndTzo:i?i.forcedTzo:null}}(a,l,n,r);return d?{def:c=on(a,s,t?t.sourceId:"",d.allDay,d.hasEnd,n),instance:He(c.defId,d.range,d.forcedStartTzo,d.forcedEndTzo)}:null}function nn(e,t,n){return void 0===n&&(n=rn(t)),Lt(e,n)}function rn(e){return r(r(r({},Yt),en),e.pluginHooks.eventRefiners)}function on(e,t,n,o,i,a){for(var s={title:e.title||"",groupId:e.groupId||"",publicId:e.id||"",url:e.url||"",recurringDef:null,defId:te(),sourceId:n,allDay:o,hasEnd:i,ui:Xt(e,a),extendedProps:r(r({},e.extendedProps||{}),t)},l=0,u=a.pluginHooks.eventDefMemberAdders;l<u.length;l++){var c=u[l];r(s,c(e))}return Object.freeze(s.ui.classNames),Object.freeze(s.extendedProps),s}function an(e){var t=Math.floor(Ce(e.start,e.end))||1,n=we(e.start);return{start:n,end:ye(n,t)}}function sn(e,t){void 0===t&&(t=Ke(0));var n=null,r=null;if(e.end){r=we(e.end);var o=e.end.valueOf()-r.valueOf();o&&o>=ot(t)&&(r=ye(r,1))}return e.start&&(n=we(e.start),r&&r<=n&&(r=ye(n,1))),{start:n,end:r}}function ln(e){var t=sn(e);return Ce(t.start,t.end)>1}function un(e,t,n,r){return"year"===r?Ke(n.diffWholeYears(e,t),"year"):"month"===r?Ke(n.diffWholeMonths(e,t),"month"):be(e,t)}function cn(e,t){var n,r,o=[],i=t.start;for(e.sort(dn),n=0;n<e.length;n+=1)(r=e[n]).start>i&&o.push({start:i,end:r.start}),r.end>i&&(i=r.end);return i<t.end&&o.push({start:i,end:t.end}),o}function dn(e,t){return e.start.valueOf()-t.start.valueOf()}function pn(e,t){var n=e.start,r=e.end,o=null;return null!==t.start&&(n=null===n?t.start:new Date(Math.max(n.valueOf(),t.start.valueOf()))),null!=t.end&&(r=null===r?t.end:new Date(Math.min(r.valueOf(),t.end.valueOf()))),(null===n||null===r||n<r)&&(o={start:n,end:r}),o}function fn(e,t){return(null===e.start?null:e.start.valueOf())===(null===t.start?null:t.start.valueOf())&&(null===e.end?null:e.end.valueOf())===(null===t.end?null:t.end.valueOf())}function hn(e,t){return(null===e.end||null===t.start||e.end>t.start)&&(null===e.start||null===t.end||e.start<t.end)}function gn(e,t){return(null===e.start||null!==t.start&&t.start>=e.start)&&(null===e.end||null!==t.end&&t.end<=e.end)}function vn(e,t){return(null===e.start||t>=e.start)&&(null===e.end||t<e.end)}function mn(e,t,n,r){var o={},i={},a={},s=[],l=[],u=Cn(e.defs,t);for(var c in e.defs){"inverse-background"===(f=u[(E=e.defs[c]).defId]).display&&(E.groupId?(o[E.groupId]=[],a[E.groupId]||(a[E.groupId]=E)):i[c]=[])}for(var d in e.instances){var p=e.instances[d],f=u[(E=e.defs[p.defId]).defId],h=p.range,g=!E.allDay&&r?sn(h,r):h,v=pn(g,n);v&&("inverse-background"===f.display?E.groupId?o[E.groupId].push(v):i[p.defId].push(v):"none"!==f.display&&("background"===f.display?s:l).push({def:E,ui:f,instance:p,range:v,isStart:g.start&&g.start.valueOf()===v.start.valueOf(),isEnd:g.end&&g.end.valueOf()===v.end.valueOf()}))}for(var m in o)for(var y=0,S=cn(o[m],n);y<S.length;y++){var E,C=S[y];f=u[(E=a[m]).defId];s.push({def:E,ui:f,instance:null,range:C,isStart:!1,isEnd:!1})}for(var c in i)for(var b=0,R=cn(i[c],n);b<R.length;b++){C=R[b];s.push({def:e.defs[c],ui:u[c],instance:null,range:C,isStart:!1,isEnd:!1})}return{bg:s,fg:l}}function yn(e){return"background"===e.ui.display||"inverse-background"===e.ui.display}function Sn(e,t){e.fcSeg=t}function En(e){return e.fcSeg||e.parentNode.fcSeg||null}function Cn(e,t){return Le(e,(function(e){return bn(e,t)}))}function bn(e,t){var n=[];return t[""]&&n.push(t[""]),t[e.defId]&&n.push(t[e.defId]),n.push(e.ui),Kt(n)}function Rn(e,t){var n=e.map(Dn);return n.sort((function(e,n){return ue(e,n,t)})),n.map((function(e){return e._seg}))}function Dn(e){var t=e.eventRange,n=t.def,o=t.instance?t.instance.range:t.range,i=o.start?o.start.valueOf():0,a=o.end?o.end.valueOf():0;return r(r(r({},n.extendedProps),n),{id:n.publicId,start:i,end:a,duration:a-i,allDay:Number(n.allDay),_seg:e})}function wn(e,t){for(var n=t.pluginHooks.isDraggableTransformers,r=e.eventRange,o=r.def,i=r.ui,a=i.startEditable,s=0,l=n;s<l.length;s++){a=(0,l[s])(a,o,i,t)}return a}function Tn(e,t){return e.isStart&&e.eventRange.ui.durationEditable&&t.options.eventResizableFromStart}function xn(e,t){return e.isEnd&&e.eventRange.ui.durationEditable}function Mn(e,t,n,r,o,i,a){var s=n.dateEnv,l=n.options,u=l.displayEventTime,c=l.displayEventEnd,d=e.eventRange.def,p=e.eventRange.instance;if(null==u&&(u=!1!==r),null==c&&(c=!1!==o),u&&!d.allDay&&(e.isStart||e.isEnd)){var f=i||(e.isStart?p.range.start:e.start||e.eventRange.range.start),h=a||(e.isEnd?p.range.end:e.end||e.eventRange.range.end);return c&&d.hasEnd?s.formatRange(f,h,t,{forcedStartTzo:i?null:p.forcedStartTzo,forcedEndTzo:a?null:p.forcedEndTzo}):s.format(f,t,{forcedTzo:i?null:p.forcedStartTzo})}return""}function kn(e,t,n){var r=e.eventRange.range;return{isPast:r.end<(n||t.start),isFuture:r.start>=(n||t.end),isToday:t&&vn(t,r.start)}}function Pn(e){var t=["fc-event"];return e.isMirror&&t.push("fc-event-mirror"),e.isDraggable&&t.push("fc-event-draggable"),(e.isStartResizable||e.isEndResizable)&&t.push("fc-event-resizable"),e.isDragging&&t.push("fc-event-dragging"),e.isResizing&&t.push("fc-event-resizing"),e.isSelected&&t.push("fc-event-selected"),e.isStart&&t.push("fc-event-start"),e.isEnd&&t.push("fc-event-end"),e.isPast&&t.push("fc-event-past"),e.isToday&&t.push("fc-event-today"),e.isFuture&&t.push("fc-event-future"),t}function In(e){return e.instance?e.instance.instanceId:e.def.defId+":"+e.range.start.toISOString()}var _n={start:Ut,end:Ut,allDay:Boolean};function Nn(e,t,n){var o=function(e,t){var n=Lt(e,_n),o=n.refined,i=n.extra,a=o.start?t.createMarkerMeta(o.start):null,s=o.end?t.createMarkerMeta(o.end):null,l=o.allDay;null==l&&(l=a&&a.isTimeUnspecified&&(!s||s.isTimeUnspecified));return r({range:{start:a?a.marker:null,end:s?s.marker:null},allDay:l},i)}(e,t),i=o.range;if(!i.start)return null;if(!i.end){if(null==n)return null;i.end=t.add(i.start,n)}return o}function Hn(e,t){return fn(e.range,t.range)&&e.allDay===t.allDay&&function(e,t){for(var n in t)if("range"!==n&&"allDay"!==n&&e[n]!==t[n])return!1;for(var n in e)if(!(n in t))return!1;return!0}(e,t)}function On(e,t,n){return r(r({},Wn(e,t,n)),{timeZone:t.timeZone})}function Wn(e,t,n){return{start:t.toDate(e.start),end:t.toDate(e.end),startStr:t.formatIso(e.start,{omitTime:n}),endStr:t.formatIso(e.end,{omitTime:n})}}function An(e,t,n){var r=nn({editable:!1},n),o=on(r.refined,r.extra,"",e.allDay,!0,n);return{def:o,ui:bn(o,t),instance:He(o.defId,e.range),range:e.range,isStart:!0,isEnd:!0}}function Ln(e,t,n){n.emitter.trigger("select",r(r({},Un(e,n)),{jsEvent:t?t.origEvent:null,view:n.viewApi||n.calendarApi.view}))}function Un(e,t){for(var n,o,i={},a=0,s=t.pluginHooks.dateSpanTransforms;a<s.length;a++){var l=s[a];r(i,l(e,t))}return r(i,(n=e,o=t.dateEnv,r(r({},Wn(n.range,o,n.allDay)),{allDay:n.allDay}))),i}function Bn(e,t,n){var r=n.dateEnv,o=n.options,i=t;return e?(i=we(i),i=r.add(i,o.defaultAllDayEventDuration)):i=r.add(i,o.defaultTimedEventDuration),i}function zn(e,t,n,r){var o=Cn(e.defs,t),i={defs:{},instances:{}};for(var a in e.defs){var s=e.defs[a];i.defs[a]=Vn(s,o[a],n,r)}for(var l in e.instances){var u=e.instances[l];s=i.defs[u.defId];i.instances[l]=Fn(u,s,o[u.defId],n,r)}return i}function Vn(e,t,n,o){var i=n.standardProps||{};null==i.hasEnd&&t.durationEditable&&(n.startDelta||n.endDelta)&&(i.hasEnd=!0);var a=r(r(r({},e),i),{ui:r(r({},e.ui),i.ui)});n.extendedProps&&(a.extendedProps=r(r({},a.extendedProps),n.extendedProps));for(var s=0,l=o.pluginHooks.eventDefMutationAppliers;s<l.length;s++){(0,l[s])(a,n,o)}return!a.hasEnd&&o.options.forceEventDuration&&(a.hasEnd=!0),a}function Fn(e,t,n,o,i){var a=i.dateEnv,s=o.standardProps&&!0===o.standardProps.allDay,l=o.standardProps&&!1===o.standardProps.hasEnd,u=r({},e);return s&&(u.range=an(u.range)),o.datesDelta&&n.startEditable&&(u.range={start:a.add(u.range.start,o.datesDelta),end:a.add(u.range.end,o.datesDelta)}),o.startDelta&&n.durationEditable&&(u.range={start:a.add(u.range.start,o.startDelta),end:u.range.end}),o.endDelta&&n.durationEditable&&(u.range={start:u.range.start,end:a.add(u.range.end,o.endDelta)}),l&&(u.range={start:u.range.start,end:Bn(t.allDay,u.range.start,i)}),t.allDay&&(u.range={start:we(u.range.start),end:we(u.range.end)}),u.range.end<u.range.start&&(u.range.end=Bn(t.allDay,u.range.start,i)),u}var jn=function(){function e(e,t,n){this.type=e,this.getCurrentData=t,this.dateEnv=n}return Object.defineProperty(e.prototype,"calendar",{get:function(){return this.getCurrentData().calendarApi},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"title",{get:function(){return this.getCurrentData().viewTitle},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"activeStart",{get:function(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"activeEnd",{get:function(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentStart",{get:function(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentEnd",{get:function(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end)},enumerable:!1,configurable:!0}),e.prototype.getOption=function(e){return this.getCurrentData().options[e]},e}(),Gn={id:String,defaultAllDay:Boolean,url:String,format:String,events:Ut,eventDataTransform:Ut,success:Ut,failure:Ut};function qn(e,t,n){var r;if(void 0===n&&(n=Yn(t)),"string"==typeof e?r={url:e}:"function"==typeof e||Array.isArray(e)?r={events:e}:"object"==typeof e&&e&&(r=e),r){var o=Lt(r,n),i=o.refined,a=o.extra,s=function(e,t){for(var n=t.pluginHooks.eventSourceDefs,r=n.length-1;r>=0;r-=1){var o=n[r].parseMeta(e);if(o)return{sourceDefId:r,meta:o}}return null}(i,t);if(s)return{_raw:e,isFetching:!1,latestFetchId:"",fetchRange:null,defaultAllDay:i.defaultAllDay,eventDataTransform:i.eventDataTransform,success:i.success,failure:i.failure,publicId:i.id||"",sourceId:te(),sourceDefId:s.sourceDefId,meta:s.meta,ui:Xt(i,t),extendedProps:a}}return null}function Yn(e){return r(r(r({},Yt),Gn),e.pluginHooks.eventSourceRefiners)}function Zn(e,t){return"function"==typeof e&&(e=e()),null==e?t.createNowMarker():t.createMarker(e)}var Xn=function(){function e(){}return e.prototype.getCurrentData=function(){return this.currentDataManager.getCurrentData()},e.prototype.dispatch=function(e){return this.currentDataManager.dispatch(e)},Object.defineProperty(e.prototype,"view",{get:function(){return this.getCurrentData().viewApi},enumerable:!1,configurable:!0}),e.prototype.batchRendering=function(e){e()},e.prototype.updateSize=function(){this.trigger("_resize",!0)},e.prototype.setOption=function(e,t){this.dispatch({type:"SET_OPTION",optionName:e,rawOptionValue:t})},e.prototype.getOption=function(e){return this.currentDataManager.currentCalendarOptionsInput[e]},e.prototype.getAvailableLocaleCodes=function(){return Object.keys(this.getCurrentData().availableRawLocales)},e.prototype.on=function(e,t){var n=this.currentDataManager;n.currentCalendarOptionsRefiners[e]?n.emitter.on(e,t):console.warn("Unknown listener name '"+e+"'")},e.prototype.off=function(e,t){this.currentDataManager.emitter.off(e,t)},e.prototype.trigger=function(e){for(var t,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];(t=this.currentDataManager.emitter).trigger.apply(t,o([e],n))},e.prototype.changeView=function(e,t){var n=this;this.batchRendering((function(){if(n.unselect(),t)if(t.start&&t.end)n.dispatch({type:"CHANGE_VIEW_TYPE",viewType:e}),n.dispatch({type:"SET_OPTION",optionName:"visibleRange",rawOptionValue:t});else{var r=n.getCurrentData().dateEnv;n.dispatch({type:"CHANGE_VIEW_TYPE",viewType:e,dateMarker:r.createMarker(t)})}else n.dispatch({type:"CHANGE_VIEW_TYPE",viewType:e})}))},e.prototype.zoomTo=function(e,t){var n;t=t||"day",n=this.getCurrentData().viewSpecs[t]||this.getUnitViewSpec(t),this.unselect(),n?this.dispatch({type:"CHANGE_VIEW_TYPE",viewType:n.type,dateMarker:e}):this.dispatch({type:"CHANGE_DATE",dateMarker:e})},e.prototype.getUnitViewSpec=function(e){var t,n,r=this.getCurrentData(),o=r.viewSpecs,i=r.toolbarConfig,a=[].concat(i.viewsWithButtons);for(var s in o)a.push(s);for(t=0;t<a.length;t+=1)if((n=o[a[t]])&&n.singleUnit===e)return n;return null},e.prototype.prev=function(){this.unselect(),this.dispatch({type:"PREV"})},e.prototype.next=function(){this.unselect(),this.dispatch({type:"NEXT"})},e.prototype.prevYear=function(){var e=this.getCurrentData();this.unselect(),this.dispatch({type:"CHANGE_DATE",dateMarker:e.dateEnv.addYears(e.currentDate,-1)})},e.prototype.nextYear=function(){var e=this.getCurrentData();this.unselect(),this.dispatch({type:"CHANGE_DATE",dateMarker:e.dateEnv.addYears(e.currentDate,1)})},e.prototype.today=function(){var e=this.getCurrentData();this.unselect(),this.dispatch({type:"CHANGE_DATE",dateMarker:Zn(e.calendarOptions.now,e.dateEnv)})},e.prototype.gotoDate=function(e){var t=this.getCurrentData();this.unselect(),this.dispatch({type:"CHANGE_DATE",dateMarker:t.dateEnv.createMarker(e)})},e.prototype.incrementDate=function(e){var t=this.getCurrentData(),n=Ke(e);n&&(this.unselect(),this.dispatch({type:"CHANGE_DATE",dateMarker:t.dateEnv.add(t.currentDate,n)}))},e.prototype.getDate=function(){var e=this.getCurrentData();return e.dateEnv.toDate(e.currentDate)},e.prototype.formatDate=function(e,t){var n=this.getCurrentData().dateEnv;return n.format(n.createMarker(e),kt(t))},e.prototype.formatRange=function(e,t,n){var r=this.getCurrentData().dateEnv;return r.formatRange(r.createMarker(e),r.createMarker(t),kt(n),n)},e.prototype.formatIso=function(e,t){var n=this.getCurrentData().dateEnv;return n.formatIso(n.createMarker(e),{omitTime:t})},e.prototype.select=function(e,t){var n;n=null==t?null!=e.start?e:{start:e,end:null}:{start:e,end:t};var r=this.getCurrentData(),o=Nn(n,r.dateEnv,Ke({days:1}));o&&(this.dispatch({type:"SELECT_DATES",selection:o}),Ln(o,null,r))},e.prototype.unselect=function(e){var t=this.getCurrentData();t.dateSelection&&(this.dispatch({type:"UNSELECT_DATES"}),function(e,t){t.emitter.trigger("unselect",{jsEvent:e?e.origEvent:null,view:t.viewApi||t.calendarApi.view})}(e,t))},e.prototype.addEvent=function(e,t){if(e instanceof Kn){var n=e._def,r=e._instance;return this.getCurrentData().eventStore.defs[n.defId]||(this.dispatch({type:"ADD_EVENTS",eventStore:zt({def:n,instance:r})}),this.triggerEventAdd(e)),e}var o,i=this.getCurrentData();if(t instanceof B)o=t.internalEventSource;else if("boolean"==typeof t)t&&(o=Be(i.eventSources)[0]);else if(null!=t){var a=this.getEventSourceById(t);if(!a)return console.warn('Could not find an event source with ID "'+t+'"'),null;o=a.internalEventSource}var s=tn(e,o,i,!1);if(s){var l=new Kn(i,s.def,s.def.recurringDef?null:s.instance);return this.dispatch({type:"ADD_EVENTS",eventStore:zt(s)}),this.triggerEventAdd(l),l}return null},e.prototype.triggerEventAdd=function(e){var t=this;this.getCurrentData().emitter.trigger("eventAdd",{event:e,relatedEvents:[],revert:function(){t.dispatch({type:"REMOVE_EVENTS",eventStore:Jn(e)})}})},e.prototype.getEventById=function(e){var t=this.getCurrentData(),n=t.eventStore,r=n.defs,o=n.instances;for(var i in e=String(e),r){var a=r[i];if(a.publicId===e){if(a.recurringDef)return new Kn(t,a,null);for(var s in o){var l=o[s];if(l.defId===a.defId)return new Kn(t,a,l)}}}return null},e.prototype.getEvents=function(){var e=this.getCurrentData();return $n(e.eventStore,e)},e.prototype.removeAllEvents=function(){this.dispatch({type:"REMOVE_ALL_EVENTS"})},e.prototype.getEventSources=function(){var e=this.getCurrentData(),t=e.eventSources,n=[];for(var r in t)n.push(new B(e,t[r]));return n},e.prototype.getEventSourceById=function(e){var t=this.getCurrentData(),n=t.eventSources;for(var r in e=String(e),n)if(n[r].publicId===e)return new B(t,n[r]);return null},e.prototype.addEventSource=function(e){var t=this.getCurrentData();if(e instanceof B)return t.eventSources[e.internalEventSource.sourceId]||this.dispatch({type:"ADD_EVENT_SOURCES",sources:[e.internalEventSource]}),e;var n=qn(e,t);return n?(this.dispatch({type:"ADD_EVENT_SOURCES",sources:[n]}),new B(t,n)):null},e.prototype.removeAllEventSources=function(){this.dispatch({type:"REMOVE_ALL_EVENT_SOURCES"})},e.prototype.refetchEvents=function(){this.dispatch({type:"FETCH_EVENT_SOURCES"})},e.prototype.scrollToTime=function(e){var t=Ke(e);t&&this.trigger("_scrollRequest",{time:t})},e}(),Kn=function(){function e(e,t,n){this._context=e,this._def=t,this._instance=n||null}return e.prototype.setProp=function(e,t){var n,r;if(e in Qt)console.warn("Could not set date-related prop 'name'. Use one of the date-related methods instead.");else if(e in $t)t=$t[e](t),this.mutate({standardProps:(n={},n[e]=t,n)});else if(e in Yt){var o=Yt[e](t);"color"===e?o={backgroundColor:t,borderColor:t}:"editable"===e?o={startEditable:t,durationEditable:t}:((r={})[e]=t,o=r),this.mutate({standardProps:{ui:o}})}else console.warn("Could not set prop '"+e+"'. Use setExtendedProp instead.")},e.prototype.setExtendedProp=function(e,t){var n;this.mutate({extendedProps:(n={},n[e]=t,n)})},e.prototype.setStart=function(e,t){void 0===t&&(t={});var n=this._context.dateEnv,r=n.createMarker(e);if(r&&this._instance){var o=un(this._instance.range.start,r,n,t.granularity);t.maintainDuration?this.mutate({datesDelta:o}):this.mutate({startDelta:o})}},e.prototype.setEnd=function(e,t){void 0===t&&(t={});var n,r=this._context.dateEnv;if((null==e||(n=r.createMarker(e)))&&this._instance)if(n){var o=un(this._instance.range.end,n,r,t.granularity);this.mutate({endDelta:o})}else this.mutate({standardProps:{hasEnd:!1}})},e.prototype.setDates=function(e,t,n){void 0===n&&(n={});var r,o,i,a=this._context.dateEnv,s={allDay:n.allDay},l=a.createMarker(e);if(l&&((null==t||(r=a.createMarker(t)))&&this._instance)){var u=this._instance.range;!0===n.allDay&&(u=an(u));var c=un(u.start,l,a,n.granularity);if(r){var d=un(u.end,r,a,n.granularity);i=d,(o=c).years===i.years&&o.months===i.months&&o.days===i.days&&o.milliseconds===i.milliseconds?this.mutate({datesDelta:c,standardProps:s}):this.mutate({startDelta:c,endDelta:d,standardProps:s})}else s.hasEnd=!1,this.mutate({datesDelta:c,standardProps:s})}},e.prototype.moveStart=function(e){var t=Ke(e);t&&this.mutate({startDelta:t})},e.prototype.moveEnd=function(e){var t=Ke(e);t&&this.mutate({endDelta:t})},e.prototype.moveDates=function(e){var t=Ke(e);t&&this.mutate({datesDelta:t})},e.prototype.setAllDay=function(e,t){void 0===t&&(t={});var n={allDay:e},r=t.maintainDuration;null==r&&(r=this._context.options.allDayMaintainDuration),this._def.allDay!==e&&(n.hasEnd=r),this.mutate({standardProps:n})},e.prototype.formatRange=function(e){var t=this._context.dateEnv,n=this._instance,r=kt(e);return this._def.hasEnd?t.formatRange(n.range.start,n.range.end,r,{forcedStartTzo:n.forcedStartTzo,forcedEndTzo:n.forcedEndTzo}):t.format(n.range.start,r,{forcedTzo:n.forcedStartTzo})},e.prototype.mutate=function(t){var n=this._instance;if(n){var r=this._def,o=this._context,i=o.getCurrentData().eventStore,a=Vt(i,n.instanceId);a=zn(a,{"":{display:"",startEditable:!0,durationEditable:!0,constraints:[],overlap:null,allows:[],backgroundColor:"",borderColor:"",textColor:"",classNames:[]}},t,o);var s=new e(o,r,n);this._def=a.defs[r.defId],this._instance=a.instances[n.instanceId],o.dispatch({type:"MERGE_EVENTS",eventStore:a}),o.emitter.trigger("eventChange",{oldEvent:s,event:this,relatedEvents:$n(a,o,n),revert:function(){o.dispatch({type:"RESET_EVENTS",eventStore:i})}})}},e.prototype.remove=function(){var e=this._context,t=Jn(this);e.dispatch({type:"REMOVE_EVENTS",eventStore:t}),e.emitter.trigger("eventRemove",{event:this,relatedEvents:[],revert:function(){e.dispatch({type:"MERGE_EVENTS",eventStore:t})}})},Object.defineProperty(e.prototype,"source",{get:function(){var e=this._def.sourceId;return e?new B(this._context,this._context.getCurrentData().eventSources[e]):null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"start",{get:function(){return this._instance?this._context.dateEnv.toDate(this._instance.range.start):null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"end",{get:function(){return this._instance&&this._def.hasEnd?this._context.dateEnv.toDate(this._instance.range.end):null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"startStr",{get:function(){var e=this._instance;return e?this._context.dateEnv.formatIso(e.range.start,{omitTime:this._def.allDay,forcedTzo:e.forcedStartTzo}):""},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"endStr",{get:function(){var e=this._instance;return e&&this._def.hasEnd?this._context.dateEnv.formatIso(e.range.end,{omitTime:this._def.allDay,forcedTzo:e.forcedEndTzo}):""},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"id",{get:function(){return this._def.publicId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"groupId",{get:function(){return this._def.groupId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"allDay",{get:function(){return this._def.allDay},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"title",{get:function(){return this._def.title},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"url",{get:function(){return this._def.url},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"display",{get:function(){return this._def.ui.display||"auto"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"startEditable",{get:function(){return this._def.ui.startEditable},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"durationEditable",{get:function(){return this._def.ui.durationEditable},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"constraint",{get:function(){return this._def.ui.constraints[0]||null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"overlap",{get:function(){return this._def.ui.overlap},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"allow",{get:function(){return this._def.ui.allows[0]||null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"backgroundColor",{get:function(){return this._def.ui.backgroundColor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"borderColor",{get:function(){return this._def.ui.borderColor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"textColor",{get:function(){return this._def.ui.textColor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"classNames",{get:function(){return this._def.ui.classNames},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"extendedProps",{get:function(){return this._def.extendedProps},enumerable:!1,configurable:!0}),e.prototype.toPlainObject=function(e){void 0===e&&(e={});var t=this._def,n=t.ui,o=this.startStr,i=this.endStr,a={};return t.title&&(a.title=t.title),o&&(a.start=o),i&&(a.end=i),t.publicId&&(a.id=t.publicId),t.groupId&&(a.groupId=t.groupId),t.url&&(a.url=t.url),n.display&&"auto"!==n.display&&(a.display=n.display),e.collapseColor&&n.backgroundColor&&n.backgroundColor===n.borderColor?a.color=n.backgroundColor:(n.backgroundColor&&(a.backgroundColor=n.backgroundColor),n.borderColor&&(a.borderColor=n.borderColor)),n.textColor&&(a.textColor=n.textColor),n.classNames.length&&(a.classNames=n.classNames),Object.keys(t.extendedProps).length&&(e.collapseExtendedProps?r(a,t.extendedProps):a.extendedProps=t.extendedProps),a},e.prototype.toJSON=function(){return this.toPlainObject()},e}();function Jn(e){var t,n,r=e._def,o=e._instance;return{defs:(t={},t[r.defId]=r,t),instances:o?(n={},n[o.instanceId]=o,n):{}}}function $n(e,t,n){var r=e.defs,o=e.instances,i=[],a=n?n.instanceId:"";for(var s in o){var l=o[s],u=r[l.defId];l.instanceId!==a&&i.push(new Kn(t,u,l))}return i}var Qn={};var er,tr=function(){function e(){}return e.prototype.getMarkerYear=function(e){return e.getUTCFullYear()},e.prototype.getMarkerMonth=function(e){return e.getUTCMonth()},e.prototype.getMarkerDay=function(e){return e.getUTCDate()},e.prototype.arrayToMarker=function(e){return Ie(e)},e.prototype.markerToArray=function(e){return Pe(e)},e}();er=tr,Qn["gregory"]=er;var nr=/^\s*(\d{4})(-?(\d{2})(-?(\d{2})([T ](\d{2}):?(\d{2})(:?(\d{2})(\.(\d+))?)?(Z|(([-+])(\d{2})(:?(\d{2}))?))?)?)?)?$/;function rr(e){var t=nr.exec(e);if(t){var n=new Date(Date.UTC(Number(t[1]),t[3]?Number(t[3])-1:0,Number(t[5]||1),Number(t[7]||0),Number(t[8]||0),Number(t[10]||0),t[12]?1e3*Number("0."+t[12]):0));if(_e(n)){var r=null;return t[13]&&(r=("-"===t[15]?-1:1)*(60*Number(t[16]||0)+Number(t[18]||0))),{marker:n,isTimeUnspecified:!t[6],timeZoneOffset:r}}}return null}var or=function(){function e(e){var t=this.timeZone=e.timeZone,n="local"!==t&&"UTC"!==t;e.namedTimeZoneImpl&&n&&(this.namedTimeZoneImpl=new e.namedTimeZoneImpl(t)),this.canComputeOffset=Boolean(!n||this.namedTimeZoneImpl),this.calendarSystem=function(e){return new Qn[e]}(e.calendarSystem),this.locale=e.locale,this.weekDow=e.locale.week.dow,this.weekDoy=e.locale.week.doy,"ISO"===e.weekNumberCalculation&&(this.weekDow=1,this.weekDoy=4),"number"==typeof e.firstDay&&(this.weekDow=e.firstDay),"function"==typeof e.weekNumberCalculation&&(this.weekNumberFunc=e.weekNumberCalculation),this.weekText=null!=e.weekText?e.weekText:e.locale.options.weekText,this.cmdFormatter=e.cmdFormatter,this.defaultSeparator=e.defaultSeparator}return e.prototype.createMarker=function(e){var t=this.createMarkerMeta(e);return null===t?null:t.marker},e.prototype.createNowMarker=function(){return this.canComputeOffset?this.timestampToMarker((new Date).valueOf()):Ie(Me(new Date))},e.prototype.createMarkerMeta=function(e){if("string"==typeof e)return this.parse(e);var t=null;return"number"==typeof e?t=this.timestampToMarker(e):e instanceof Date?(e=e.valueOf(),isNaN(e)||(t=this.timestampToMarker(e))):Array.isArray(e)&&(t=Ie(e)),null!==t&&_e(t)?{marker:t,isTimeUnspecified:!1,forcedTzo:null}:null},e.prototype.parse=function(e){var t=rr(e);if(null===t)return null;var n=t.marker,r=null;return null!==t.timeZoneOffset&&(this.canComputeOffset?n=this.timestampToMarker(n.valueOf()-60*t.timeZoneOffset*1e3):r=t.timeZoneOffset),{marker:n,isTimeUnspecified:t.isTimeUnspecified,forcedTzo:r}},e.prototype.getYear=function(e){return this.calendarSystem.getMarkerYear(e)},e.prototype.getMonth=function(e){return this.calendarSystem.getMarkerMonth(e)},e.prototype.add=function(e,t){var n=this.calendarSystem.markerToArray(e);return n[0]+=t.years,n[1]+=t.months,n[2]+=t.days,n[6]+=t.milliseconds,this.calendarSystem.arrayToMarker(n)},e.prototype.subtract=function(e,t){var n=this.calendarSystem.markerToArray(e);return n[0]-=t.years,n[1]-=t.months,n[2]-=t.days,n[6]-=t.milliseconds,this.calendarSystem.arrayToMarker(n)},e.prototype.addYears=function(e,t){var n=this.calendarSystem.markerToArray(e);return n[0]+=t,this.calendarSystem.arrayToMarker(n)},e.prototype.addMonths=function(e,t){var n=this.calendarSystem.markerToArray(e);return n[1]+=t,this.calendarSystem.arrayToMarker(n)},e.prototype.diffWholeYears=function(e,t){var n=this.calendarSystem;return Ne(e)===Ne(t)&&n.getMarkerDay(e)===n.getMarkerDay(t)&&n.getMarkerMonth(e)===n.getMarkerMonth(t)?n.getMarkerYear(t)-n.getMarkerYear(e):null},e.prototype.diffWholeMonths=function(e,t){var n=this.calendarSystem;return Ne(e)===Ne(t)&&n.getMarkerDay(e)===n.getMarkerDay(t)?n.getMarkerMonth(t)-n.getMarkerMonth(e)+12*(n.getMarkerYear(t)-n.getMarkerYear(e)):null},e.prototype.greatestWholeUnit=function(e,t){var n=this.diffWholeYears(e,t);return null!==n?{unit:"year",value:n}:null!==(n=this.diffWholeMonths(e,t))?{unit:"month",value:n}:null!==(n=Re(e,t))?{unit:"week",value:n}:null!==(n=De(e,t))?{unit:"day",value:n}:he(n=function(e,t){return(t.valueOf()-e.valueOf())/36e5}(e,t))?{unit:"hour",value:n}:he(n=function(e,t){return(t.valueOf()-e.valueOf())/6e4}(e,t))?{unit:"minute",value:n}:he(n=function(e,t){return(t.valueOf()-e.valueOf())/1e3}(e,t))?{unit:"second",value:n}:{unit:"millisecond",value:t.valueOf()-e.valueOf()}},e.prototype.countDurationsBetween=function(e,t,n){var r;return n.years&&null!==(r=this.diffWholeYears(e,t))?r/(tt(n)/365):n.months&&null!==(r=this.diffWholeMonths(e,t))?r/function(e){return tt(e)/30}(n):n.days&&null!==(r=De(e,t))?r/tt(n):(t.valueOf()-e.valueOf())/ot(n)},e.prototype.startOf=function(e,t){return"year"===t?this.startOfYear(e):"month"===t?this.startOfMonth(e):"week"===t?this.startOfWeek(e):"day"===t?we(e):"hour"===t?function(e){return Ie([e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours()])}(e):"minute"===t?function(e){return Ie([e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes()])}(e):"second"===t?function(e){return Ie([e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds()])}(e):null},e.prototype.startOfYear=function(e){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(e)])},e.prototype.startOfMonth=function(e){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(e),this.calendarSystem.getMarkerMonth(e)])},e.prototype.startOfWeek=function(e){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(e),this.calendarSystem.getMarkerMonth(e),e.getUTCDate()-(e.getUTCDay()-this.weekDow+7)%7])},e.prototype.computeWeekNumber=function(e){return this.weekNumberFunc?this.weekNumberFunc(this.toDate(e)):function(e,t,n){var r=e.getUTCFullYear(),o=Te(e,r,t,n);if(o<1)return Te(e,r-1,t,n);var i=Te(e,r+1,t,n);return i>=1?Math.min(o,i):o}(e,this.weekDow,this.weekDoy)},e.prototype.format=function(e,t,n){return void 0===n&&(n={}),t.format({marker:e,timeZoneOffset:null!=n.forcedTzo?n.forcedTzo:this.offsetForMarker(e)},this)},e.prototype.formatRange=function(e,t,n,r){return void 0===r&&(r={}),r.isEndExclusive&&(t=Se(t,-1)),n.formatRange({marker:e,timeZoneOffset:null!=r.forcedStartTzo?r.forcedStartTzo:this.offsetForMarker(e)},{marker:t,timeZoneOffset:null!=r.forcedEndTzo?r.forcedEndTzo:this.offsetForMarker(t)},this,r.defaultSeparator)},e.prototype.formatIso=function(e,t){void 0===t&&(t={});var n=null;return t.omitTimeZoneOffset||(n=null!=t.forcedTzo?t.forcedTzo:this.offsetForMarker(e)),function(e,t,n){void 0===n&&(n=!1);var r=e.toISOString();return r=r.replace(".000",""),n&&(r=r.replace("T00:00:00Z","")),r.length>10&&(null==t?r=r.replace("Z",""):0!==t&&(r=r.replace("Z",ut(t,!0)))),r}(e,n,t.omitTime)},e.prototype.timestampToMarker=function(e){return"local"===this.timeZone?Ie(Me(new Date(e))):"UTC"!==this.timeZone&&this.namedTimeZoneImpl?Ie(this.namedTimeZoneImpl.timestampToArray(e)):new Date(e)},e.prototype.offsetForMarker=function(e){return"local"===this.timeZone?-ke(Pe(e)).getTimezoneOffset():"UTC"===this.timeZone?0:this.namedTimeZoneImpl?this.namedTimeZoneImpl.offsetForArray(Pe(e)):null},e.prototype.toDate=function(e,t){return"local"===this.timeZone?ke(Pe(e)):"UTC"===this.timeZone?new Date(e.valueOf()):this.namedTimeZoneImpl?new Date(e.valueOf()-1e3*this.namedTimeZoneImpl.offsetForArray(Pe(e))*60):new Date(e.valueOf()-(t||0))},e}(),ir=[],ar={code:"en",week:{dow:0,doy:4},direction:"ltr",buttonText:{prev:"prev",next:"next",prevYear:"prev year",nextYear:"next year",year:"year",today:"today",month:"month",week:"week",day:"day",list:"list"},weekText:"W",allDayText:"all-day",moreLinkText:"more",noEventsText:"No events to display"};function sr(e){for(var t=e.length>0?e[0].code:"en",n=ir.concat(e),r={en:ar},o=0,i=n;o<i.length;o++){var a=i[o];r[a.code]=a}return{map:r,defaultCode:t}}function lr(e,t){return"object"!=typeof e||Array.isArray(e)?function(e,t){var n=[].concat(e||[]),r=function(e,t){for(var n=0;n<e.length;n+=1)for(var r=e[n].toLocaleLowerCase().split("-"),o=r.length;o>0;o-=1){var i=r.slice(0,o).join("-");if(t[i])return t[i]}return null}(n,t)||ar;return ur(e,n,r)}(e,t):ur(e.code,[e.code],e)}function ur(e,t,n){var r=We([ar,n],["buttonText"]);delete r.code;var o=r.week;return delete r.week,{codeArg:e,codes:t,week:o,simpleNumberFormat:new Intl.NumberFormat(e),options:r}}function cr(e){var t=lr(e.locale||"en",sr([]).map);return new or(r(r({timeZone:It.timeZone,calendarSystem:"gregory"},e),{locale:t}))}var dr,pr={startTime:"09:00",endTime:"17:00",daysOfWeek:[1,2,3,4,5],display:"inverse-background",classNames:"fc-non-business",groupId:"_businessHours"};function fr(e,t){return Bt(function(e){var t;t=!0===e?[{}]:Array.isArray(e)?e.filter((function(e){return e.daysOfWeek})):"object"==typeof e&&e?[e]:[];return t=t.map((function(e){return r(r({},pr),e)}))}(e),null,t)}function hr(e,t){return e.left>=t.left&&e.left<t.right&&e.top>=t.top&&e.top<t.bottom}function gr(e,t){var n={left:Math.max(e.left,t.left),right:Math.min(e.right,t.right),top:Math.max(e.top,t.top),bottom:Math.min(e.bottom,t.bottom)};return n.left<n.right&&n.top<n.bottom&&n}function vr(e,t,n){return{left:e.left+t,right:e.right+t,top:e.top+n,bottom:e.bottom+n}}function mr(e,t){return{left:Math.min(Math.max(e.left,t.left),t.right),top:Math.min(Math.max(e.top,t.top),t.bottom)}}function yr(e){return{left:(e.left+e.right)/2,top:(e.top+e.bottom)/2}}function Sr(e,t){return{left:e.left-t.left,top:e.top-t.top}}function Er(){return null==dr&&(dr=function(){if("undefined"==typeof document)return!0;var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.innerHTML="<table><tr><td><div></div></td></tr></table>",e.querySelector("table").style.height="100px",e.querySelector("div").style.height="100%",document.body.appendChild(e);var t=e.querySelector("div").offsetHeight>0;return document.body.removeChild(e),t}()),dr}var Cr={defs:{},instances:{}},br=function(){function e(){this.getKeysForEventDefs=pt(this._getKeysForEventDefs),this.splitDateSelection=pt(this._splitDateSpan),this.splitEventStore=pt(this._splitEventStore),this.splitIndividualUi=pt(this._splitIndividualUi),this.splitEventDrag=pt(this._splitInteraction),this.splitEventResize=pt(this._splitInteraction),this.eventUiBuilders={}}return e.prototype.splitProps=function(e){var t=this,n=this.getKeyInfo(e),r=this.getKeysForEventDefs(e.eventStore),o=this.splitDateSelection(e.dateSelection),i=this.splitIndividualUi(e.eventUiBases,r),a=this.splitEventStore(e.eventStore,r),s=this.splitEventDrag(e.eventDrag),l=this.splitEventResize(e.eventResize),u={};for(var c in this.eventUiBuilders=Le(n,(function(e,n){return t.eventUiBuilders[n]||pt(Rr)})),n){var d=n[c],p=a[c]||Cr,f=this.eventUiBuilders[c];u[c]={businessHours:d.businessHours||e.businessHours,dateSelection:o[c]||null,eventStore:p,eventUiBases:f(e.eventUiBases[""],d.ui,i[c]),eventSelection:p.instances[e.eventSelection]?e.eventSelection:"",eventDrag:s[c]||null,eventResize:l[c]||null}}return u},e.prototype._splitDateSpan=function(e){var t={};if(e)for(var n=0,r=this.getKeysForDateSpan(e);n<r.length;n++){t[r[n]]=e}return t},e.prototype._getKeysForEventDefs=function(e){var t=this;return Le(e.defs,(function(e){return t.getKeysForEventDef(e)}))},e.prototype._splitEventStore=function(e,t){var n=e.defs,r=e.instances,o={};for(var i in n)for(var a=0,s=t[i];a<s.length;a++){o[p=s[a]]||(o[p]={defs:{},instances:{}}),o[p].defs[i]=n[i]}for(var l in r)for(var u=r[l],c=0,d=t[u.defId];c<d.length;c++){var p;o[p=d[c]]&&(o[p].instances[l]=u)}return o},e.prototype._splitIndividualUi=function(e,t){var n={};for(var r in e)if(r)for(var o=0,i=t[r];o<i.length;o++){var a=i[o];n[a]||(n[a]={}),n[a][r]=e[r]}return n},e.prototype._splitInteraction=function(e){var t={};if(e){var n=this._splitEventStore(e.affectedEvents,this._getKeysForEventDefs(e.affectedEvents)),r=this._getKeysForEventDefs(e.mutatedEvents),o=this._splitEventStore(e.mutatedEvents,r),i=function(r){t[r]||(t[r]={affectedEvents:n[r]||Cr,mutatedEvents:o[r]||Cr,isEvent:e.isEvent})};for(var a in n)i(a);for(var a in o)i(a)}return t},e}();function Rr(e,t,n){var o=[];e&&o.push(e),t&&o.push(t);var i={"":Kt(o)};return n&&r(i,n),i}function Dr(e,t,n,r){return{dow:e.getUTCDay(),isDisabled:Boolean(r&&!vn(r.activeRange,e)),isOther:Boolean(r&&!vn(r.currentRange,e)),isToday:Boolean(t&&vn(t,e)),isPast:Boolean(n?e<n:!!t&&e<t.start),isFuture:Boolean(n?e>n:!!t&&e>=t.end)}}function wr(e,t){var n=["fc-day","fc-day-"+ve[e.dow]];return e.isDisabled?n.push("fc-day-disabled"):(e.isToday&&(n.push("fc-day-today"),n.push(t.getClass("today"))),e.isPast&&n.push("fc-day-past"),e.isFuture&&n.push("fc-day-future"),e.isOther&&n.push("fc-day-other")),n}function Tr(e,t){var n=["fc-slot","fc-slot-"+ve[e.dow]];return e.isDisabled?n.push("fc-slot-disabled"):(e.isToday&&(n.push("fc-slot-today"),n.push(t.getClass("today"))),e.isPast&&n.push("fc-slot-past"),e.isFuture&&n.push("fc-slot-future")),n}function xr(e,t){return void 0===t&&(t="day"),JSON.stringify({date:st(e),type:t})}var Mr,kr=null;function Pr(){return null===kr&&(kr=function(){var e=document.createElement("div");Y(e,{position:"absolute",top:-1e3,left:0,border:0,padding:0,overflow:"scroll",direction:"rtl"}),e.innerHTML="<div></div>",document.body.appendChild(e);var t=e.firstChild.getBoundingClientRect().left>e.getBoundingClientRect().left;return z(e),t}()),kr}function Ir(){return Mr||(Mr=function(){var e=document.createElement("div");e.style.overflow="scroll",e.style.position="absolute",e.style.top="-9999px",e.style.left="-9999px",document.body.appendChild(e);var t=_r(e);return document.body.removeChild(e),t}()),Mr}function _r(e){return{x:e.offsetHeight-e.clientHeight,y:e.offsetWidth-e.clientWidth}}function Nr(e,t){void 0===t&&(t=!1);var n=window.getComputedStyle(e),r=parseInt(n.borderLeftWidth,10)||0,o=parseInt(n.borderRightWidth,10)||0,i=parseInt(n.borderTopWidth,10)||0,a=parseInt(n.borderBottomWidth,10)||0,s=_r(e),l=s.y-r-o,u={borderLeft:r,borderRight:o,borderTop:i,borderBottom:a,scrollbarBottom:s.x-i-a,scrollbarLeft:0,scrollbarRight:0};return Pr()&&"rtl"===n.direction?u.scrollbarLeft=l:u.scrollbarRight=l,t&&(u.paddingLeft=parseInt(n.paddingLeft,10)||0,u.paddingRight=parseInt(n.paddingRight,10)||0,u.paddingTop=parseInt(n.paddingTop,10)||0,u.paddingBottom=parseInt(n.paddingBottom,10)||0),u}function Hr(e,t,n){void 0===t&&(t=!1);var r=n?e.getBoundingClientRect():Or(e),o=Nr(e,t),i={left:r.left+o.borderLeft+o.scrollbarLeft,right:r.right-o.borderRight-o.scrollbarRight,top:r.top+o.borderTop,bottom:r.bottom-o.borderBottom-o.scrollbarBottom};return t&&(i.left+=o.paddingLeft,i.right-=o.paddingRight,i.top+=o.paddingTop,i.bottom-=o.paddingBottom),i}function Or(e){var t=e.getBoundingClientRect();return{left:t.left+window.pageXOffset,top:t.top+window.pageYOffset,right:t.right+window.pageXOffset,bottom:t.bottom+window.pageYOffset}}function Wr(e){for(var t=[];e instanceof HTMLElement;){var n=window.getComputedStyle(e);if("fixed"===n.position)break;/(auto|scroll)/.test(n.overflow+n.overflowY+n.overflowX)&&t.push(e),e=e.parentNode}return t}function Ar(e,t,n){var r=!1,o=function(){r||(r=!0,t.apply(this,arguments))},i=function(){r||(r=!0,n&&n.apply(this,arguments))},a=e(o,i);a&&"function"==typeof a.then&&a.then(o,i)}var Lr=function(){function e(){this.handlers={},this.thisContext=null}return e.prototype.setThisContext=function(e){this.thisContext=e},e.prototype.setOptions=function(e){this.options=e},e.prototype.on=function(e,t){!function(e,t,n){(e[t]||(e[t]=[])).push(n)}(this.handlers,e,t)},e.prototype.off=function(e,t){!function(e,t,n){n?e[t]&&(e[t]=e[t].filter((function(e){return e!==n}))):delete e[t]}(this.handlers,e,t)},e.prototype.trigger=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var r=this.handlers[e]||[],o=this.options&&this.options[e],i=[].concat(o||[],r),a=0,s=i;a<s.length;a++){var l=s[a];l.apply(this.thisContext,t)}},e.prototype.hasHandlers=function(e){return this.handlers[e]&&this.handlers[e].length||this.options&&this.options[e]},e}();var Ur=function(){function e(e,t,n,r){this.els=t;var o=this.originClientRect=e.getBoundingClientRect();n&&this.buildElHorizontals(o.left),r&&this.buildElVerticals(o.top)}return e.prototype.buildElHorizontals=function(e){for(var t=[],n=[],r=0,o=this.els;r<o.length;r++){var i=o[r].getBoundingClientRect();t.push(i.left-e),n.push(i.right-e)}this.lefts=t,this.rights=n},e.prototype.buildElVerticals=function(e){for(var t=[],n=[],r=0,o=this.els;r<o.length;r++){var i=o[r].getBoundingClientRect();t.push(i.top-e),n.push(i.bottom-e)}this.tops=t,this.bottoms=n},e.prototype.leftToIndex=function(e){var t,n=this.lefts,r=this.rights,o=n.length;for(t=0;t<o;t+=1)if(e>=n[t]&&e<r[t])return t},e.prototype.topToIndex=function(e){var t,n=this.tops,r=this.bottoms,o=n.length;for(t=0;t<o;t+=1)if(e>=n[t]&&e<r[t])return t},e.prototype.getWidth=function(e){return this.rights[e]-this.lefts[e]},e.prototype.getHeight=function(e){return this.bottoms[e]-this.tops[e]},e}(),Br=function(){function e(){}return e.prototype.getMaxScrollTop=function(){return this.getScrollHeight()-this.getClientHeight()},e.prototype.getMaxScrollLeft=function(){return this.getScrollWidth()-this.getClientWidth()},e.prototype.canScrollVertically=function(){return this.getMaxScrollTop()>0},e.prototype.canScrollHorizontally=function(){return this.getMaxScrollLeft()>0},e.prototype.canScrollUp=function(){return this.getScrollTop()>0},e.prototype.canScrollDown=function(){return this.getScrollTop()<this.getMaxScrollTop()},e.prototype.canScrollLeft=function(){return this.getScrollLeft()>0},e.prototype.canScrollRight=function(){return this.getScrollLeft()<this.getMaxScrollLeft()},e}(),zr=function(e){function t(t){var n=e.call(this)||this;return n.el=t,n}return n(t,e),t.prototype.getScrollTop=function(){return this.el.scrollTop},t.prototype.getScrollLeft=function(){return this.el.scrollLeft},t.prototype.setScrollTop=function(e){this.el.scrollTop=e},t.prototype.setScrollLeft=function(e){this.el.scrollLeft=e},t.prototype.getScrollWidth=function(){return this.el.scrollWidth},t.prototype.getScrollHeight=function(){return this.el.scrollHeight},t.prototype.getClientHeight=function(){return this.el.clientHeight},t.prototype.getClientWidth=function(){return this.el.clientWidth},t}(Br),Vr=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.getScrollTop=function(){return window.pageYOffset},t.prototype.getScrollLeft=function(){return window.pageXOffset},t.prototype.setScrollTop=function(e){window.scroll(window.pageXOffset,e)},t.prototype.setScrollLeft=function(e){window.scroll(e,window.pageYOffset)},t.prototype.getScrollWidth=function(){return document.documentElement.scrollWidth},t.prototype.getScrollHeight=function(){return document.documentElement.scrollHeight},t.prototype.getClientHeight=function(){return document.documentElement.clientHeight},t.prototype.getClientWidth=function(){return document.documentElement.clientWidth},t}(Br),Fr=function(){function e(e){this.iconOverrideOption&&this.setIconOverride(e[this.iconOverrideOption])}return e.prototype.setIconOverride=function(e){var t,n;if("object"==typeof e&&e){for(n in t=r({},this.iconClasses),e)t[n]=this.applyIconOverridePrefix(e[n]);this.iconClasses=t}else!1===e&&(this.iconClasses={})},e.prototype.applyIconOverridePrefix=function(e){var t=this.iconOverridePrefix;return t&&0!==e.indexOf(t)&&(e=t+e),e},e.prototype.getClass=function(e){return this.classes[e]||""},e.prototype.getIconClass=function(e,t){var n;return(n=t&&this.rtlIconClasses&&this.rtlIconClasses[e]||this.iconClasses[e])?this.baseIconClass+" "+n:""},e.prototype.getCustomButtonIconClass=function(e){var t;return this.iconOverrideCustomButtonOption&&(t=e[this.iconOverrideCustomButtonOption])?this.baseIconClass+" "+this.applyIconOverridePrefix(t):""},e}();if(Fr.prototype.classes={},Fr.prototype.iconClasses={},Fr.prototype.baseIconClass="",Fr.prototype.iconOverridePrefix="","undefined"==typeof FullCalendarVDom)throw new Error("Please import the top-level fullcalendar lib before attempting to import a plugin.");var jr=FullCalendarVDom.Component,Gr=FullCalendarVDom.createElement,qr=FullCalendarVDom.render,Yr=FullCalendarVDom.createRef,Zr=FullCalendarVDom.Fragment,Xr=FullCalendarVDom.createContext,Kr=FullCalendarVDom.flushToDom,Jr=FullCalendarVDom.unmountComponentAtNode,$r=function(){function e(e,t,n){var o=this;this.execFunc=e,this.emitter=t,this.scrollTime=n,this.handleScrollRequest=function(e){o.queuedRequest=r({},o.queuedRequest||{},e),o.drain()},t.on("_scrollRequest",this.handleScrollRequest),this.fireInitialScroll()}return e.prototype.detach=function(){this.emitter.off("_scrollRequest",this.handleScrollRequest)},e.prototype.update=function(e){e?this.fireInitialScroll():this.drain()},e.prototype.fireInitialScroll=function(){this.handleScrollRequest({time:this.scrollTime})},e.prototype.drain=function(){this.queuedRequest&&this.execFunc(this.queuedRequest)&&(this.queuedRequest=null)},e}(),Qr=Xr({});function eo(e,t,n,r,o,i,a,s,l,u,c,d,p){return{dateEnv:o,options:n,pluginHooks:a,emitter:u,dispatch:s,getCurrentData:l,calendarApi:c,viewSpec:e,viewApi:t,dateProfileGenerator:r,theme:i,isRtl:"rtl"===n.direction,addResizeHandler:function(e){u.on("_resize",e)},removeResizeHandler:function(e){u.off("_resize",e)},createScrollResponder:function(e){return new $r(e,u,Ke(n.scrollTime))},registerInteractiveComponent:d,unregisterInteractiveComponent:p}}var to=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.shouldComponentUpdate=function(e,t){return this.debug&&console.log(Ve(e,this.props),Ve(t,this.state)),!Fe(this.props,e,this.propEquality)||!Fe(this.state,t,this.stateEquality)},t.addPropsEquality=ro,t.addStateEquality=oo,t.contextType=Qr,t}(jr);to.prototype.propEquality={},to.prototype.stateEquality={};var no=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.contextType=Qr,t}(to);function ro(e){var t=Object.create(this.prototype.propEquality);r(t,e),this.prototype.propEquality=t}function oo(e){var t=Object.create(this.prototype.stateEquality);r(t,e),this.prototype.stateEquality=t}function io(e,t){"function"==typeof e?e(t):e&&(e.current=t)}function ao(e,t,n,r,o){switch(t.type){case"RECEIVE_EVENTS":return function(e,t,n,r,o,i){if(t&&n===t.latestFetchId){var a=Bt(function(e,t,n){var r=n.options.eventDataTransform,o=t?t.eventDataTransform:null;o&&(e=so(e,o));r&&(e=so(e,r));return e}(o,t,i),t,i);return r&&(a=qe(a,r,i)),jt(lo(e,t.sourceId),a)}return e}(e,n[t.sourceId],t.fetchId,t.fetchRange,t.rawEvents,o);case"ADD_EVENTS":return function(e,t,n,r){n&&(t=qe(t,n,r));return jt(e,t)}(e,t.eventStore,r?r.activeRange:null,o);case"RESET_EVENTS":return t.eventStore;case"MERGE_EVENTS":return jt(e,t.eventStore);case"PREV":case"NEXT":case"CHANGE_DATE":case"CHANGE_VIEW_TYPE":return r?qe(e,r.activeRange,o):e;case"REMOVE_EVENTS":return function(e,t){var n=e.defs,r=e.instances,o={},i={};for(var a in n)t.defs[a]||(o[a]=n[a]);for(var s in r)!t.instances[s]&&o[r[s].defId]&&(i[s]=r[s]);return{defs:o,instances:i}}(e,t.eventStore);case"REMOVE_EVENT_SOURCE":return lo(e,t.sourceId);case"REMOVE_ALL_EVENT_SOURCES":return Gt(e,(function(e){return!e.sourceId}));case"REMOVE_ALL_EVENTS":return{defs:{},instances:{}};default:return e}}function so(e,t){var n;if(t){n=[];for(var r=0,o=e;r<o.length;r++){var i=o[r],a=t(i);a?n.push(a):null==a&&n.push(i)}}else n=e;return n}function lo(e,t){return Gt(e,(function(e){return e.sourceId!==t}))}function uo(e,t){return co({eventDrag:e},t)}function co(e,t){var n=t.getCurrentData(),o=r({businessHours:n.businessHours,dateSelection:"",eventStore:n.eventStore,eventUiBases:n.eventUiBases,eventSelection:"",eventDrag:null,eventResize:null},e);return(t.pluginHooks.isPropsValid||po)(o,t)}function po(e,t,n,o){return void 0===n&&(n={}),!(e.eventDrag&&!function(e,t,n,o){var i=t.getCurrentData(),a=e.eventDrag,s=a.mutatedEvents,l=s.defs,u=s.instances,c=Cn(l,a.isEvent?e.eventUiBases:{"":i.selectionConfig});o&&(c=Le(c,o));var d=(g=e.eventStore,v=a.affectedEvents.instances,{defs:g.defs,instances:Ae(g.instances,(function(e){return!v[e.instanceId]}))}),p=d.defs,f=d.instances,h=Cn(p,e.eventUiBases);var g,v;for(var m in u){var y=u[m],S=y.range,E=c[y.defId],C=l[y.defId];if(!fo(E.constraints,S,d,e.businessHours,t))return!1;var b=t.options.eventOverlap,R="function"==typeof b?b:null;for(var D in f){var w=f[D];if(hn(S,w.range)){if(!1===h[w.defId].overlap&&a.isEvent)return!1;if(!1===E.overlap)return!1;if(R&&!R(new Kn(t,p[w.defId],w),new Kn(t,C,y)))return!1}}for(var T=i.eventStore,x=0,M=E.allows;x<M.length;x++){var k=M[x],P=r(r({},n),{range:y.range,allDay:C.allDay}),I=T.defs[C.defId],_=T.instances[m],N=void 0;if(N=I?new Kn(t,I,_):new Kn(t,C),!k(Un(P,t),N))return!1}}return!0}(e,t,n,o))&&!(e.dateSelection&&!function(e,t,n,o){var i=e.eventStore,a=i.defs,s=i.instances,l=e.dateSelection,u=l.range,c=t.getCurrentData().selectionConfig;o&&(c=o(c));if(!fo(c.constraints,u,i,e.businessHours,t))return!1;var d=t.options.selectOverlap,p="function"==typeof d?d:null;for(var f in s){var h=s[f];if(hn(u,h.range)){if(!1===c.overlap)return!1;if(p&&!p(new Kn(t,a[h.defId],h),null))return!1}}for(var g=0,v=c.allows;g<v.length;g++){var m=v[g],y=r(r({},n),l);if(!m(Un(y,t),null))return!1}return!0}(e,t,n,o))}function fo(e,t,n,r,o){for(var i=0,a=e;i<a.length;i++){if(!vo(ho(a[i],t,n,r,o),t))return!1}return!0}function ho(e,t,n,r,o){return"businessHours"===e?go(qe(r,t,o)):"string"==typeof e?go(Gt(n,(function(t){return t.groupId===e}))):"object"==typeof e&&e?go(qe(e,t,o)):[]}function go(e){var t=e.instances,n=[];for(var r in t)n.push(t[r].range);return n}function vo(e,t){for(var n=0,r=e;n<r.length;n++){if(gn(r[n],t))return!0}return!1}var mo=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.uid=te(),t}return n(t,e),t.prototype.prepareHits=function(){},t.prototype.queryHit=function(e,t,n,r){return null},t.prototype.isInteractionValid=function(e){var t=this.props.dateProfile,n=e.mutatedEvents.instances;if(t)for(var r in n)if(!gn(t.validRange,n[r].range))return!1;return uo(e,this.context)},t.prototype.isDateSelectionValid=function(e){var t,n,r=this.props.dateProfile;return!(r&&!gn(r.validRange,e.range))&&(t=e,n=this.context,co({dateSelection:t},n))},t.prototype.isValidSegDownEl=function(e){return!this.props.eventDrag&&!this.props.eventResize&&!V(e,".fc-event-mirror")},t.prototype.isValidDateDownEl=function(e){return!(V(e,".fc-event:not(.fc-bg-event)")||V(e,".fc-daygrid-more-link")||V(e,"a[data-navlink]")||V(e,".fc-popover"))},t}(no);function yo(e){return{id:te(),deps:e.deps||[],reducers:e.reducers||[],isLoadingFuncs:e.isLoadingFuncs||[],contextInit:[].concat(e.contextInit||[]),eventRefiners:e.eventRefiners||{},eventDefMemberAdders:e.eventDefMemberAdders||[],eventSourceRefiners:e.eventSourceRefiners||{},isDraggableTransformers:e.isDraggableTransformers||[],eventDragMutationMassagers:e.eventDragMutationMassagers||[],eventDefMutationAppliers:e.eventDefMutationAppliers||[],dateSelectionTransformers:e.dateSelectionTransformers||[],datePointTransforms:e.datePointTransforms||[],dateSpanTransforms:e.dateSpanTransforms||[],views:e.views||{},viewPropsTransformers:e.viewPropsTransformers||[],isPropsValid:e.isPropsValid||null,externalDefTransforms:e.externalDefTransforms||[],eventResizeJoinTransforms:e.eventResizeJoinTransforms||[],viewContainerAppends:e.viewContainerAppends||[],eventDropTransformers:e.eventDropTransformers||[],componentInteractions:e.componentInteractions||[],calendarInteractions:e.calendarInteractions||[],themeClasses:e.themeClasses||{},eventSourceDefs:e.eventSourceDefs||[],cmdFormatter:e.cmdFormatter,recurringTypes:e.recurringTypes||[],namedTimeZonedImpl:e.namedTimeZonedImpl,initialView:e.initialView||"",elementDraggingImpl:e.elementDraggingImpl,optionChangeHandlers:e.optionChangeHandlers||{},scrollGridImpl:e.scrollGridImpl||null,contentTypeHandlers:e.contentTypeHandlers||{},listenerRefiners:e.listenerRefiners||{},optionRefiners:e.optionRefiners||{},propSetHandlers:e.propSetHandlers||{}}}function So(){var e,t=[],n=[];return function(o,i){return e&&dt(o,t)&&dt(i,n)||(e=function(e,t){var n={},o={reducers:[],isLoadingFuncs:[],contextInit:[],eventRefiners:{},eventDefMemberAdders:[],eventSourceRefiners:{},isDraggableTransformers:[],eventDragMutationMassagers:[],eventDefMutationAppliers:[],dateSelectionTransformers:[],datePointTransforms:[],dateSpanTransforms:[],views:{},viewPropsTransformers:[],isPropsValid:null,externalDefTransforms:[],eventResizeJoinTransforms:[],viewContainerAppends:[],eventDropTransformers:[],componentInteractions:[],calendarInteractions:[],themeClasses:{},eventSourceDefs:[],cmdFormatter:null,recurringTypes:[],namedTimeZonedImpl:null,initialView:"",elementDraggingImpl:null,optionChangeHandlers:{},scrollGridImpl:null,contentTypeHandlers:{},listenerRefiners:{},optionRefiners:{},propSetHandlers:{}};function i(e){for(var t=0,a=e;t<a.length;t++){var s=a[t];n[s.id]||(n[s.id]=!0,i(s.deps),u=s,o={reducers:(l=o).reducers.concat(u.reducers),isLoadingFuncs:l.isLoadingFuncs.concat(u.isLoadingFuncs),contextInit:l.contextInit.concat(u.contextInit),eventRefiners:r(r({},l.eventRefiners),u.eventRefiners),eventDefMemberAdders:l.eventDefMemberAdders.concat(u.eventDefMemberAdders),eventSourceRefiners:r(r({},l.eventSourceRefiners),u.eventSourceRefiners),isDraggableTransformers:l.isDraggableTransformers.concat(u.isDraggableTransformers),eventDragMutationMassagers:l.eventDragMutationMassagers.concat(u.eventDragMutationMassagers),eventDefMutationAppliers:l.eventDefMutationAppliers.concat(u.eventDefMutationAppliers),dateSelectionTransformers:l.dateSelectionTransformers.concat(u.dateSelectionTransformers),datePointTransforms:l.datePointTransforms.concat(u.datePointTransforms),dateSpanTransforms:l.dateSpanTransforms.concat(u.dateSpanTransforms),views:r(r({},l.views),u.views),viewPropsTransformers:l.viewPropsTransformers.concat(u.viewPropsTransformers),isPropsValid:u.isPropsValid||l.isPropsValid,externalDefTransforms:l.externalDefTransforms.concat(u.externalDefTransforms),eventResizeJoinTransforms:l.eventResizeJoinTransforms.concat(u.eventResizeJoinTransforms),viewContainerAppends:l.viewContainerAppends.concat(u.viewContainerAppends),eventDropTransformers:l.eventDropTransformers.concat(u.eventDropTransformers),calendarInteractions:l.calendarInteractions.concat(u.calendarInteractions),componentInteractions:l.componentInteractions.concat(u.componentInteractions),themeClasses:r(r({},l.themeClasses),u.themeClasses),eventSourceDefs:l.eventSourceDefs.concat(u.eventSourceDefs),cmdFormatter:u.cmdFormatter||l.cmdFormatter,recurringTypes:l.recurringTypes.concat(u.recurringTypes),namedTimeZonedImpl:u.namedTimeZonedImpl||l.namedTimeZonedImpl,initialView:l.initialView||u.initialView,elementDraggingImpl:l.elementDraggingImpl||u.elementDraggingImpl,optionChangeHandlers:r(r({},l.optionChangeHandlers),u.optionChangeHandlers),scrollGridImpl:u.scrollGridImpl||l.scrollGridImpl,contentTypeHandlers:r(r({},l.contentTypeHandlers),u.contentTypeHandlers),listenerRefiners:r(r({},l.listenerRefiners),u.listenerRefiners),optionRefiners:r(r({},l.optionRefiners),u.optionRefiners),propSetHandlers:r(r({},l.propSetHandlers),u.propSetHandlers)})}var l,u}return e&&i(e),i(t),o}(o,i)),t=o,n=i,e}}var Eo=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t}(Fr);function Co(e,t,n,o){if(t[e])return t[e];var i=function(e,t,n,o){var i=n[e],a=o[e],s=function(e){return i&&null!==i[e]?i[e]:a&&null!==a[e]?a[e]:null},l=s("component"),u=s("superType"),c=null;if(u){if(u===e)throw new Error("Can't have a custom view type that references itself");c=Co(u,t,n,o)}!l&&c&&(l=c.component);if(!l)return null;return{type:e,component:l,defaults:r(r({},c?c.defaults:{}),i?i.rawOptions:{}),overrides:r(r({},c?c.overrides:{}),a?a.rawOptions:{})}}(e,t,n,o);return i&&(t[e]=i),i}Eo.prototype.classes={root:"fc-theme-standard",tableCellShaded:"fc-cell-shaded",buttonGroup:"fc-button-group",button:"fc-button fc-button-primary",buttonActive:"fc-button-active"},Eo.prototype.baseIconClass="fc-icon",Eo.prototype.iconClasses={close:"fc-icon-x",prev:"fc-icon-chevron-left",next:"fc-icon-chevron-right",prevYear:"fc-icon-chevrons-left",nextYear:"fc-icon-chevrons-right"},Eo.prototype.rtlIconClasses={prev:"fc-icon-chevron-right",next:"fc-icon-chevron-left",prevYear:"fc-icon-chevrons-right",nextYear:"fc-icon-chevrons-left"},Eo.prototype.iconOverrideOption="buttonIcons",Eo.prototype.iconOverrideCustomButtonOption="icon",Eo.prototype.iconOverridePrefix="fc-icon-";var bo=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.rootElRef=Yr(),t.handleRootEl=function(e){io(t.rootElRef,e),t.props.elRef&&io(t.props.elRef,e)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=t.hookProps;return Gr(To,{hookProps:n,didMount:t.didMount,willUnmount:t.willUnmount,elRef:this.handleRootEl},(function(r){return Gr(Do,{hookProps:n,content:t.content,defaultContent:t.defaultContent,backupElRef:e.rootElRef},(function(e,o){return t.children(r,Mo(t.classNames,n),e,o)}))}))},t}(no),Ro=Xr(0);function Do(e){return Gr(Ro.Consumer,null,(function(t){return Gr(wo,r({renderId:t},e))}))}var wo=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.innerElRef=Yr(),t}return n(t,e),t.prototype.render=function(){return this.props.children(this.innerElRef,this.renderInnerContent())},t.prototype.componentDidMount=function(){this.updateCustomContent()},t.prototype.componentDidUpdate=function(){this.updateCustomContent()},t.prototype.componentWillUnmount=function(){this.customContentInfo&&this.customContentInfo.destroy&&this.customContentInfo.destroy()},t.prototype.renderInnerContent=function(){var e=this.context.pluginHooks.contentTypeHandlers,t=this.props,n=this.customContentInfo,o=ko(t.content,t.hookProps),i=null;if(void 0===o&&(o=ko(t.defaultContent,t.hookProps)),void 0!==o){if(n)n.contentVal=o[n.contentKey];else if("object"==typeof o)for(var a in e)if(void 0!==o[a]){var s=e[a]();n=this.customContentInfo=r({contentKey:a,contentVal:o[a]},s);break}i=n?[]:o}return i},t.prototype.updateCustomContent=function(){this.customContentInfo&&this.customContentInfo.render(this.innerElRef.current||this.props.backupElRef.current,this.customContentInfo.contentVal)},t}(no),To=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.handleRootEl=function(e){t.rootEl=e,t.props.elRef&&io(t.props.elRef,e)},t}return n(t,e),t.prototype.render=function(){return this.props.children(this.handleRootEl)},t.prototype.componentDidMount=function(){var e=this.props.didMount;e&&e(r(r({},this.props.hookProps),{el:this.rootEl}))},t.prototype.componentWillUnmount=function(){var e=this.props.willUnmount;e&&e(r(r({},this.props.hookProps),{el:this.rootEl}))},t}(no);function xo(){var e,t,n=[];return function(r,o){return t&&ze(t,o)&&r===e||(e=r,t=o,n=Mo(r,o)),n}}function Mo(e,t){return"function"==typeof e&&(e=e(t)),qt(e)}function ko(e,t){return"function"==typeof e?e(t,Gr):e}var Po=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.normalizeClassNames=xo(),t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options,r={view:t.viewApi},o=this.normalizeClassNames(n.viewClassNames,r);return Gr(To,{hookProps:r,didMount:n.viewDidMount,willUnmount:n.viewWillUnmount,elRef:e.elRef},(function(t){return e.children(t,["fc-"+e.viewSpec.type+"-view","fc-view"].concat(o))}))},t}(no);function Io(e){return Le(e,_o)}function _o(e){var t,n="function"==typeof e?{component:e}:e,o=n.component;return n.content&&(t=n,o=function(e){return Gr(Qr.Consumer,null,(function(n){return Gr(Po,{viewSpec:n.viewSpec},(function(o,i){var a=r(r({},e),{nextDayThreshold:n.options.nextDayThreshold});return Gr(bo,{hookProps:a,classNames:t.classNames,content:t.content,didMount:t.didMount,willUnmount:t.willUnmount,elRef:o},(function(e,t,n,r){return Gr("div",{className:i.concat(t).join(" "),ref:e},r)}))}))}))}),{superType:n.type,component:o,rawOptions:n}}function No(e,t,n,o){var i=Io(e),a=Io(t.views);return Le(function(e,t){var n,r={};for(n in e)Co(n,r,e,t);for(n in t)Co(n,r,e,t);return r}(i,a),(function(e){return function(e,t,n,o,i){var a=e.overrides.duration||e.defaults.duration||o.duration||n.duration,s=null,l="",u="",c={};if(a&&(s=function(e){var t=JSON.stringify(e),n=Ho[t];void 0===n&&(n=Ke(e),Ho[t]=n);return n}(a))){var d=at(s);l=d.unit,1===d.value&&(u=l,c=t[l]?t[l].rawOptions:{})}var p=function(t){var n=t.buttonText||{},r=e.defaults.buttonTextKey;return null!=r&&null!=n[r]?n[r]:null!=n[e.type]?n[e.type]:null!=n[u]?n[u]:null};return{type:e.type,component:e.component,duration:s,durationUnit:l,singleUnit:u,optionDefaults:e.defaults,optionOverrides:r(r({},c),e.overrides),buttonTextOverride:p(o)||p(n)||e.overrides.buttonText,buttonTextDefault:p(i)||e.defaults.buttonText||p(It)||e.type}}(e,a,t,n,o)}))}var Ho={};var Oo=function(){function e(e){this.props=e,this.nowDate=Zn(e.nowInput,e.dateEnv),this.initHiddenDays()}return e.prototype.buildPrev=function(e,t,n){var r=this.props.dateEnv,o=r.subtract(r.startOf(t,e.currentRangeUnit),e.dateIncrement);return this.build(o,-1,n)},e.prototype.buildNext=function(e,t,n){var r=this.props.dateEnv,o=r.add(r.startOf(t,e.currentRangeUnit),e.dateIncrement);return this.build(o,1,n)},e.prototype.build=function(e,t,n){void 0===n&&(n=!0);var r,o,i,a,s,l,u,c,d=this.props;return r=this.buildValidRange(),r=this.trimHiddenDays(r),n&&(u=e,e=null!=(c=r).start&&u<c.start?c.start:null!=c.end&&u>=c.end?new Date(c.end.valueOf()-1):u),o=this.buildCurrentRangeInfo(e,t),i=/^(year|month|week|day)$/.test(o.unit),a=this.buildRenderRange(this.trimHiddenDays(o.range),o.unit,i),s=a=this.trimHiddenDays(a),d.showNonCurrentDates||(s=pn(s,o.range)),s=pn(s=this.adjustActiveRange(s),r),l=hn(o.range,r),{validRange:r,currentRange:o.range,currentRangeUnit:o.unit,isRangeAllDay:i,activeRange:s,renderRange:a,slotMinTime:d.slotMinTime,slotMaxTime:d.slotMaxTime,isValid:l,dateIncrement:this.buildDateIncrement(o.duration)}},e.prototype.buildValidRange=function(){var e=this.props.validRangeInput,t="function"==typeof e?e.call(this.props.calendarApi,this.nowDate):e;return this.refineRange(t)||{start:null,end:null}},e.prototype.buildCurrentRangeInfo=function(e,t){var n,r=this.props,o=null,i=null,a=null;return r.duration?(o=r.duration,i=r.durationUnit,a=this.buildRangeFromDuration(e,t,o,i)):(n=this.props.dayCount)?(i="day",a=this.buildRangeFromDayCount(e,t,n)):(a=this.buildCustomVisibleRange(e))?i=r.dateEnv.greatestWholeUnit(a.start,a.end).unit:(i=at(o=this.getFallbackDuration()).unit,a=this.buildRangeFromDuration(e,t,o,i)),{duration:o,unit:i,range:a}},e.prototype.getFallbackDuration=function(){return Ke({day:1})},e.prototype.adjustActiveRange=function(e){var t=this.props,n=t.dateEnv,r=t.usesMinMaxTime,o=t.slotMinTime,i=t.slotMaxTime,a=e.start,s=e.end;return r&&(tt(o)<0&&(a=we(a),a=n.add(a,o)),tt(i)>1&&(s=ye(s=we(s),-1),s=n.add(s,i))),{start:a,end:s}},e.prototype.buildRangeFromDuration=function(e,t,n,r){var o,i,a,s=this.props,l=s.dateEnv,u=s.dateAlignment;if(!u){var c=this.props.dateIncrement;u=c&&ot(c)<ot(n)?at(c).unit:r}function d(){o=l.startOf(e,u),i=l.add(o,n),a={start:o,end:i}}return tt(n)<=1&&this.isHiddenDay(o)&&(o=we(o=this.skipHiddenDays(o,t))),d(),this.trimHiddenDays(a)||(e=this.skipHiddenDays(e,t),d()),a},e.prototype.buildRangeFromDayCount=function(e,t,n){var r,o=this.props,i=o.dateEnv,a=o.dateAlignment,s=0,l=e;a&&(l=i.startOf(l,a)),l=we(l),r=l=this.skipHiddenDays(l,t);do{r=ye(r,1),this.isHiddenDay(r)||(s+=1)}while(s<n);return{start:l,end:r}},e.prototype.buildCustomVisibleRange=function(e){var t=this.props,n=t.visibleRangeInput,r="function"==typeof n?n.call(t.calendarApi,t.dateEnv.toDate(e)):n,o=this.refineRange(r);return!o||null!=o.start&&null!=o.end?o:null},e.prototype.buildRenderRange=function(e,t,n){return e},e.prototype.buildDateIncrement=function(e){var t,n=this.props.dateIncrement;return n||((t=this.props.dateAlignment)?Ke(1,t):e||Ke({days:1}))},e.prototype.refineRange=function(e){if(e){var t=(n=e,r=this.props.dateEnv,o=null,i=null,n.start&&(o=r.createMarker(n.start)),n.end&&(i=r.createMarker(n.end)),o||i?o&&i&&i<o?null:{start:o,end:i}:null);return t&&(t=sn(t)),t}var n,r,o,i;return null},e.prototype.initHiddenDays=function(){var e,t=this.props.hiddenDays||[],n=[],r=0;for(!1===this.props.weekends&&t.push(0,6),e=0;e<7;e+=1)(n[e]=-1!==t.indexOf(e))||(r+=1);if(!r)throw new Error("invalid hiddenDays");this.isHiddenDayHash=n},e.prototype.trimHiddenDays=function(e){var t=e.start,n=e.end;return t&&(t=this.skipHiddenDays(t)),n&&(n=this.skipHiddenDays(n,-1,!0)),null==t||null==n||t<n?{start:t,end:n}:null},e.prototype.isHiddenDay=function(e){return e instanceof Date&&(e=e.getUTCDay()),this.isHiddenDayHash[e]},e.prototype.skipHiddenDays=function(e,t,n){for(void 0===t&&(t=1),void 0===n&&(n=!1);this.isHiddenDayHash[(e.getUTCDay()+(n?t:0)+7)%7];)e=ye(e,t);return e},e}();function Wo(e,t,n){var r=t?t.activeRange:null;return Uo({},function(e,t){var n=Yn(t),r=[].concat(e.eventSources||[]),o=[];e.initialEvents&&r.unshift(e.initialEvents);e.events&&r.unshift(e.events);for(var i=0,a=r;i<a.length;i++){var s=qn(a[i],t,n);s&&o.push(s)}return o}(e,n),r,n)}function Ao(e,t,n,o){var i,a,s=n?n.activeRange:null;switch(t.type){case"ADD_EVENT_SOURCES":return Uo(e,t.sources,s,o);case"REMOVE_EVENT_SOURCE":return i=e,a=t.sourceId,Ae(i,(function(e){return e.sourceId!==a}));case"PREV":case"NEXT":case"CHANGE_DATE":case"CHANGE_VIEW_TYPE":return n?Bo(e,s,o):e;case"FETCH_EVENT_SOURCES":return zo(e,t.sourceIds?Ue(t.sourceIds):Fo(e,o),s,o);case"RECEIVE_EVENTS":case"RECEIVE_EVENT_ERROR":return function(e,t,n,o){var i,a=e[t];if(a&&n===a.latestFetchId)return r(r({},e),((i={})[t]=r(r({},a),{isFetching:!1,fetchRange:o}),i));return e}(e,t.sourceId,t.fetchId,t.fetchRange);case"REMOVE_ALL_EVENT_SOURCES":return{};default:return e}}function Lo(e){for(var t in e)if(e[t].isFetching)return!0;return!1}function Uo(e,t,n,o){for(var i={},a=0,s=t;a<s.length;a++){var l=s[a];i[l.sourceId]=l}return n&&(i=Bo(i,n,o)),r(r({},e),i)}function Bo(e,t,n){return zo(e,Ae(e,(function(e){return function(e,t,n){if(!jo(e,n))return!e.latestFetchId;return!n.options.lazyFetching||!e.fetchRange||e.isFetching||t.start<e.fetchRange.start||t.end>e.fetchRange.end}(e,t,n)})),t,n)}function zo(e,t,n,r){var o={};for(var i in e){var a=e[i];t[i]?o[i]=Vo(a,n,r):o[i]=a}return o}function Vo(e,t,n){var o=n.options,i=n.calendarApi,a=n.pluginHooks.eventSourceDefs[e.sourceDefId],s=te();return a.fetch({eventSource:e,range:t,context:n},(function(r){var a=r.rawEvents;o.eventSourceSuccess&&(a=o.eventSourceSuccess.call(i,a,r.xhr)||a),e.success&&(a=e.success.call(i,a,r.xhr)||a),n.dispatch({type:"RECEIVE_EVENTS",sourceId:e.sourceId,fetchId:s,fetchRange:t,rawEvents:a})}),(function(r){console.warn(r.message,r),o.eventSourceFailure&&o.eventSourceFailure.call(i,r),e.failure&&e.failure(r),n.dispatch({type:"RECEIVE_EVENT_ERROR",sourceId:e.sourceId,fetchId:s,fetchRange:t,error:r})})),r(r({},e),{isFetching:!0,latestFetchId:s})}function Fo(e,t){return Ae(e,(function(e){return jo(e,t)}))}function jo(e,t){return!t.pluginHooks.eventSourceDefs[e.sourceDefId].ignoreRange}function Go(e,t){switch(t.type){case"UNSELECT_DATES":return null;case"SELECT_DATES":return t.selection;default:return e}}function qo(e,t){switch(t.type){case"UNSELECT_EVENT":return"";case"SELECT_EVENT":return t.eventInstanceId;default:return e}}function Yo(e,t){var n;switch(t.type){case"UNSET_EVENT_DRAG":return null;case"SET_EVENT_DRAG":return{affectedEvents:(n=t.state).affectedEvents,mutatedEvents:n.mutatedEvents,isEvent:n.isEvent};default:return e}}function Zo(e,t){var n;switch(t.type){case"UNSET_EVENT_RESIZE":return null;case"SET_EVENT_RESIZE":return{affectedEvents:(n=t.state).affectedEvents,mutatedEvents:n.mutatedEvents,isEvent:n.isEvent};default:return e}}function Xo(e,t,n,r,o){var i=[];return{headerToolbar:e.headerToolbar?Ko(e.headerToolbar,e,t,n,r,o,i):null,footerToolbar:e.footerToolbar?Ko(e.footerToolbar,e,t,n,r,o,i):null,viewsWithButtons:i}}function Ko(e,t,n,r,o,i,a){return Le(e,(function(e){return function(e,t,n,r,o,i,a){var s="rtl"===t.direction,l=t.customButtons||{},u=n.buttonText||{},c=t.buttonText||{};return(e?e.split(" "):[]).map((function(e){return e.split(",").map((function(e){return"title"===e?{buttonName:e}:((t=l[e])?(d=function(e){t.click&&t.click.call(e.target,e,e.target)},(p=r.getCustomButtonIconClass(t))||(p=r.getIconClass(e,s))||(f=t.text)):(n=o[e])?(a.push(e),d=function(){i.changeView(e)},(f=n.buttonTextOverride)||(p=r.getIconClass(e,s))||(f=n.buttonTextDefault)):i[e]&&(d=function(){i[e]()},(f=u[e])||(p=r.getIconClass(e,s))||(f=c[e])),{buttonName:e,buttonClick:d,buttonIcon:p,buttonText:f});var t,n,d,p,f}))}))}(e,t,n,r,o,i,a)}))}function Jo(e,t,n,r,o){var i=null;"GET"===(e=e.toUpperCase())?t=function(e,t){return e+(-1===e.indexOf("?")?"?":"&")+$o(t)}(t,n):i=$o(n);var a=new XMLHttpRequest;a.open(e,t,!0),"GET"!==e&&a.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),a.onload=function(){if(a.status>=200&&a.status<400){var e=!1,t=void 0;try{t=JSON.parse(a.responseText),e=!0}catch(e){}e?r(t,a):o("Failure parsing JSON",a)}else o("Request failed",a)},a.onerror=function(){o("Request failed",a)},a.send(i)}function $o(e){var t=[];for(var n in e)t.push(encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t.join("&")}function Qo(e,t){for(var n=Be(t.getCurrentData().eventSources),r=[],o=0,i=e;o<i.length;o++){for(var a=i[o],s=!1,l=0;l<n.length;l+=1)if(n[l]._raw===a){n.splice(l,1),s=!0;break}s||r.push(a)}for(var u=0,c=n;u<c.length;u++){var d=c[u];t.dispatch({type:"REMOVE_EVENT_SOURCE",sourceId:d.sourceId})}for(var p=0,f=r;p<f.length;p++){var h=f[p];t.calendarApi.addEventSource(h)}}var ei=[yo({eventSourceDefs:[{ignoreRange:!0,parseMeta:function(e){return Array.isArray(e.events)?e.events:null},fetch:function(e,t){t({rawEvents:e.eventSource.meta})}}]}),yo({eventSourceDefs:[{parseMeta:function(e){return"function"==typeof e.events?e.events:null},fetch:function(e,t,n){var r=e.context.dateEnv;Ar(e.eventSource.meta.bind(null,On(e.range,r)),(function(e){t({rawEvents:e})}),n)}}]}),yo({eventSourceRefiners:{method:String,extraParams:Ut,startParam:String,endParam:String,timeZoneParam:String},eventSourceDefs:[{parseMeta:function(e){return!e.url||"json"!==e.format&&e.format?null:{url:e.url,format:"json",method:(e.method||"GET").toUpperCase(),extraParams:e.extraParams,startParam:e.startParam,endParam:e.endParam,timeZoneParam:e.timeZoneParam}},fetch:function(e,t,n){var o=e.eventSource.meta,i=function(e,t,n){var o,i,a,s,l=n.dateEnv,u=n.options,c={};null==(o=e.startParam)&&(o=u.startParam);null==(i=e.endParam)&&(i=u.endParam);null==(a=e.timeZoneParam)&&(a=u.timeZoneParam);s="function"==typeof e.extraParams?e.extraParams():e.extraParams||{};r(c,s),c[o]=l.formatIso(t.start),c[i]=l.formatIso(t.end),"local"!==l.timeZone&&(c[a]=l.timeZone);return c}(o,e.range,e.context);Jo(o.method,o.url,i,(function(e,n){t({rawEvents:e,xhr:n})}),(function(e,t){n({message:e,xhr:t})}))}}]}),yo({recurringTypes:[{parse:function(e,t){if(e.daysOfWeek||e.startTime||e.endTime||e.startRecur||e.endRecur){var n={daysOfWeek:e.daysOfWeek||null,startTime:e.startTime||null,endTime:e.endTime||null,startRecur:e.startRecur?t.createMarker(e.startRecur):null,endRecur:e.endRecur?t.createMarker(e.endRecur):null},r=void 0;return e.duration&&(r=e.duration),!r&&e.startTime&&e.endTime&&(o=e.endTime,i=e.startTime,r={years:o.years-i.years,months:o.months-i.months,days:o.days-i.days,milliseconds:o.milliseconds-i.milliseconds}),{allDayGuess:Boolean(!e.startTime&&!e.endTime),duration:r,typeData:n}}var o,i;return null},expand:function(e,t,n){var r=pn(t,{start:e.startRecur,end:e.endRecur});return r?function(e,t,n,r){var o=e?Ue(e):null,i=we(n.start),a=n.end,s=[];for(;i<a;){var l=void 0;o&&!o[i.getUTCDay()]||(l=t?r.add(i,t):i,s.push(l)),i=ye(i,1)}return s}(e.daysOfWeek,e.startTime,r,n):[]}}],eventRefiners:{daysOfWeek:Ut,startTime:Ke,endTime:Ke,duration:Ke,startRecur:Ut,endRecur:Ut}}),yo({optionChangeHandlers:{events:function(e,t){Qo([e],t)},eventSources:Qo}}),yo({isLoadingFuncs:[function(e){return Lo(e.eventSources)}],contentTypeHandlers:{html:function(){return{render:ti}},domNodes:function(){return{render:ni}}},propSetHandlers:{dateProfile:function(e,t){t.emitter.trigger("datesSet",r(r({},On(e.activeRange,t.dateEnv)),{view:t.viewApi}))},eventStore:function(e,t){var n=t.emitter;n.hasHandlers("eventsSet")&&n.trigger("eventsSet",$n(e,t))}}})];function ti(e,t){e.innerHTML=t}function ni(e,t){var n=Array.prototype.slice.call(e.childNodes),r=Array.prototype.slice.call(t);if(!dt(n,r)){for(var o=0,i=r;o<i.length;o++){var a=i[o];e.appendChild(a)}n.forEach(z)}}var ri=function(){function e(e){this.drainedOption=e,this.isRunning=!1,this.isDirty=!1,this.pauseDepths={},this.timeoutId=0}return e.prototype.request=function(e){this.isDirty=!0,this.isPaused()||(this.clearTimeout(),null==e?this.tryDrain():this.timeoutId=setTimeout(this.tryDrain.bind(this),e))},e.prototype.pause=function(e){void 0===e&&(e="");var t=this.pauseDepths;t[e]=(t[e]||0)+1,this.clearTimeout()},e.prototype.resume=function(e,t){void 0===e&&(e="");var n=this.pauseDepths;if(e in n){if(t)delete n[e];else n[e]-=1,n[e]<=0&&delete n[e];this.tryDrain()}},e.prototype.isPaused=function(){return Object.keys(this.pauseDepths).length},e.prototype.tryDrain=function(){if(!this.isRunning&&!this.isPaused()){for(this.isRunning=!0;this.isDirty;)this.isDirty=!1,this.drained();this.isRunning=!1}},e.prototype.clear=function(){this.clearTimeout(),this.isDirty=!1,this.pauseDepths={}},e.prototype.clearTimeout=function(){this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=0)},e.prototype.drained=function(){this.drainedOption&&this.drainedOption()},e}(),oi=function(){function e(e,t){this.runTaskOption=e,this.drainedOption=t,this.queue=[],this.delayedRunner=new ri(this.drain.bind(this))}return e.prototype.request=function(e,t){this.queue.push(e),this.delayedRunner.request(t)},e.prototype.pause=function(e){this.delayedRunner.pause(e)},e.prototype.resume=function(e,t){this.delayedRunner.resume(e,t)},e.prototype.drain=function(){for(var e=this.queue;e.length;){for(var t=[],n=void 0;n=e.shift();)this.runTask(n),t.push(n);this.drained(t)}},e.prototype.runTask=function(e){this.runTaskOption&&this.runTaskOption(e)},e.prototype.drained=function(e){this.drainedOption&&this.drainedOption(e)},e}();function ii(e,t,n){var r;return r=/^(year|month)$/.test(e.currentRangeUnit)?e.currentRange:e.activeRange,n.formatRange(r.start,r.end,kt(t.titleFormat||function(e){var t=e.currentRangeUnit;if("year"===t)return{year:"numeric"};if("month"===t)return{year:"numeric",month:"long"};var n=De(e.currentRange.start,e.currentRange.end);if(null!==n&&n>1)return{year:"numeric",month:"short",day:"numeric"};return{year:"numeric",month:"long",day:"numeric"}}(e)),{isEndExclusive:e.isRangeAllDay,defaultSeparator:t.titleRangeSeparator})}var ai=function(){function e(e){var t=this;this.computeOptionsData=pt(this._computeOptionsData),this.computeCurrentViewData=pt(this._computeCurrentViewData),this.organizeRawLocales=pt(sr),this.buildLocale=pt(lr),this.buildPluginHooks=So(),this.buildDateEnv=pt(si),this.buildTheme=pt(li),this.parseToolbars=pt(Xo),this.buildViewSpecs=pt(No),this.buildDateProfileGenerator=ft(ui),this.buildViewApi=pt(ci),this.buildViewUiProps=ft(fi),this.buildEventUiBySource=pt(di,ze),this.buildEventUiBases=pt(pi),this.parseContextBusinessHours=ft(gi),this.buildTitle=pt(ii),this.emitter=new Lr,this.actionRunner=new oi(this._handleAction.bind(this),this.updateData.bind(this)),this.currentCalendarOptionsInput={},this.currentCalendarOptionsRefined={},this.currentViewOptionsInput={},this.currentViewOptionsRefined={},this.currentCalendarOptionsRefiners={},this.getCurrentData=function(){return t.data},this.dispatch=function(e){t.actionRunner.request(e)},this.props=e,this.actionRunner.pause();var n={},o=this.computeOptionsData(e.optionOverrides,n,e.calendarApi),i=o.calendarOptions.initialView||o.pluginHooks.initialView,a=this.computeCurrentViewData(i,o,e.optionOverrides,n);e.calendarApi.currentDataManager=this,this.emitter.setThisContext(e.calendarApi),this.emitter.setOptions(a.options);var s,l,u,c=(s=o.calendarOptions,l=o.dateEnv,null!=(u=s.initialDate)?l.createMarker(u):Zn(s.now,l)),d=a.dateProfileGenerator.build(c);vn(d.activeRange,c)||(c=d.currentRange.start);for(var p={dateEnv:o.dateEnv,options:o.calendarOptions,pluginHooks:o.pluginHooks,calendarApi:e.calendarApi,dispatch:this.dispatch,emitter:this.emitter,getCurrentData:this.getCurrentData},f=0,h=o.pluginHooks.contextInit;f<h.length;f++){(0,h[f])(p)}for(var g=Wo(o.calendarOptions,d,p),v={dynamicOptionOverrides:n,currentViewType:i,currentDate:c,dateProfile:d,businessHours:this.parseContextBusinessHours(p),eventSources:g,eventUiBases:{},eventStore:{defs:{},instances:{}},renderableEventStore:{defs:{},instances:{}},dateSelection:null,eventSelection:"",eventDrag:null,eventResize:null,selectionConfig:this.buildViewUiProps(p).selectionConfig},m=r(r({},p),v),y=0,S=o.pluginHooks.reducers;y<S.length;y++){var E=S[y];r(v,E(null,null,m))}hi(v,p)&&this.emitter.trigger("loading",!0),this.state=v,this.updateData(),this.actionRunner.resume()}return e.prototype.resetOptions=function(e,t){var n=this.props;n.optionOverrides=t?r(r({},n.optionOverrides),e):e,this.actionRunner.request({type:"NOTHING"})},e.prototype._handleAction=function(e){var t=this.props,n=this.state,o=this.emitter,i=function(e,t){var n;switch(t.type){case"SET_OPTION":return r(r({},e),((n={})[t.optionName]=t.rawOptionValue,n));default:return e}}(n.dynamicOptionOverrides,e),a=this.computeOptionsData(t.optionOverrides,i,t.calendarApi),s=function(e,t){switch(t.type){case"CHANGE_VIEW_TYPE":e=t.viewType}return e}(n.currentViewType,e),l=this.computeCurrentViewData(s,a,t.optionOverrides,i);t.calendarApi.currentDataManager=this,o.setThisContext(t.calendarApi),o.setOptions(l.options);var u={dateEnv:a.dateEnv,options:a.calendarOptions,pluginHooks:a.pluginHooks,calendarApi:t.calendarApi,dispatch:this.dispatch,emitter:o,getCurrentData:this.getCurrentData},c=n.currentDate,d=n.dateProfile;this.data&&this.data.dateProfileGenerator!==l.dateProfileGenerator&&(d=l.dateProfileGenerator.build(c)),d=function(e,t,n,r){var o;switch(t.type){case"CHANGE_VIEW_TYPE":return r.build(t.dateMarker||n);case"CHANGE_DATE":if(!e.activeRange||!vn(e.currentRange,t.dateMarker))return r.build(t.dateMarker);break;case"PREV":if((o=r.buildPrev(e,n)).isValid)return o;break;case"NEXT":if((o=r.buildNext(e,n)).isValid)return o}return e}(d,e,c=function(e,t){switch(t.type){case"CHANGE_DATE":return t.dateMarker;default:return e}}(c,e),l.dateProfileGenerator),vn(d.currentRange,c)||(c=d.currentRange.start);for(var p=Ao(n.eventSources,e,d,u),f=ao(n.eventStore,e,p,d,u),h=Lo(p)&&!l.options.progressiveEventRendering&&n.renderableEventStore||f,g=this.buildViewUiProps(u),v=g.eventUiSingleBase,m=g.selectionConfig,y=this.buildEventUiBySource(p),S={dynamicOptionOverrides:i,currentViewType:s,currentDate:c,dateProfile:d,eventSources:p,eventStore:f,renderableEventStore:h,selectionConfig:m,eventUiBases:this.buildEventUiBases(h.defs,v,y),businessHours:this.parseContextBusinessHours(u),dateSelection:Go(n.dateSelection,e),eventSelection:qo(n.eventSelection,e),eventDrag:Yo(n.eventDrag,e),eventResize:Zo(n.eventResize,e)},E=r(r({},u),S),C=0,b=a.pluginHooks.reducers;C<b.length;C++){var R=b[C];r(S,R(n,e,E))}var D=hi(n,u),w=hi(S,u);!D&&w?o.trigger("loading",!0):D&&!w&&o.trigger("loading",!1),this.state=S,t.onAction&&t.onAction(e)},e.prototype.updateData=function(){var e,t,n,o,i=this.props,a=this.state,s=this.data,l=this.computeOptionsData(i.optionOverrides,a.dynamicOptionOverrides,i.calendarApi),u=this.computeCurrentViewData(a.currentViewType,l,i.optionOverrides,a.dynamicOptionOverrides),c=this.data=r(r(r({viewTitle:this.buildTitle(a.dateProfile,u.options,l.dateEnv),calendarApi:i.calendarApi,dispatch:this.dispatch,emitter:this.emitter,getCurrentData:this.getCurrentData},l),u),a),d=l.pluginHooks.optionChangeHandlers,p=s&&s.calendarOptions,f=l.calendarOptions;if(p&&p!==f)for(var h in p.timeZone!==f.timeZone&&(a.eventSources=c.eventSources=(e=c.eventSources,t=a.dateProfile,n=c,o=t?t.activeRange:null,zo(e,Fo(e,n),o,n)),a.eventStore=c.eventStore=function(e,t,n){var o=e.defs,i=Le(e.instances,(function(e){var i=o[e.defId];return i.allDay||i.recurringDef?e:r(r({},e),{range:{start:n.createMarker(t.toDate(e.range.start,e.forcedStartTzo)),end:n.createMarker(t.toDate(e.range.end,e.forcedEndTzo))},forcedStartTzo:n.canComputeOffset?null:e.forcedStartTzo,forcedEndTzo:n.canComputeOffset?null:e.forcedEndTzo})}));return{defs:o,instances:i}}(c.eventStore,s.dateEnv,c.dateEnv)),d)p[h]!==f[h]&&d[h](f[h],c);i.onData&&i.onData(c)},e.prototype._computeOptionsData=function(e,t,n){var r=this.processRawCalendarOptions(e,t),o=r.refinedOptions,i=r.pluginHooks,a=r.localeDefaults,s=r.availableLocaleData;vi(r.extra);var l=this.buildDateEnv(o.timeZone,o.locale,o.weekNumberCalculation,o.firstDay,o.weekText,i,s,o.defaultRangeSeparator),u=this.buildViewSpecs(i.views,e,t,a),c=this.buildTheme(o,i);return{calendarOptions:o,pluginHooks:i,dateEnv:l,viewSpecs:u,theme:c,toolbarConfig:this.parseToolbars(o,e,c,u,n),localeDefaults:a,availableRawLocales:s.map}},e.prototype.processRawCalendarOptions=function(e,t){var n=At([It,e,t]),o=n.locales,i=n.locale,a=this.organizeRawLocales(o),s=a.map,l=this.buildLocale(i||a.defaultCode,s).options,u=this.buildPluginHooks(e.plugins||[],ei),c=this.currentCalendarOptionsRefiners=r(r(r(r(r({},Pt),_t),Nt),u.listenerRefiners),u.optionRefiners),d={},p=At([It,l,e,t]),f={},h=this.currentCalendarOptionsInput,g=this.currentCalendarOptionsRefined,v=!1;for(var m in p)"plugins"!==m&&(p[m]===h[m]||Ht[m]&&m in h&&Ht[m](h[m],p[m])?f[m]=g[m]:c[m]?(f[m]=c[m](p[m]),v=!0):d[m]=h[m]);return v&&(this.currentCalendarOptionsInput=p,this.currentCalendarOptionsRefined=f),{rawOptions:this.currentCalendarOptionsInput,refinedOptions:this.currentCalendarOptionsRefined,pluginHooks:u,availableLocaleData:a,localeDefaults:l,extra:d}},e.prototype._computeCurrentViewData=function(e,t,n,r){var o=t.viewSpecs[e];if(!o)throw new Error('viewType "'+e+"\" is not available. Please make sure you've loaded all neccessary plugins");var i=this.processRawViewOptions(o,t.pluginHooks,t.localeDefaults,n,r),a=i.refinedOptions;return vi(i.extra),{viewSpec:o,options:a,dateProfileGenerator:this.buildDateProfileGenerator({dateProfileGeneratorClass:o.optionDefaults.dateProfileGeneratorClass,duration:o.duration,durationUnit:o.durationUnit,usesMinMaxTime:o.optionDefaults.usesMinMaxTime,dateEnv:t.dateEnv,calendarApi:this.props.calendarApi,slotMinTime:a.slotMinTime,slotMaxTime:a.slotMaxTime,showNonCurrentDates:a.showNonCurrentDates,dayCount:a.dayCount,dateAlignment:a.dateAlignment,dateIncrement:a.dateIncrement,hiddenDays:a.hiddenDays,weekends:a.weekends,nowInput:a.now,validRangeInput:a.validRange,visibleRangeInput:a.visibleRange,monthMode:a.monthMode,fixedWeekCount:a.fixedWeekCount}),viewApi:this.buildViewApi(e,this.getCurrentData,t.dateEnv)}},e.prototype.processRawViewOptions=function(e,t,n,o,i){var a=At([It,e.optionDefaults,n,o,e.optionOverrides,i]),s=r(r(r(r(r(r({},Pt),_t),Nt),Wt),t.listenerRefiners),t.optionRefiners),l={},u=this.currentViewOptionsInput,c=this.currentViewOptionsRefined,d=!1,p={};for(var f in a)a[f]===u[f]?l[f]=c[f]:(a[f]===this.currentCalendarOptionsInput[f]?f in this.currentCalendarOptionsRefined&&(l[f]=this.currentCalendarOptionsRefined[f]):s[f]?l[f]=s[f](a[f]):p[f]=a[f],d=!0);return d&&(this.currentViewOptionsInput=a,this.currentViewOptionsRefined=l),{rawOptions:this.currentViewOptionsInput,refinedOptions:this.currentViewOptionsRefined,extra:p}},e}();function si(e,t,n,r,o,i,a,s){var l=lr(t||a.defaultCode,a.map);return new or({calendarSystem:"gregory",timeZone:e,namedTimeZoneImpl:i.namedTimeZonedImpl,locale:l,weekNumberCalculation:n,firstDay:r,weekText:o,cmdFormatter:i.cmdFormatter,defaultSeparator:s})}function li(e,t){return new(t.themeClasses[e.themeSystem]||Eo)(e)}function ui(e){return new(e.dateProfileGeneratorClass||Oo)(e)}function ci(e,t,n){return new jn(e,t,n)}function di(e){return Le(e,(function(e){return e.ui}))}function pi(e,t,n){var r={"":t};for(var o in e){var i=e[o];i.sourceId&&n[i.sourceId]&&(r[o]=n[i.sourceId])}return r}function fi(e){var t=e.options;return{eventUiSingleBase:Xt({display:t.eventDisplay,editable:t.editable,startEditable:t.eventStartEditable,durationEditable:t.eventDurationEditable,constraint:t.eventConstraint,overlap:"boolean"==typeof t.eventOverlap?t.eventOverlap:void 0,allow:t.eventAllow,backgroundColor:t.eventBackgroundColor,borderColor:t.eventBorderColor,textColor:t.eventTextColor,color:t.eventColor},e),selectionConfig:Xt({constraint:t.selectConstraint,overlap:"boolean"==typeof t.selectOverlap?t.selectOverlap:void 0,allow:t.selectAllow},e)}}function hi(e,t){for(var n=0,r=t.pluginHooks.isLoadingFuncs;n<r.length;n++){if((0,r[n])(e))return!0}return!1}function gi(e){return fr(e.options.businessHours,e)}function vi(e,t){for(var n in e)console.warn("Unknown option '"+n+"'"+(t?" for view '"+t+"'":""))}var mi=function(e){function t(t){var n=e.call(this,t)||this;return n.handleData=function(e){n.dataManager?n.setState(e):n.state=e},n.dataManager=new ai({optionOverrides:t.optionOverrides,calendarApi:t.calendarApi,onData:n.handleData}),n}return n(t,e),t.prototype.render=function(){return this.props.children(this.state)},t.prototype.componentDidUpdate=function(e){var t=this.props.optionOverrides;t!==e.optionOverrides&&this.dataManager.resetOptions(t)},t}(jr);var yi=function(e){this.timeZoneName=e},Si=function(){function e(e){this.component=e.component}return e.prototype.destroy=function(){},e}();function Ei(e,t){return{component:e,el:t.el,useEventCenter:null==t.useEventCenter||t.useEventCenter}}function Ci(e){var t;return(t={})[e.component.uid]=e,t}var bi={},Ri=function(){function e(e,t){this.emitter=new Lr}return e.prototype.destroy=function(){},e.prototype.setMirrorIsVisible=function(e){},e.prototype.setMirrorNeedsRevert=function(e){},e.prototype.setAutoScrollEnabled=function(e){},e}(),Di={},wi={startTime:Ke,duration:Ke,create:Boolean,sourceId:String};function Ti(e){var t=Lt(e,wi),n=t.refined,r=t.extra;return{startTime:n.startTime||null,duration:n.duration||null,create:null==n.create||n.create,sourceId:n.sourceId,leftoverProps:r}}var xi=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this,t=this.props.widgetGroups.map((function(t){return e.renderWidgetGroup(t)}));return Gr.apply(void 0,o(["div",{className:"fc-toolbar-chunk"}],t))},t.prototype.renderWidgetGroup=function(e){for(var t=this.props,n=this.context.theme,i=[],a=!0,s=0,l=e;s<l.length;s++){var u=l[s],c=u.buttonName,d=u.buttonClick,p=u.buttonText,f=u.buttonIcon;if("title"===c)a=!1,i.push(Gr("h2",{className:"fc-toolbar-title"},t.title));else{var h=f?{"aria-label":c}:{},g=["fc-"+c+"-button",n.getClass("button")];c===t.activeButton&&g.push(n.getClass("buttonActive"));var v=!t.isTodayEnabled&&"today"===c||!t.isPrevEnabled&&"prev"===c||!t.isNextEnabled&&"next"===c;i.push(Gr("button",r({disabled:v,className:g.join(" "),onClick:d,type:"button"},h),p||(f?Gr("span",{className:f}):"")))}}if(i.length>1){var m=a&&n.getClass("buttonGroup")||"";return Gr.apply(void 0,o(["div",{className:m}],i))}return i[0]},t}(no),Mi=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e,t,n=this.props,r=n.model,o=n.extraClassName,i=!1,a=r.center;return r.left?(i=!0,e=r.left):e=r.start,r.right?(i=!0,t=r.right):t=r.end,Gr("div",{className:[o||"","fc-toolbar",i?"fc-toolbar-ltr":""].join(" ")},this.renderSection("start",e||[]),this.renderSection("center",a||[]),this.renderSection("end",t||[]))},t.prototype.renderSection=function(e,t){var n=this.props;return Gr(xi,{key:e,widgetGroups:t,title:n.title,activeButton:n.activeButton,isTodayEnabled:n.isTodayEnabled,isPrevEnabled:n.isPrevEnabled,isNextEnabled:n.isNextEnabled})},t}(no),ki=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={availableWidth:null},t.handleEl=function(e){t.el=e,io(t.props.elRef,e),t.updateAvailableWidth()},t.handleResize=function(){t.updateAvailableWidth()},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.state,n=e.aspectRatio,r=["fc-view-harness",n||e.liquid||e.height?"fc-view-harness-active":"fc-view-harness-passive"],o="",i="";return n?null!==t.availableWidth?o=t.availableWidth/n:i=1/n*100+"%":o=e.height||"",Gr("div",{ref:this.handleEl,onClick:e.onClick,className:r.join(" "),style:{height:o,paddingBottom:i}},e.children)},t.prototype.componentDidMount=function(){this.context.addResizeHandler(this.handleResize)},t.prototype.componentWillUnmount=function(){this.context.removeResizeHandler(this.handleResize)},t.prototype.updateAvailableWidth=function(){this.el&&this.props.aspectRatio&&this.setState({availableWidth:this.el.offsetWidth})},t}(no),Pi=function(e){function t(t){var n=e.call(this,t)||this;return n.handleSegClick=function(e,t){var r=n.component,o=r.context,i=En(t);if(i&&r.isValidSegDownEl(e.target)){var a=V(e.target,".fc-event-forced-url"),s=a?a.querySelector("a[href]").href:"";o.emitter.trigger("eventClick",{el:t,event:new Kn(r.context,i.eventRange.def,i.eventRange.instance),jsEvent:e,view:o.viewApi}),s&&!e.defaultPrevented&&(window.location.href=s)}},n.destroy=J(t.el,"click",".fc-event",n.handleSegClick),n}return n(t,e),t}(Si),Ii=function(e){function t(t){var n,r,o,i,a,s=e.call(this,t)||this;return s.handleEventElRemove=function(e){e===s.currentSegEl&&s.handleSegLeave(null,s.currentSegEl)},s.handleSegEnter=function(e,t){En(t)&&(s.currentSegEl=t,s.triggerEvent("eventMouseEnter",e,t))},s.handleSegLeave=function(e,t){s.currentSegEl&&(s.currentSegEl=null,s.triggerEvent("eventMouseLeave",e,t))},s.removeHoverListeners=(n=t.el,r=".fc-event",o=s.handleSegEnter,i=s.handleSegLeave,J(n,"mouseover",r,(function(e,t){if(t!==a){a=t,o(e,t);var n=function(e){a=null,i(e,t),t.removeEventListener("mouseleave",n)};t.addEventListener("mouseleave",n)}}))),s}return n(t,e),t.prototype.destroy=function(){this.removeHoverListeners()},t.prototype.triggerEvent=function(e,t,n){var r=this.component,o=r.context,i=En(n);t&&!r.isValidSegDownEl(t.target)||o.emitter.trigger(e,{el:n,event:new Kn(o,i.eventRange.def,i.eventRange.instance),jsEvent:t,view:o.viewApi})},t}(Si),_i=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buildViewContext=pt(eo),t.buildViewPropTransformers=pt(Hi),t.buildToolbarProps=pt(Ni),t.handleNavLinkClick=K("a[data-navlink]",t._handleNavLinkClick.bind(t)),t.headerRef=Yr(),t.footerRef=Yr(),t.interactionsStore={},t.registerInteractiveComponent=function(e,n){var r=Ei(e,n),o=[Pi,Ii].concat(t.props.pluginHooks.componentInteractions).map((function(e){return new e(r)}));t.interactionsStore[e.uid]=o,bi[e.uid]=r},t.unregisterInteractiveComponent=function(e){for(var n=0,r=t.interactionsStore[e.uid];n<r.length;n++){r[n].destroy()}delete t.interactionsStore[e.uid],delete bi[e.uid]},t.resizeRunner=new ri((function(){t.props.emitter.trigger("_resize",!0),t.props.emitter.trigger("windowResize",{view:t.props.viewApi})})),t.handleWindowResize=function(e){var n=t.props.options;n.handleWindowResize&&e.target===window&&t.resizeRunner.request(n.windowResizeDelay)},t}return n(t,e),t.prototype.render=function(){var e,t=this.props,n=t.toolbarConfig,o=t.options,i=this.buildToolbarProps(t.viewSpec,t.dateProfile,t.dateProfileGenerator,t.currentDate,Zn(t.options.now,t.dateEnv),t.viewTitle),a=!1,s="";t.isHeightAuto||t.forPrint?s="":null!=o.height?a=!0:null!=o.contentHeight?s=o.contentHeight:e=Math.max(o.aspectRatio,.5);var l=this.buildViewContext(t.viewSpec,t.viewApi,t.options,t.dateProfileGenerator,t.dateEnv,t.theme,t.pluginHooks,t.dispatch,t.getCurrentData,t.emitter,t.calendarApi,this.registerInteractiveComponent,this.unregisterInteractiveComponent);return Gr(Qr.Provider,{value:l},n.headerToolbar&&Gr(Mi,r({ref:this.headerRef,extraClassName:"fc-header-toolbar",model:n.headerToolbar},i)),Gr(ki,{liquid:a,height:s,aspectRatio:e,onClick:this.handleNavLinkClick},this.renderView(t),this.buildAppendContent()),n.footerToolbar&&Gr(Mi,r({ref:this.footerRef,extraClassName:"fc-footer-toolbar",model:n.footerToolbar},i)))},t.prototype.componentDidMount=function(){var e=this.props;this.calendarInteractions=e.pluginHooks.calendarInteractions.map((function(t){return new t(e)})),window.addEventListener("resize",this.handleWindowResize);var t=e.pluginHooks.propSetHandlers;for(var n in t)t[n](e[n],e)},t.prototype.componentDidUpdate=function(e){var t=this.props,n=t.pluginHooks.propSetHandlers;for(var r in n)t[r]!==e[r]&&n[r](t[r],t)},t.prototype.componentWillUnmount=function(){window.removeEventListener("resize",this.handleWindowResize),this.resizeRunner.clear();for(var e=0,t=this.calendarInteractions;e<t.length;e++){t[e].destroy()}this.props.emitter.trigger("_unmount")},t.prototype._handleNavLinkClick=function(e,t){var n=this.props,r=n.dateEnv,o=n.options,i=n.calendarApi,a=t.getAttribute("data-navlink");a=a?JSON.parse(a):{};var s=r.createMarker(a.date),l=a.type,u="day"===l?o.navLinkDayClick:"week"===l?o.navLinkWeekClick:null;"function"==typeof u?u.call(i,r.toDate(s),e):("string"==typeof u&&(l=u),i.zoomTo(s,l))},t.prototype.buildAppendContent=function(){var e=this.props,t=e.pluginHooks.viewContainerAppends.map((function(t){return t(e)}));return Gr.apply(void 0,o([Zr,{}],t))},t.prototype.renderView=function(e){for(var t=e.pluginHooks,n=e.viewSpec,o={dateProfile:e.dateProfile,businessHours:e.businessHours,eventStore:e.renderableEventStore,eventUiBases:e.eventUiBases,dateSelection:e.dateSelection,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,isHeightAuto:e.isHeightAuto,forPrint:e.forPrint},i=0,a=this.buildViewPropTransformers(t.viewPropsTransformers);i<a.length;i++){var s=a[i];r(o,s.transform(o,e))}var l=n.component;return Gr(l,r({},o))},t}(to);function Ni(e,t,n,r,o,i){var a=n.build(o,void 0,!1),s=n.buildPrev(t,r,!1),l=n.buildNext(t,r,!1);return{title:i,activeButton:e.type,isTodayEnabled:a.isValid&&!vn(t.currentRange,o),isPrevEnabled:s.isValid,isNextEnabled:l.isValid}}function Hi(e){return e.map((function(e){return new e}))}var Oi=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={forPrint:!1},t.handleBeforePrint=function(){t.setState({forPrint:!0})},t.handleAfterPrint=function(){t.setState({forPrint:!1})},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=e.options,n=this.state.forPrint,r=n||"auto"===t.height||"auto"===t.contentHeight,o=r||null==t.height?"":t.height,i=["fc",n?"fc-media-print":"fc-media-screen","fc-direction-"+t.direction,e.theme.getClass("root")];return Er()||i.push("fc-liquid-hack"),e.children(i,o,r,n)},t.prototype.componentDidMount=function(){var e=this.props.emitter;e.on("_beforeprint",this.handleBeforePrint),e.on("_afterprint",this.handleAfterPrint)},t.prototype.componentWillUnmount=function(){var e=this.props.emitter;e.off("_beforeprint",this.handleBeforePrint),e.off("_afterprint",this.handleAfterPrint)},t}(no);function Wi(e,t){return kt(!e||t>10?{weekday:"short"}:t>1?{weekday:"short",month:"numeric",day:"numeric",omitCommas:!0}:{weekday:"long"})}var Ai="fc-col-header-cell";function Li(e){return e.text}var Ui=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.context,t=e.dateEnv,n=e.options,o=e.theme,i=e.viewApi,a=this.props,s=a.date,l=a.dateProfile,u=Dr(s,a.todayRange,null,l),c=[Ai].concat(wr(u,o)),d=t.format(s,a.dayHeaderFormat),p=n.navLinks&&!u.isDisabled&&a.colCnt>1?{"data-navlink":xr(s),tabIndex:0}:{},f=r(r(r({date:t.toDate(s),view:i},a.extraHookProps),{text:d}),u);return Gr(bo,{hookProps:f,classNames:n.dayHeaderClassNames,content:n.dayHeaderContent,defaultContent:Li,didMount:n.dayHeaderDidMount,willUnmount:n.dayHeaderWillUnmount},(function(e,t,n,o){return Gr("th",r({ref:e,className:c.concat(t).join(" "),"data-date":u.isDisabled?void 0:st(s),colSpan:a.colSpan},a.extraDataAttrs),Gr("div",{className:"fc-scrollgrid-sync-inner"},!u.isDisabled&&Gr("a",r({ref:n,className:["fc-col-header-cell-cushion",a.isSticky?"fc-sticky":""].join(" ")},p),o)))}))},t}(no),Bi=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.dateEnv,o=t.theme,i=t.viewApi,a=t.options,s=ye(new Date(2592e5),e.dow),l={dow:e.dow,isDisabled:!1,isFuture:!1,isPast:!1,isToday:!1,isOther:!1},u=[Ai].concat(wr(l,o),e.extraClassNames||[]),c=n.format(s,e.dayHeaderFormat),d=r(r(r(r({date:s},l),{view:i}),e.extraHookProps),{text:c});return Gr(bo,{hookProps:d,classNames:a.dayHeaderClassNames,content:a.dayHeaderContent,defaultContent:Li,didMount:a.dayHeaderDidMount,willUnmount:a.dayHeaderWillUnmount},(function(t,n,o,i){return Gr("th",r({ref:t,className:u.concat(n).join(" "),colSpan:e.colSpan},e.extraDataAttrs),Gr("div",{className:"fc-scrollgrid-sync-inner"},Gr("a",{className:["fc-col-header-cell-cushion",e.isSticky?"fc-sticky":""].join(" "),ref:o},i)))}))},t}(no),zi=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.initialNowDate=Zn(n.options.now,n.dateEnv),r.initialNowQueriedMs=(new Date).valueOf(),r.state=r.computeTiming().currentState,r}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.state;return e.children(t.nowDate,t.todayRange)},t.prototype.componentDidMount=function(){this.setTimeout()},t.prototype.componentDidUpdate=function(e){e.unit!==this.props.unit&&(this.clearTimeout(),this.setTimeout())},t.prototype.componentWillUnmount=function(){this.clearTimeout()},t.prototype.computeTiming=function(){var e=this.props,t=this.context,n=Se(this.initialNowDate,(new Date).valueOf()-this.initialNowQueriedMs),r=t.dateEnv.startOf(n,e.unit),o=t.dateEnv.add(r,Ke(1,e.unit)),i=o.valueOf()-n.valueOf();return i=Math.min(864e5,i),{currentState:{nowDate:r,todayRange:Vi(r)},nextState:{nowDate:o,todayRange:Vi(o)},waitMs:i}},t.prototype.setTimeout=function(){var e=this,t=this.computeTiming(),n=t.nextState,r=t.waitMs;this.timeoutId=setTimeout((function(){e.setState(n,(function(){e.setTimeout()}))}),r)},t.prototype.clearTimeout=function(){this.timeoutId&&clearTimeout(this.timeoutId)},t.contextType=Qr,t}(jr);function Vi(e){var t=we(e);return{start:t,end:ye(t,1)}}var Fi=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.createDayHeaderFormatter=pt(ji),t}return n(t,e),t.prototype.render=function(){var e=this.context,t=this.props,n=t.dates,r=t.dateProfile,o=t.datesRepDistinctDays,i=t.renderIntro,a=this.createDayHeaderFormatter(e.options.dayHeaderFormat,o,n.length);return Gr(zi,{unit:"day"},(function(e,t){return Gr("tr",null,i&&i("day"),n.map((function(e){return o?Gr(Ui,{key:e.toISOString(),date:e,dateProfile:r,todayRange:t,colCnt:n.length,dayHeaderFormat:a}):Gr(Bi,{key:e.getUTCDay(),dow:e.getUTCDay(),dayHeaderFormat:a})})))}))},t}(no);function ji(e,t,n){return e||Wi(t,n)}var Gi=function(){function e(e,t){for(var n=e.start,r=e.end,o=[],i=[],a=-1;n<r;)t.isHiddenDay(n)?o.push(a+.5):(a+=1,o.push(a),i.push(n)),n=ye(n,1);this.dates=i,this.indices=o,this.cnt=i.length}return e.prototype.sliceRange=function(e){var t=this.getDateDayIndex(e.start),n=this.getDateDayIndex(ye(e.end,-1)),r=Math.max(0,t),o=Math.min(this.cnt-1,n);return(r=Math.ceil(r))<=(o=Math.floor(o))?{firstIndex:r,lastIndex:o,isStart:t===r,isEnd:n===o}:null},e.prototype.getDateDayIndex=function(e){var t=this.indices,n=Math.floor(Ce(this.dates[0],e));return n<0?t[0]-1:n>=t.length?t[t.length-1]+1:t[n]},e}(),qi=function(){function e(e,t){var n,r,o,i=e.dates;if(t){for(r=i[0].getUTCDay(),n=1;n<i.length&&i[n].getUTCDay()!==r;n+=1);o=Math.ceil(i.length/n)}else o=1,n=i.length;this.rowCnt=o,this.colCnt=n,this.daySeries=e,this.cells=this.buildCells(),this.headerDates=this.buildHeaderDates()}return e.prototype.buildCells=function(){for(var e=[],t=0;t<this.rowCnt;t+=1){for(var n=[],r=0;r<this.colCnt;r+=1)n.push(this.buildCell(t,r));e.push(n)}return e},e.prototype.buildCell=function(e,t){var n=this.daySeries.dates[e*this.colCnt+t];return{key:n.toISOString(),date:n}},e.prototype.buildHeaderDates=function(){for(var e=[],t=0;t<this.colCnt;t+=1)e.push(this.cells[0][t].date);return e},e.prototype.sliceRange=function(e){var t=this.colCnt,n=this.daySeries.sliceRange(e),r=[];if(n)for(var o=n.firstIndex,i=n.lastIndex,a=o;a<=i;){var s=Math.floor(a/t),l=Math.min((s+1)*t,i+1);r.push({row:s,firstCol:a%t,lastCol:(l-1)%t,isStart:n.isStart&&a===o,isEnd:n.isEnd&&l-1===i}),a=l}return r},e}(),Yi=function(){function e(){this.sliceBusinessHours=pt(this._sliceBusinessHours),this.sliceDateSelection=pt(this._sliceDateSpan),this.sliceEventStore=pt(this._sliceEventStore),this.sliceEventDrag=pt(this._sliceInteraction),this.sliceEventResize=pt(this._sliceInteraction),this.forceDayIfListItem=!1}return e.prototype.sliceProps=function(e,t,n,r){for(var i=[],a=4;a<arguments.length;a++)i[a-4]=arguments[a];var s=e.eventUiBases,l=this.sliceEventStore.apply(this,o([e.eventStore,s,t,n],i));return{dateSelectionSegs:this.sliceDateSelection.apply(this,o([e.dateSelection,s,r],i)),businessHourSegs:this.sliceBusinessHours.apply(this,o([e.businessHours,t,n,r],i)),fgEventSegs:l.fg,bgEventSegs:l.bg,eventDrag:this.sliceEventDrag.apply(this,o([e.eventDrag,s,t,n],i)),eventResize:this.sliceEventResize.apply(this,o([e.eventResize,s,t,n],i)),eventSelection:e.eventSelection}},e.prototype.sliceNowDate=function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];return this._sliceDateSpan.apply(this,o([{range:{start:e,end:Se(e,1)},allDay:!1},{},t],n))},e.prototype._sliceBusinessHours=function(e,t,n,r){for(var i=[],a=4;a<arguments.length;a++)i[a-4]=arguments[a];return e?this._sliceEventStore.apply(this,o([qe(e,Zi(t,Boolean(n)),r),{},t,n],i)).bg:[]},e.prototype._sliceEventStore=function(e,t,n,r){for(var o=[],i=4;i<arguments.length;i++)o[i-4]=arguments[i];if(e){var a=mn(e,t,Zi(n,Boolean(r)),r);return{bg:this.sliceEventRanges(a.bg,o),fg:this.sliceEventRanges(a.fg,o)}}return{bg:[],fg:[]}},e.prototype._sliceInteraction=function(e,t,n,r){for(var o=[],i=4;i<arguments.length;i++)o[i-4]=arguments[i];if(!e)return null;var a=mn(e.mutatedEvents,t,Zi(n,Boolean(r)),r);return{segs:this.sliceEventRanges(a.fg,o),affectedInstances:e.affectedEvents.instances,isEvent:e.isEvent}},e.prototype._sliceDateSpan=function(e,t,n){for(var r=[],i=3;i<arguments.length;i++)r[i-3]=arguments[i];if(!e)return[];for(var a=An(e,t,n),s=this.sliceRange.apply(this,o([e.range],r)),l=0,u=s;l<u.length;l++){var c=u[l];c.eventRange=a}return s},e.prototype.sliceEventRanges=function(e,t){for(var n=[],r=0,o=e;r<o.length;r++){var i=o[r];n.push.apply(n,this.sliceEventRange(i,t))}return n},e.prototype.sliceEventRange=function(e,t){var n=e.range;this.forceDayIfListItem&&"list-item"===e.ui.display&&(n={start:n.start,end:ye(n.start,1)});for(var r=this.sliceRange.apply(this,o([n],t)),i=0,a=r;i<a.length;i++){var s=a[i];s.eventRange=e,s.isStart=e.isStart&&s.isStart,s.isEnd=e.isEnd&&s.isEnd}return r},e}();function Zi(e,t){var n=e.activeRange;return t?n:{start:Se(n.start,e.slotMinTime.milliseconds),end:Se(n.end,e.slotMaxTime.milliseconds-864e5)}}var Xi=/^(visible|hidden)$/,Ki=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.handleEl=function(e){t.el=e,io(t.props.elRef,e)},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=e.liquid,n=e.liquidIsAbsolute,r=t&&n,o=["fc-scroller"];return t&&(n?o.push("fc-scroller-liquid-absolute"):o.push("fc-scroller-liquid")),Gr("div",{ref:this.handleEl,className:o.join(" "),style:{overflowX:e.overflowX,overflowY:e.overflowY,left:r&&-(e.overcomeLeft||0)||"",right:r&&-(e.overcomeRight||0)||"",bottom:r&&-(e.overcomeBottom||0)||"",marginLeft:!r&&-(e.overcomeLeft||0)||"",marginRight:!r&&-(e.overcomeRight||0)||"",marginBottom:!r&&-(e.overcomeBottom||0)||"",maxHeight:e.maxHeight||""}},e.children)},t.prototype.needsXScrolling=function(){if(Xi.test(this.props.overflowX))return!1;for(var e=this.el,t=this.el.getBoundingClientRect().width-this.getYScrollbarWidth(),n=e.children,r=0;r<n.length;r+=1){if(n[r].getBoundingClientRect().width>t)return!0}return!1},t.prototype.needsYScrolling=function(){if(Xi.test(this.props.overflowY))return!1;for(var e=this.el,t=this.el.getBoundingClientRect().height-this.getXScrollbarWidth(),n=e.children,r=0;r<n.length;r+=1){if(n[r].getBoundingClientRect().height>t)return!0}return!1},t.prototype.getXScrollbarWidth=function(){return Xi.test(this.props.overflowX)?0:this.el.offsetHeight-this.el.clientHeight},t.prototype.getYScrollbarWidth=function(){return Xi.test(this.props.overflowY)?0:this.el.offsetWidth-this.el.clientWidth},t}(no),Ji=function(){function e(e){var t=this;this.masterCallback=e,this.currentMap={},this.depths={},this.callbackMap={},this.handleValue=function(e,n){var r=t,o=r.depths,i=r.currentMap,a=!1,s=!1;null!==e?(a=n in i,i[n]=e,o[n]=(o[n]||0)+1,s=!0):(o[n]-=1,o[n]||(delete i[n],delete t.callbackMap[n],a=!0)),t.masterCallback&&(a&&t.masterCallback(null,String(n)),s&&t.masterCallback(e,String(n)))}}return e.prototype.createRef=function(e){var t=this,n=this.callbackMap[e];return n||(n=this.callbackMap[e]=function(n){t.handleValue(n,String(e))}),n},e.prototype.collect=function(e,t,n){return Ge(this.currentMap,e,t,n)},e.prototype.getAll=function(){return Be(this.currentMap)},e}();function $i(e){for(var t=0,n=0,r=j(e,".fc-scrollgrid-shrink");n<r.length;n++){var o=r[n];t=Math.max(t,ge(o))}return Math.ceil(t)}function Qi(e,t){return e.liquid&&t.liquid}function ea(e,t){return null!=t.maxHeight||Qi(e,t)}function ta(e,t,n){var r=n.expandRows;return"function"==typeof t.content?t.content(n):Gr("table",{className:[t.tableClassName,e.syncRowHeights?"fc-scrollgrid-sync-table":""].join(" "),style:{minWidth:n.tableMinWidth,width:n.clientWidth,height:r?n.clientHeight:""}},n.tableColGroupNode,Gr("tbody",{},"function"==typeof t.rowContent?t.rowContent(n):t.rowContent))}function na(e,t){return dt(e,t,ze)}function ra(e,t){for(var n=[],r=0,i=e;r<i.length;r++)for(var a=i[r],s=a.span||1,l=0;l<s;l+=1)n.push(Gr("col",{style:{width:"shrink"===a.width?oa(t):a.width||"",minWidth:a.minWidth||""}}));return Gr.apply(void 0,o(["colgroup",{}],n))}function oa(e){return null==e?4:e}function ia(e){for(var t=0,n=e;t<n.length;t++){if("shrink"===n[t].width)return!0}return!1}function aa(e,t){var n=["fc-scrollgrid",t.theme.getClass("table")];return e&&n.push("fc-scrollgrid-liquid"),n}function sa(e,t){var n=["fc-scrollgrid-section","fc-scrollgrid-section-"+e.type,e.className];return t&&e.liquid&&null==e.maxHeight&&n.push("fc-scrollgrid-section-liquid"),e.isSticky&&n.push("fc-scrollgrid-section-sticky"),n}function la(e){return Gr("div",{className:"fc-scrollgrid-sticky-shim",style:{width:e.clientWidth,minWidth:e.tableMinWidth}})}function ua(e){var t=e.stickyHeaderDates;return null!=t&&"auto"!==t||(t="auto"===e.height||"auto"===e.viewHeight),t}function ca(e){var t=e.stickyFooterScrollbar;return null!=t&&"auto"!==t||(t="auto"===e.height||"auto"===e.viewHeight),t}var da=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.processCols=pt((function(e){return e}),na),t.renderMicroColGroup=pt(ra),t.scrollerRefs=new Ji,t.scrollerElRefs=new Ji(t._handleScrollerEl.bind(t)),t.state={shrinkWidth:null,forceYScrollbars:!1,scrollerClientWidths:{},scrollerClientHeights:{}},t.handleSizing=function(){t.setState(r({shrinkWidth:t.computeShrinkWidth()},t.computeScrollerDims()))},t}return n(t,e),t.prototype.render=function(){for(var e,t=this.props,n=this.state,r=this.context,i=t.sections||[],a=this.processCols(t.cols),s=this.renderMicroColGroup(a,n.shrinkWidth),l=aa(t.liquid,r),u=i.length,c=0,d=[],p=[],f=[];c<u&&"header"===(e=i[c]).type;)d.push(this.renderSection(e,s)),c+=1;for(;c<u&&"body"===(e=i[c]).type;)p.push(this.renderSection(e,s)),c+=1;for(;c<u&&"footer"===(e=i[c]).type;)f.push(this.renderSection(e,s)),c+=1;var h=!Er();return Gr("table",{className:l.join(" "),style:{height:t.height}},Boolean(!h&&d.length)&&Gr.apply(void 0,o(["thead",{}],d)),Boolean(!h&&p.length)&&Gr.apply(void 0,o(["tbody",{}],p)),Boolean(!h&&f.length)&&Gr.apply(void 0,o(["tfoot",{}],f)),h&&Gr.apply(void 0,o(["tbody",{}],d,p,f)))},t.prototype.renderSection=function(e,t){return"outerContent"in e?Gr(Zr,{key:e.key},e.outerContent):Gr("tr",{key:e.key,className:sa(e,this.props.liquid).join(" ")},this.renderChunkTd(e,t,e.chunk))},t.prototype.renderChunkTd=function(e,t,n){if("outerContent"in n)return n.outerContent;var r=this.props,o=this.state,i=o.forceYScrollbars,a=o.scrollerClientWidths,s=o.scrollerClientHeights,l=ea(r,e),u=Qi(r,e),c=r.liquid?i?"scroll":l?"auto":"hidden":"visible",d=e.key,p=ta(e,n,{tableColGroupNode:t,tableMinWidth:"",clientWidth:void 0!==a[d]?a[d]:null,clientHeight:void 0!==s[d]?s[d]:null,expandRows:e.expandRows,syncRowHeights:!1,rowSyncHeights:[],reportRowHeightChange:function(){}});return Gr("td",{ref:n.elRef},Gr("div",{className:"fc-scroller-harness"+(u?" fc-scroller-harness-liquid":"")},Gr(Ki,{ref:this.scrollerRefs.createRef(d),elRef:this.scrollerElRefs.createRef(d),overflowY:c,overflowX:r.liquid?"hidden":"visible",maxHeight:e.maxHeight,liquid:u,liquidIsAbsolute:!0},p)))},t.prototype._handleScrollerEl=function(e,t){var n=function(e,t){for(var n=0,r=e;n<r.length;n++){var o=r[n];if(o.key===t)return o}return null}(this.props.sections,t);n&&io(n.chunk.scrollerElRef,e)},t.prototype.componentDidMount=function(){this.handleSizing(),this.context.addResizeHandler(this.handleSizing)},t.prototype.componentDidUpdate=function(){this.handleSizing()},t.prototype.componentWillUnmount=function(){this.context.removeResizeHandler(this.handleSizing)},t.prototype.computeShrinkWidth=function(){return ia(this.props.cols)?$i(this.scrollerElRefs.getAll()):0},t.prototype.computeScrollerDims=function(){var e=Ir(),t=this.scrollerRefs,n=this.scrollerElRefs,r=!1,o={},i={};for(var a in t.currentMap){var s=t.currentMap[a];if(s&&s.needsYScrolling()){r=!0;break}}for(var l=0,u=this.props.sections;l<u.length;l++){a=u[l].key;var c=n.currentMap[a];if(c){var d=c.parentNode;o[a]=Math.floor(d.getBoundingClientRect().width-(r?e.y:0)),i[a]=Math.floor(d.getBoundingClientRect().height)}}return{forceYScrollbars:r,scrollerClientWidths:o,scrollerClientHeights:i}},t}(no);da.addStateEquality({scrollerClientWidths:ze,scrollerClientHeights:ze});var pa=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.elRef=Yr(),t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options,r=e.seg,o=r.eventRange,i=o.ui,a={event:new Kn(t,o.def,o.instance),view:t.viewApi,timeText:e.timeText,textColor:i.textColor,backgroundColor:i.backgroundColor,borderColor:i.borderColor,isDraggable:!e.disableDragging&&wn(r,t),isStartResizable:!e.disableResizing&&Tn(r,t),isEndResizable:!e.disableResizing&&xn(r),isMirror:Boolean(e.isDragging||e.isResizing||e.isDateSelecting),isStart:Boolean(r.isStart),isEnd:Boolean(r.isEnd),isPast:Boolean(e.isPast),isFuture:Boolean(e.isFuture),isToday:Boolean(e.isToday),isSelected:Boolean(e.isSelected),isDragging:Boolean(e.isDragging),isResizing:Boolean(e.isResizing)},s=Pn(a).concat(i.classNames);return Gr(bo,{hookProps:a,classNames:n.eventClassNames,content:n.eventContent,defaultContent:e.defaultContent,didMount:n.eventDidMount,willUnmount:n.eventWillUnmount,elRef:this.elRef},(function(t,n,r,o){return e.children(t,s.concat(n),r,o,a)}))},t.prototype.componentDidMount=function(){Sn(this.elRef.current,this.props.seg)},t.prototype.componentDidUpdate=function(e){var t=this.props.seg;t!==e.seg&&Sn(this.elRef.current,t)},t}(no),fa=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=e.seg,o=t.options.eventTimeFormat||e.defaultTimeFormat,i=Mn(n,o,t,e.defaultDisplayEventTime,e.defaultDisplayEventEnd);return Gr(pa,{seg:n,timeText:i,disableDragging:e.disableDragging,disableResizing:e.disableResizing,defaultContent:e.defaultContent||ha,isDragging:e.isDragging,isResizing:e.isResizing,isDateSelecting:e.isDateSelecting,isSelected:e.isSelected,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday},(function(t,o,i,a,s){return Gr("a",r({className:e.extraClassNames.concat(o).join(" "),style:{borderColor:s.borderColor,backgroundColor:s.backgroundColor},ref:t},function(e){var t=e.eventRange.def.url;return t?{href:t}:{}}(n)),Gr("div",{className:"fc-event-main",ref:i,style:{color:s.textColor}},a),s.isStartResizable&&Gr("div",{className:"fc-event-resizer fc-event-resizer-start"}),s.isEndResizable&&Gr("div",{className:"fc-event-resizer fc-event-resizer-end"}))}))},t}(no);function ha(e){return Gr("div",{className:"fc-event-main-frame"},e.timeText&&Gr("div",{className:"fc-event-time"},e.timeText),Gr("div",{className:"fc-event-title-container"},Gr("div",{className:"fc-event-title fc-sticky"},e.event.title||Gr(Zr,null," "))))}var ga=function(e){return Gr(Qr.Consumer,null,(function(t){var n=t.options,r={isAxis:e.isAxis,date:t.dateEnv.toDate(e.date),view:t.viewApi};return Gr(bo,{hookProps:r,classNames:n.nowIndicatorClassNames,content:n.nowIndicatorContent,didMount:n.nowIndicatorDidMount,willUnmount:n.nowIndicatorWillUnmount},e.children)}))},va=kt({day:"numeric"}),ma=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options,r=ya({date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,showDayNumber:e.showDayNumber,extraProps:e.extraHookProps,viewApi:t.viewApi,dateEnv:t.dateEnv});return Gr(Do,{hookProps:r,content:n.dayCellContent,defaultContent:e.defaultContent},e.children)},t}(no);function ya(e){var t=e.date,n=e.dateEnv,o=Dr(t,e.todayRange,null,e.dateProfile);return r(r(r({date:n.toDate(t),view:e.viewApi},o),{dayNumberText:e.showDayNumber?n.format(t,va):""}),e.extraProps)}var Sa=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.refineHookProps=ft(ya),t.normalizeClassNames=xo(),t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options,r=this.refineHookProps({date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,showDayNumber:e.showDayNumber,extraProps:e.extraHookProps,viewApi:t.viewApi,dateEnv:t.dateEnv}),o=wr(r,t.theme).concat(r.isDisabled?[]:this.normalizeClassNames(n.dayCellClassNames,r)),i=r.isDisabled?{}:{"data-date":st(e.date)};return Gr(To,{hookProps:r,didMount:n.dayCellDidMount,willUnmount:n.dayCellWillUnmount,elRef:e.elRef},(function(t){return e.children(t,o,i,r.isDisabled)}))},t}(no);function Ea(e){return Gr("div",{className:"fc-"+e})}var Ca=function(e){return Gr(pa,{defaultContent:ba,seg:e.seg,timeText:"",disableDragging:!0,disableResizing:!0,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:!1,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday},(function(e,t,n,r,o){return Gr("div",{ref:e,className:["fc-bg-event"].concat(t).join(" "),style:{backgroundColor:o.backgroundColor}},r)}))};function ba(e){return e.event.title&&Gr("div",{className:"fc-event-title"},e.event.title)}var Ra=function(e){return Gr(Qr.Consumer,null,(function(t){var n=t.dateEnv,r=t.options,o=e.date,i=r.weekNumberFormat||e.defaultFormat,a=n.computeWeekNumber(o),s=n.format(o,i);return Gr(bo,{hookProps:{num:a,text:s,date:o},classNames:r.weekNumberClassNames,content:r.weekNumberContent,defaultContent:Da,didMount:r.weekNumberDidMount,willUnmount:r.weekNumberWillUnmount},e.children)}))};function Da(e){return e.text}var wa=function(e){function t(t,n){void 0===n&&(n={});var o=e.call(this)||this;return o.isRendering=!1,o.isRendered=!1,o.currentClassNames=[],o.customContentRenderId=0,o.handleAction=function(e){switch(e.type){case"SET_EVENT_DRAG":case"SET_EVENT_RESIZE":o.renderRunner.tryDrain()}},o.handleData=function(e){o.currentData=e,o.renderRunner.request(e.calendarOptions.rerenderDelay)},o.handleRenderRequest=function(){if(o.isRendering){o.isRendered=!0;var e=o.currentData;qr(Gr(Oi,{options:e.calendarOptions,theme:e.theme,emitter:e.emitter},(function(t,n,i,a){return o.setClassNames(t),o.setHeight(n),Gr(Ro.Provider,{value:o.customContentRenderId},Gr(_i,r({isHeightAuto:i,forPrint:a},e)))})),o.el)}else o.isRendered&&(o.isRendered=!1,Jr(o.el),o.setClassNames([]),o.setHeight(""));Kr()},o.el=t,o.renderRunner=new ri(o.handleRenderRequest),new ai({optionOverrides:n,calendarApi:o,onAction:o.handleAction,onData:o.handleData}),o}return n(t,e),Object.defineProperty(t.prototype,"view",{get:function(){return this.currentData.viewApi},enumerable:!1,configurable:!0}),t.prototype.render=function(){var e=this.isRendering;e?this.customContentRenderId+=1:this.isRendering=!0,this.renderRunner.request(),e&&this.updateSize()},t.prototype.destroy=function(){this.isRendering&&(this.isRendering=!1,this.renderRunner.request())},t.prototype.updateSize=function(){e.prototype.updateSize.call(this),Kr()},t.prototype.batchRendering=function(e){this.renderRunner.pause("batchRendering"),e(),this.renderRunner.resume("batchRendering")},t.prototype.pauseRendering=function(){this.renderRunner.pause("pauseRendering")},t.prototype.resumeRendering=function(){this.renderRunner.resume("pauseRendering",!0)},t.prototype.resetOptions=function(e,t){this.currentDataManager.resetOptions(e,t)},t.prototype.setClassNames=function(e){if(!dt(e,this.currentClassNames)){for(var t=this.el.classList,n=0,r=this.currentClassNames;n<r.length;n++){var o=r[n];t.remove(o)}for(var i=0,a=e;i<a.length;i++){o=a[i];t.add(o)}this.currentClassNames=e}},t.prototype.setHeight=function(e){Z(this.el,"height",e)},t}(Xn);Di.touchMouseIgnoreWait=500;var Ta=0,xa=0,Ma=!1,ka=function(){function e(e){var t=this;this.subjectEl=null,this.selector="",this.handleSelector="",this.shouldIgnoreMove=!1,this.shouldWatchScroll=!0,this.isDragging=!1,this.isTouchDragging=!1,this.wasTouchScroll=!1,this.handleMouseDown=function(e){if(!t.shouldIgnoreMouse()&&function(e){return 0===e.button&&!e.ctrlKey}(e)&&t.tryStart(e)){var n=t.createEventFromMouse(e,!0);t.emitter.trigger("pointerdown",n),t.initScrollWatch(n),t.shouldIgnoreMove||document.addEventListener("mousemove",t.handleMouseMove),document.addEventListener("mouseup",t.handleMouseUp)}},this.handleMouseMove=function(e){var n=t.createEventFromMouse(e);t.recordCoords(n),t.emitter.trigger("pointermove",n)},this.handleMouseUp=function(e){document.removeEventListener("mousemove",t.handleMouseMove),document.removeEventListener("mouseup",t.handleMouseUp),t.emitter.trigger("pointerup",t.createEventFromMouse(e)),t.cleanup()},this.handleTouchStart=function(e){if(t.tryStart(e)){t.isTouchDragging=!0;var n=t.createEventFromTouch(e,!0);t.emitter.trigger("pointerdown",n),t.initScrollWatch(n);var r=e.target;t.shouldIgnoreMove||r.addEventListener("touchmove",t.handleTouchMove),r.addEventListener("touchend",t.handleTouchEnd),r.addEventListener("touchcancel",t.handleTouchEnd),window.addEventListener("scroll",t.handleTouchScroll,!0)}},this.handleTouchMove=function(e){var n=t.createEventFromTouch(e);t.recordCoords(n),t.emitter.trigger("pointermove",n)},this.handleTouchEnd=function(e){if(t.isDragging){var n=e.target;n.removeEventListener("touchmove",t.handleTouchMove),n.removeEventListener("touchend",t.handleTouchEnd),n.removeEventListener("touchcancel",t.handleTouchEnd),window.removeEventListener("scroll",t.handleTouchScroll,!0),t.emitter.trigger("pointerup",t.createEventFromTouch(e)),t.cleanup(),t.isTouchDragging=!1,Ta+=1,setTimeout((function(){Ta-=1}),Di.touchMouseIgnoreWait)}},this.handleTouchScroll=function(){t.wasTouchScroll=!0},this.handleScroll=function(e){if(!t.shouldIgnoreMove){var n=window.pageXOffset-t.prevScrollX+t.prevPageX,r=window.pageYOffset-t.prevScrollY+t.prevPageY;t.emitter.trigger("pointermove",{origEvent:e,isTouch:t.isTouchDragging,subjectEl:t.subjectEl,pageX:n,pageY:r,deltaX:n-t.origPageX,deltaY:r-t.origPageY})}},this.containerEl=e,this.emitter=new Lr,e.addEventListener("mousedown",this.handleMouseDown),e.addEventListener("touchstart",this.handleTouchStart,{passive:!0}),1===(xa+=1)&&window.addEventListener("touchmove",Pa,{passive:!1})}return e.prototype.destroy=function(){this.containerEl.removeEventListener("mousedown",this.handleMouseDown),this.containerEl.removeEventListener("touchstart",this.handleTouchStart,{passive:!0}),(xa-=1)||window.removeEventListener("touchmove",Pa,{passive:!1})},e.prototype.tryStart=function(e){var t=this.querySubjectEl(e),n=e.target;return!(!t||this.handleSelector&&!V(n,this.handleSelector))&&(this.subjectEl=t,this.isDragging=!0,this.wasTouchScroll=!1,!0)},e.prototype.cleanup=function(){Ma=!1,this.isDragging=!1,this.subjectEl=null,this.destroyScrollWatch()},e.prototype.querySubjectEl=function(e){return this.selector?V(e.target,this.selector):this.containerEl},e.prototype.shouldIgnoreMouse=function(){return Ta||this.isTouchDragging},e.prototype.cancelTouchScroll=function(){this.isDragging&&(Ma=!0)},e.prototype.initScrollWatch=function(e){this.shouldWatchScroll&&(this.recordCoords(e),window.addEventListener("scroll",this.handleScroll,!0))},e.prototype.recordCoords=function(e){this.shouldWatchScroll&&(this.prevPageX=e.pageX,this.prevPageY=e.pageY,this.prevScrollX=window.pageXOffset,this.prevScrollY=window.pageYOffset)},e.prototype.destroyScrollWatch=function(){this.shouldWatchScroll&&window.removeEventListener("scroll",this.handleScroll,!0)},e.prototype.createEventFromMouse=function(e,t){var n=0,r=0;return t?(this.origPageX=e.pageX,this.origPageY=e.pageY):(n=e.pageX-this.origPageX,r=e.pageY-this.origPageY),{origEvent:e,isTouch:!1,subjectEl:this.subjectEl,pageX:e.pageX,pageY:e.pageY,deltaX:n,deltaY:r}},e.prototype.createEventFromTouch=function(e,t){var n,r,o=e.touches,i=0,a=0;return o&&o.length?(n=o[0].pageX,r=o[0].pageY):(n=e.pageX,r=e.pageY),t?(this.origPageX=n,this.origPageY=r):(i=n-this.origPageX,a=r-this.origPageY),{origEvent:e,isTouch:!0,subjectEl:this.subjectEl,pageX:n,pageY:r,deltaX:i,deltaY:a}},e}();function Pa(e){Ma&&e.preventDefault()}var Ia=function(){function e(){this.isVisible=!1,this.sourceEl=null,this.mirrorEl=null,this.sourceElRect=null,this.parentNode=document.body,this.zIndex=9999,this.revertDuration=0}return e.prototype.start=function(e,t,n){this.sourceEl=e,this.sourceElRect=this.sourceEl.getBoundingClientRect(),this.origScreenX=t-window.pageXOffset,this.origScreenY=n-window.pageYOffset,this.deltaX=0,this.deltaY=0,this.updateElPosition()},e.prototype.handleMove=function(e,t){this.deltaX=e-window.pageXOffset-this.origScreenX,this.deltaY=t-window.pageYOffset-this.origScreenY,this.updateElPosition()},e.prototype.setIsVisible=function(e){e?this.isVisible||(this.mirrorEl&&(this.mirrorEl.style.display=""),this.isVisible=e,this.updateElPosition()):this.isVisible&&(this.mirrorEl&&(this.mirrorEl.style.display="none"),this.isVisible=e)},e.prototype.stop=function(e,t){var n=this,r=function(){n.cleanup(),t()};e&&this.mirrorEl&&this.isVisible&&this.revertDuration&&(this.deltaX||this.deltaY)?this.doRevertAnimation(r,this.revertDuration):setTimeout(r,0)},e.prototype.doRevertAnimation=function(e,t){var n=this.mirrorEl,r=this.sourceEl.getBoundingClientRect();n.style.transition="top "+t+"ms,left "+t+"ms",Y(n,{left:r.left,top:r.top}),Q(n,(function(){n.style.transition="",e()}))},e.prototype.cleanup=function(){this.mirrorEl&&(z(this.mirrorEl),this.mirrorEl=null),this.sourceEl=null},e.prototype.updateElPosition=function(){this.sourceEl&&this.isVisible&&Y(this.getMirrorEl(),{left:this.sourceElRect.left+this.deltaX,top:this.sourceElRect.top+this.deltaY})},e.prototype.getMirrorEl=function(){var e=this.sourceElRect,t=this.mirrorEl;return t||((t=this.mirrorEl=this.sourceEl.cloneNode(!0)).classList.add("fc-unselectable"),t.classList.add("fc-event-dragging"),Y(t,{position:"fixed",zIndex:this.zIndex,visibility:"",boxSizing:"border-box",width:e.right-e.left,height:e.bottom-e.top,right:"auto",bottom:"auto",margin:0}),this.parentNode.appendChild(t)),t},e}(),_a=function(e){function t(t,n){var r=e.call(this)||this;return r.handleScroll=function(){r.scrollTop=r.scrollController.getScrollTop(),r.scrollLeft=r.scrollController.getScrollLeft(),r.handleScrollChange()},r.scrollController=t,r.doesListening=n,r.scrollTop=r.origScrollTop=t.getScrollTop(),r.scrollLeft=r.origScrollLeft=t.getScrollLeft(),r.scrollWidth=t.getScrollWidth(),r.scrollHeight=t.getScrollHeight(),r.clientWidth=t.getClientWidth(),r.clientHeight=t.getClientHeight(),r.clientRect=r.computeClientRect(),r.doesListening&&r.getEventTarget().addEventListener("scroll",r.handleScroll),r}return n(t,e),t.prototype.destroy=function(){this.doesListening&&this.getEventTarget().removeEventListener("scroll",this.handleScroll)},t.prototype.getScrollTop=function(){return this.scrollTop},t.prototype.getScrollLeft=function(){return this.scrollLeft},t.prototype.setScrollTop=function(e){this.scrollController.setScrollTop(e),this.doesListening||(this.scrollTop=Math.max(Math.min(e,this.getMaxScrollTop()),0),this.handleScrollChange())},t.prototype.setScrollLeft=function(e){this.scrollController.setScrollLeft(e),this.doesListening||(this.scrollLeft=Math.max(Math.min(e,this.getMaxScrollLeft()),0),this.handleScrollChange())},t.prototype.getClientWidth=function(){return this.clientWidth},t.prototype.getClientHeight=function(){return this.clientHeight},t.prototype.getScrollWidth=function(){return this.scrollWidth},t.prototype.getScrollHeight=function(){return this.scrollHeight},t.prototype.handleScrollChange=function(){},t}(Br),Na=function(e){function t(t,n){return e.call(this,new zr(t),n)||this}return n(t,e),t.prototype.getEventTarget=function(){return this.scrollController.el},t.prototype.computeClientRect=function(){return Hr(this.scrollController.el)},t}(_a),Ha=function(e){function t(t){return e.call(this,new Vr,t)||this}return n(t,e),t.prototype.getEventTarget=function(){return window},t.prototype.computeClientRect=function(){return{left:this.scrollLeft,right:this.scrollLeft+this.clientWidth,top:this.scrollTop,bottom:this.scrollTop+this.clientHeight}},t.prototype.handleScrollChange=function(){this.clientRect=this.computeClientRect()},t}(_a),Oa="function"==typeof performance?performance.now:Date.now,Wa=function(){function e(){var e=this;this.isEnabled=!0,this.scrollQuery=[window,".fc-scroller"],this.edgeThreshold=50,this.maxVelocity=300,this.pointerScreenX=null,this.pointerScreenY=null,this.isAnimating=!1,this.scrollCaches=null,this.everMovedUp=!1,this.everMovedDown=!1,this.everMovedLeft=!1,this.everMovedRight=!1,this.animate=function(){if(e.isAnimating){var t=e.computeBestEdge(e.pointerScreenX+window.pageXOffset,e.pointerScreenY+window.pageYOffset);if(t){var n=Oa();e.handleSide(t,(n-e.msSinceRequest)/1e3),e.requestAnimation(n)}else e.isAnimating=!1}}}return e.prototype.start=function(e,t){this.isEnabled&&(this.scrollCaches=this.buildCaches(),this.pointerScreenX=null,this.pointerScreenY=null,this.everMovedUp=!1,this.everMovedDown=!1,this.everMovedLeft=!1,this.everMovedRight=!1,this.handleMove(e,t))},e.prototype.handleMove=function(e,t){if(this.isEnabled){var n=e-window.pageXOffset,r=t-window.pageYOffset,o=null===this.pointerScreenY?0:r-this.pointerScreenY,i=null===this.pointerScreenX?0:n-this.pointerScreenX;o<0?this.everMovedUp=!0:o>0&&(this.everMovedDown=!0),i<0?this.everMovedLeft=!0:i>0&&(this.everMovedRight=!0),this.pointerScreenX=n,this.pointerScreenY=r,this.isAnimating||(this.isAnimating=!0,this.requestAnimation(Oa()))}},e.prototype.stop=function(){if(this.isEnabled){this.isAnimating=!1;for(var e=0,t=this.scrollCaches;e<t.length;e++){t[e].destroy()}this.scrollCaches=null}},e.prototype.requestAnimation=function(e){this.msSinceRequest=e,requestAnimationFrame(this.animate)},e.prototype.handleSide=function(e,t){var n=e.scrollCache,r=this.edgeThreshold,o=r-e.distance,i=o*o/(r*r)*this.maxVelocity*t,a=1;switch(e.name){case"left":a=-1;case"right":n.setScrollLeft(n.getScrollLeft()+i*a);break;case"top":a=-1;case"bottom":n.setScrollTop(n.getScrollTop()+i*a)}},e.prototype.computeBestEdge=function(e,t){for(var n=this.edgeThreshold,r=null,o=0,i=this.scrollCaches;o<i.length;o++){var a=i[o],s=a.clientRect,l=e-s.left,u=s.right-e,c=t-s.top,d=s.bottom-t;l>=0&&u>=0&&c>=0&&d>=0&&(c<=n&&this.everMovedUp&&a.canScrollUp()&&(!r||r.distance>c)&&(r={scrollCache:a,name:"top",distance:c}),d<=n&&this.everMovedDown&&a.canScrollDown()&&(!r||r.distance>d)&&(r={scrollCache:a,name:"bottom",distance:d}),l<=n&&this.everMovedLeft&&a.canScrollLeft()&&(!r||r.distance>l)&&(r={scrollCache:a,name:"left",distance:l}),u<=n&&this.everMovedRight&&a.canScrollRight()&&(!r||r.distance>u)&&(r={scrollCache:a,name:"right",distance:u}))}return r},e.prototype.buildCaches=function(){return this.queryScrollEls().map((function(e){return e===window?new Ha(!1):new Na(e,!1)}))},e.prototype.queryScrollEls=function(){for(var e=[],t=0,n=this.scrollQuery;t<n.length;t++){var r=n[t];"object"==typeof r?e.push(r):e.push.apply(e,Array.prototype.slice.call(document.querySelectorAll(r)))}return e},e}(),Aa=function(e){function t(t,n){var r=e.call(this,t)||this;r.delay=null,r.minDistance=0,r.touchScrollAllowed=!0,r.mirrorNeedsRevert=!1,r.isInteracting=!1,r.isDragging=!1,r.isDelayEnded=!1,r.isDistanceSurpassed=!1,r.delayTimeoutId=null,r.onPointerDown=function(e){r.isDragging||(r.isInteracting=!0,r.isDelayEnded=!1,r.isDistanceSurpassed=!1,oe(document.body),ae(document.body),e.isTouch||e.origEvent.preventDefault(),r.emitter.trigger("pointerdown",e),r.isInteracting&&!r.pointer.shouldIgnoreMove&&(r.mirror.setIsVisible(!1),r.mirror.start(e.subjectEl,e.pageX,e.pageY),r.startDelay(e),r.minDistance||r.handleDistanceSurpassed(e)))},r.onPointerMove=function(e){if(r.isInteracting){if(r.emitter.trigger("pointermove",e),!r.isDistanceSurpassed){var t=r.minDistance,n=e.deltaX,o=e.deltaY;n*n+o*o>=t*t&&r.handleDistanceSurpassed(e)}r.isDragging&&("scroll"!==e.origEvent.type&&(r.mirror.handleMove(e.pageX,e.pageY),r.autoScroller.handleMove(e.pageX,e.pageY)),r.emitter.trigger("dragmove",e))}},r.onPointerUp=function(e){r.isInteracting&&(r.isInteracting=!1,ie(document.body),se(document.body),r.emitter.trigger("pointerup",e),r.isDragging&&(r.autoScroller.stop(),r.tryStopDrag(e)),r.delayTimeoutId&&(clearTimeout(r.delayTimeoutId),r.delayTimeoutId=null))};var o=r.pointer=new ka(t);return o.emitter.on("pointerdown",r.onPointerDown),o.emitter.on("pointermove",r.onPointerMove),o.emitter.on("pointerup",r.onPointerUp),n&&(o.selector=n),r.mirror=new Ia,r.autoScroller=new Wa,r}return n(t,e),t.prototype.destroy=function(){this.pointer.destroy(),this.onPointerUp({})},t.prototype.startDelay=function(e){var t=this;"number"==typeof this.delay?this.delayTimeoutId=setTimeout((function(){t.delayTimeoutId=null,t.handleDelayEnd(e)}),this.delay):this.handleDelayEnd(e)},t.prototype.handleDelayEnd=function(e){this.isDelayEnded=!0,this.tryStartDrag(e)},t.prototype.handleDistanceSurpassed=function(e){this.isDistanceSurpassed=!0,this.tryStartDrag(e)},t.prototype.tryStartDrag=function(e){this.isDelayEnded&&this.isDistanceSurpassed&&(this.pointer.wasTouchScroll&&!this.touchScrollAllowed||(this.isDragging=!0,this.mirrorNeedsRevert=!1,this.autoScroller.start(e.pageX,e.pageY),this.emitter.trigger("dragstart",e),!1===this.touchScrollAllowed&&this.pointer.cancelTouchScroll()))},t.prototype.tryStopDrag=function(e){this.mirror.stop(this.mirrorNeedsRevert,this.stopDrag.bind(this,e))},t.prototype.stopDrag=function(e){this.isDragging=!1,this.emitter.trigger("dragend",e)},t.prototype.setIgnoreMove=function(e){this.pointer.shouldIgnoreMove=e},t.prototype.setMirrorIsVisible=function(e){this.mirror.setIsVisible(e)},t.prototype.setMirrorNeedsRevert=function(e){this.mirrorNeedsRevert=e},t.prototype.setAutoScrollEnabled=function(e){this.autoScroller.isEnabled=e},t}(Ri),La=function(){function e(e){this.origRect=Or(e),this.scrollCaches=Wr(e).map((function(e){return new Na(e,!0)}))}return e.prototype.destroy=function(){for(var e=0,t=this.scrollCaches;e<t.length;e++){t[e].destroy()}},e.prototype.computeLeft=function(){for(var e=this.origRect.left,t=0,n=this.scrollCaches;t<n.length;t++){var r=n[t];e+=r.origScrollLeft-r.getScrollLeft()}return e},e.prototype.computeTop=function(){for(var e=this.origRect.top,t=0,n=this.scrollCaches;t<n.length;t++){var r=n[t];e+=r.origScrollTop-r.getScrollTop()}return e},e.prototype.isWithinClipping=function(e,t){for(var n,r,o={left:e,top:t},i=0,a=this.scrollCaches;i<a.length;i++){var s=a[i];if(n=s.getEventTarget(),r=void 0,"HTML"!==(r=n.tagName)&&"BODY"!==r&&!hr(o,s.clientRect))return!1}return!0},e}();var Ua=function(){function e(e,t){var n=this;this.useSubjectCenter=!1,this.requireInitial=!0,this.initialHit=null,this.movingHit=null,this.finalHit=null,this.handlePointerDown=function(e){var t=n.dragging;n.initialHit=null,n.movingHit=null,n.finalHit=null,n.prepareHits(),n.processFirstCoord(e),n.initialHit||!n.requireInitial?(t.setIgnoreMove(!1),n.emitter.trigger("pointerdown",e)):t.setIgnoreMove(!0)},this.handleDragStart=function(e){n.emitter.trigger("dragstart",e),n.handleMove(e,!0)},this.handleDragMove=function(e){n.emitter.trigger("dragmove",e),n.handleMove(e)},this.handlePointerUp=function(e){n.releaseHits(),n.emitter.trigger("pointerup",e)},this.handleDragEnd=function(e){n.movingHit&&n.emitter.trigger("hitupdate",null,!0,e),n.finalHit=n.movingHit,n.movingHit=null,n.emitter.trigger("dragend",e)},this.droppableStore=t,e.emitter.on("pointerdown",this.handlePointerDown),e.emitter.on("dragstart",this.handleDragStart),e.emitter.on("dragmove",this.handleDragMove),e.emitter.on("pointerup",this.handlePointerUp),e.emitter.on("dragend",this.handleDragEnd),this.dragging=e,this.emitter=new Lr}return e.prototype.processFirstCoord=function(e){var t,n={left:e.pageX,top:e.pageY},r=n,o=e.subjectEl;o!==document&&(r=mr(r,t=Or(o)));var i=this.initialHit=this.queryHitForOffset(r.left,r.top);if(i){if(this.useSubjectCenter&&t){var a=gr(t,i.rect);a&&(r=yr(a))}this.coordAdjust=Sr(r,n)}else this.coordAdjust={left:0,top:0}},e.prototype.handleMove=function(e,t){var n=this.queryHitForOffset(e.pageX+this.coordAdjust.left,e.pageY+this.coordAdjust.top);!t&&Ba(this.movingHit,n)||(this.movingHit=n,this.emitter.trigger("hitupdate",n,!1,e))},e.prototype.prepareHits=function(){this.offsetTrackers=Le(this.droppableStore,(function(e){return e.component.prepareHits(),new La(e.el)}))},e.prototype.releaseHits=function(){var e=this.offsetTrackers;for(var t in e)e[t].destroy();this.offsetTrackers={}},e.prototype.queryHitForOffset=function(e,t){var n=this.droppableStore,r=this.offsetTrackers,o=null;for(var i in n){var a=n[i].component,s=r[i];if(s&&s.isWithinClipping(e,t)){var l=s.computeLeft(),u=s.computeTop(),c=e-l,d=t-u,p=s.origRect,f=p.right-p.left,h=p.bottom-p.top;if(c>=0&&c<f&&d>=0&&d<h){var g=a.queryHit(c,d,f,h),v=a.context.getCurrentData().dateProfile;g&&gn(v.activeRange,g.dateSpan.range)&&(!o||g.layer>o.layer)&&(g.rect.left+=l,g.rect.right+=l,g.rect.top+=u,g.rect.bottom+=u,o=g)}}}return o},e}();function Ba(e,t){return!e&&!t||Boolean(e)===Boolean(t)&&Hn(e.dateSpan,t.dateSpan)}function za(e,t){for(var n,o,i={},a=0,s=t.pluginHooks.datePointTransforms;a<s.length;a++){var l=s[a];r(i,l(e,t))}return r(i,(n=e,{date:(o=t.dateEnv).toDate(n.range.start),dateStr:o.formatIso(n.range.start,{omitTime:n.allDay}),allDay:n.allDay})),i}var Va=function(e){function t(t){var n=e.call(this,t)||this;n.handlePointerDown=function(e){var t=n.dragging,r=e.origEvent.target;t.setIgnoreMove(!n.component.isValidDateDownEl(r))},n.handleDragEnd=function(e){var t=n.component;if(!n.dragging.pointer.wasTouchScroll){var o=n.hitDragging,i=o.initialHit,a=o.finalHit;if(i&&a&&Ba(i,a)){var s=t.context,l=r(r({},za(i.dateSpan,s)),{dayEl:i.dayEl,jsEvent:e.origEvent,view:s.viewApi||s.calendarApi.view});s.emitter.trigger("dateClick",l)}}},n.dragging=new Aa(t.el),n.dragging.autoScroller.isEnabled=!1;var o=n.hitDragging=new Ua(n.dragging,Ci(t));return o.emitter.on("pointerdown",n.handlePointerDown),o.emitter.on("dragend",n.handleDragEnd),n}return n(t,e),t.prototype.destroy=function(){this.dragging.destroy()},t}(Si),Fa=function(e){function t(t){var n=e.call(this,t)||this;n.dragSelection=null,n.handlePointerDown=function(e){var t=n,r=t.component,o=t.dragging,i=r.context.options.selectable&&r.isValidDateDownEl(e.origEvent.target);o.setIgnoreMove(!i),o.delay=e.isTouch?function(e){var t=e.context.options,n=t.selectLongPressDelay;null==n&&(n=t.longPressDelay);return n}(r):null},n.handleDragStart=function(e){n.component.context.calendarApi.unselect(e)},n.handleHitUpdate=function(e,t){var o=n.component.context,i=null,a=!1;e&&((i=function(e,t,n){var o=e.dateSpan,i=t.dateSpan,a=[o.range.start,o.range.end,i.range.start,i.range.end];a.sort(fe);for(var s={},l=0,u=n;l<u.length;l++){var c=(0,u[l])(e,t);if(!1===c)return null;c&&r(s,c)}return s.range={start:a[0],end:a[3]},s.allDay=o.allDay,s}(n.hitDragging.initialHit,e,o.pluginHooks.dateSelectionTransformers))&&n.component.isDateSelectionValid(i)||(a=!0,i=null)),i?o.dispatch({type:"SELECT_DATES",selection:i}):t||o.dispatch({type:"UNSELECT_DATES"}),a?ne():re(),t||(n.dragSelection=i)},n.handlePointerUp=function(e){n.dragSelection&&(Ln(n.dragSelection,e,n.component.context),n.dragSelection=null)};var o=t.component.context.options,i=n.dragging=new Aa(t.el);i.touchScrollAllowed=!1,i.minDistance=o.selectMinDistance||0,i.autoScroller.isEnabled=o.dragScroll;var a=n.hitDragging=new Ua(n.dragging,Ci(t));return a.emitter.on("pointerdown",n.handlePointerDown),a.emitter.on("dragstart",n.handleDragStart),a.emitter.on("hitupdate",n.handleHitUpdate),a.emitter.on("pointerup",n.handlePointerUp),n}return n(t,e),t.prototype.destroy=function(){this.dragging.destroy()},t}(Si);var ja=function(e){function t(n){var o=e.call(this,n)||this;o.subjectEl=null,o.subjectSeg=null,o.isDragging=!1,o.eventRange=null,o.relevantEvents=null,o.receivingContext=null,o.validMutation=null,o.mutatedRelevantEvents=null,o.handlePointerDown=function(e){var t=e.origEvent.target,n=o,r=n.component,i=n.dragging,a=i.mirror,s=r.context.options,l=r.context;o.subjectEl=e.subjectEl;var u=o.subjectSeg=En(e.subjectEl),c=(o.eventRange=u.eventRange).instance.instanceId;o.relevantEvents=Vt(l.getCurrentData().eventStore,c),i.minDistance=e.isTouch?0:s.eventDragMinDistance,i.delay=e.isTouch&&c!==r.props.eventSelection?function(e){var t=e.context.options,n=t.eventLongPressDelay;null==n&&(n=t.longPressDelay);return n}(r):null,s.fixedMirrorParent?a.parentNode=s.fixedMirrorParent:a.parentNode=V(t,".fc"),a.revertDuration=s.dragRevertDuration;var d=r.isValidSegDownEl(t)&&!V(t,".fc-event-resizer");i.setIgnoreMove(!d),o.isDragging=d&&e.subjectEl.classList.contains("fc-event-draggable")},o.handleDragStart=function(e){var t=o.component.context,n=o.eventRange,r=n.instance.instanceId;e.isTouch?r!==o.component.props.eventSelection&&t.dispatch({type:"SELECT_EVENT",eventInstanceId:r}):t.dispatch({type:"UNSELECT_EVENT"}),o.isDragging&&(t.calendarApi.unselect(e),t.emitter.trigger("eventDragStart",{el:o.subjectEl,event:new Kn(t,n.def,n.instance),jsEvent:e.origEvent,view:t.viewApi}))},o.handleHitUpdate=function(e,t){if(o.isDragging){var n=o.relevantEvents,r=o.hitDragging.initialHit,i=o.component.context,a=null,s=null,l=null,u=!1,c={affectedEvents:n,mutatedEvents:{defs:{},instances:{}},isEvent:!0};if(e){var d=e.component,p=(a=d.context).options;i===a||p.editable&&p.droppable?(s=function(e,t,n){var r=e.dateSpan,o=t.dateSpan,i=r.range.start,a=o.range.start,s={};r.allDay!==o.allDay&&(s.allDay=o.allDay,s.hasEnd=t.component.context.options.allDayMaintainDuration,o.allDay&&(i=we(i)));var l=un(i,a,e.component.context.dateEnv,e.component===t.component?e.component.largeUnit:null);l.milliseconds&&(s.allDay=!1);for(var u={datesDelta:l,standardProps:s},c=0,d=n;c<d.length;c++){(0,d[c])(u,e,t)}return u}(r,e,a.getCurrentData().pluginHooks.eventDragMutationMassagers))&&(l=zn(n,a.getCurrentData().eventUiBases,s,a),c.mutatedEvents=l,d.isInteractionValid(c)||(u=!0,s=null,l=null,c.mutatedEvents={defs:{},instances:{}})):a=null}o.displayDrag(a,c),u?ne():re(),t||(i===a&&Ba(r,e)&&(s=null),o.dragging.setMirrorNeedsRevert(!s),o.dragging.setMirrorIsVisible(!e||!document.querySelector(".fc-event-mirror")),o.receivingContext=a,o.validMutation=s,o.mutatedRelevantEvents=l)}},o.handlePointerUp=function(){o.isDragging||o.cleanup()},o.handleDragEnd=function(e){if(o.isDragging){var t=o.component.context,n=t.viewApi,i=o,a=i.receivingContext,s=i.validMutation,l=o.eventRange.def,u=o.eventRange.instance,c=new Kn(t,l,u),d=o.relevantEvents,p=o.mutatedRelevantEvents,f=o.hitDragging.finalHit;if(o.clearDrag(),t.emitter.trigger("eventDragStop",{el:o.subjectEl,event:c,jsEvent:e.origEvent,view:n}),s){if(a===t){var h=new Kn(t,p.defs[l.defId],u?p.instances[u.instanceId]:null);t.dispatch({type:"MERGE_EVENTS",eventStore:p});for(var g={oldEvent:c,event:h,relatedEvents:$n(p,t,u),revert:function(){t.dispatch({type:"MERGE_EVENTS",eventStore:d})}},v={},m=0,y=t.getCurrentData().pluginHooks.eventDropTransformers;m<y.length;m++){var S=y[m];r(v,S(s,t))}t.emitter.trigger("eventDrop",r(r(r({},g),v),{el:e.subjectEl,delta:s.datesDelta,jsEvent:e.origEvent,view:n})),t.emitter.trigger("eventChange",g)}else if(a){var E={event:c,relatedEvents:$n(d,t,u),revert:function(){t.dispatch({type:"MERGE_EVENTS",eventStore:d})}};t.emitter.trigger("eventLeave",r(r({},E),{draggedEl:e.subjectEl,view:n})),t.dispatch({type:"REMOVE_EVENTS",eventStore:d}),t.emitter.trigger("eventRemove",E);var C=p.defs[l.defId],b=p.instances[u.instanceId],R=new Kn(a,C,b);a.dispatch({type:"MERGE_EVENTS",eventStore:p});var D={event:R,relatedEvents:$n(p,a,b),revert:function(){a.dispatch({type:"REMOVE_EVENTS",eventStore:p})}};a.emitter.trigger("eventAdd",D),e.isTouch&&a.dispatch({type:"SELECT_EVENT",eventInstanceId:u.instanceId}),a.emitter.trigger("drop",r(r({},za(f.dateSpan,a)),{draggedEl:e.subjectEl,jsEvent:e.origEvent,view:f.component.context.viewApi})),a.emitter.trigger("eventReceive",r(r({},D),{draggedEl:e.subjectEl,view:f.component.context.viewApi}))}}else t.emitter.trigger("_noEventDrop")}o.cleanup()};var i=o.component.context.options,a=o.dragging=new Aa(n.el);a.pointer.selector=t.SELECTOR,a.touchScrollAllowed=!1,a.autoScroller.isEnabled=i.dragScroll;var s=o.hitDragging=new Ua(o.dragging,bi);return s.useSubjectCenter=n.useEventCenter,s.emitter.on("pointerdown",o.handlePointerDown),s.emitter.on("dragstart",o.handleDragStart),s.emitter.on("hitupdate",o.handleHitUpdate),s.emitter.on("pointerup",o.handlePointerUp),s.emitter.on("dragend",o.handleDragEnd),o}return n(t,e),t.prototype.destroy=function(){this.dragging.destroy()},t.prototype.displayDrag=function(e,t){var n=this.component.context,r=this.receivingContext;r&&r!==e&&(r===n?r.dispatch({type:"SET_EVENT_DRAG",state:{affectedEvents:t.affectedEvents,mutatedEvents:{defs:{},instances:{}},isEvent:!0}}):r.dispatch({type:"UNSET_EVENT_DRAG"})),e&&e.dispatch({type:"SET_EVENT_DRAG",state:t})},t.prototype.clearDrag=function(){var e=this.component.context,t=this.receivingContext;t&&t.dispatch({type:"UNSET_EVENT_DRAG"}),e!==t&&e.dispatch({type:"UNSET_EVENT_DRAG"})},t.prototype.cleanup=function(){this.subjectSeg=null,this.isDragging=!1,this.eventRange=null,this.relevantEvents=null,this.receivingContext=null,this.validMutation=null,this.mutatedRelevantEvents=null},t.SELECTOR=".fc-event-draggable, .fc-event-resizable",t}(Si);var Ga=function(e){function t(t){var n=e.call(this,t)||this;n.draggingSegEl=null,n.draggingSeg=null,n.eventRange=null,n.relevantEvents=null,n.validMutation=null,n.mutatedRelevantEvents=null,n.handlePointerDown=function(e){var t=n.component,r=En(n.querySegEl(e)),o=n.eventRange=r.eventRange;n.dragging.minDistance=t.context.options.eventDragMinDistance,n.dragging.setIgnoreMove(!n.component.isValidSegDownEl(e.origEvent.target)||e.isTouch&&n.component.props.eventSelection!==o.instance.instanceId)},n.handleDragStart=function(e){var t=n.component.context,r=n.eventRange;n.relevantEvents=Vt(t.getCurrentData().eventStore,n.eventRange.instance.instanceId);var o=n.querySegEl(e);n.draggingSegEl=o,n.draggingSeg=En(o),t.calendarApi.unselect(),t.emitter.trigger("eventResizeStart",{el:o,event:new Kn(t,r.def,r.instance),jsEvent:e.origEvent,view:t.viewApi})},n.handleHitUpdate=function(e,t,o){var i=n.component.context,a=n.relevantEvents,s=n.hitDragging.initialHit,l=n.eventRange.instance,u=null,c=null,d=!1,p={affectedEvents:a,mutatedEvents:{defs:{},instances:{}},isEvent:!0};e&&(u=function(e,t,n,o,i){for(var a=e.component.context.dateEnv,s=e.dateSpan.range.start,l=t.dateSpan.range.start,u=un(s,l,a,e.component.largeUnit),c={},d=0,p=i;d<p.length;d++){var f=(0,p[d])(e,t);if(!1===f)return null;f&&r(c,f)}if(n){if(a.add(o.start,u)<o.end)return c.startDelta=u,c}else if(a.add(o.end,u)>o.start)return c.endDelta=u,c;return null}(s,e,o.subjectEl.classList.contains("fc-event-resizer-start"),l.range,i.pluginHooks.eventResizeJoinTransforms)),u&&(c=zn(a,i.getCurrentData().eventUiBases,u,i),p.mutatedEvents=c,n.component.isInteractionValid(p)||(d=!0,u=null,c=null,p.mutatedEvents=null)),c?i.dispatch({type:"SET_EVENT_RESIZE",state:p}):i.dispatch({type:"UNSET_EVENT_RESIZE"}),d?ne():re(),t||(u&&Ba(s,e)&&(u=null),n.validMutation=u,n.mutatedRelevantEvents=c)},n.handleDragEnd=function(e){var t=n.component.context,o=n.eventRange.def,i=n.eventRange.instance,a=new Kn(t,o,i),s=n.relevantEvents,l=n.mutatedRelevantEvents;if(t.emitter.trigger("eventResizeStop",{el:n.draggingSegEl,event:a,jsEvent:e.origEvent,view:t.viewApi}),n.validMutation){var u=new Kn(t,l.defs[o.defId],i?l.instances[i.instanceId]:null);t.dispatch({type:"MERGE_EVENTS",eventStore:l});var c={oldEvent:a,event:u,relatedEvents:$n(l,t,i),revert:function(){t.dispatch({type:"MERGE_EVENTS",eventStore:s})}};t.emitter.trigger("eventResize",r(r({},c),{el:n.draggingSegEl,startDelta:n.validMutation.startDelta||Ke(0),endDelta:n.validMutation.endDelta||Ke(0),jsEvent:e.origEvent,view:t.viewApi})),t.emitter.trigger("eventChange",c)}else t.emitter.trigger("_noEventResize");n.draggingSeg=null,n.relevantEvents=null,n.validMutation=null};var o=t.component,i=n.dragging=new Aa(t.el);i.pointer.selector=".fc-event-resizer",i.touchScrollAllowed=!1,i.autoScroller.isEnabled=o.context.options.dragScroll;var a=n.hitDragging=new Ua(n.dragging,Ci(t));return a.emitter.on("pointerdown",n.handlePointerDown),a.emitter.on("dragstart",n.handleDragStart),a.emitter.on("hitupdate",n.handleHitUpdate),a.emitter.on("dragend",n.handleDragEnd),n}return n(t,e),t.prototype.destroy=function(){this.dragging.destroy()},t.prototype.querySegEl=function(e){return V(e.subjectEl,".fc-event")},t}(Si);var qa=function(){function e(e){var t=this;this.context=e,this.isRecentPointerDateSelect=!1,this.matchesCancel=!1,this.matchesEvent=!1,this.onSelect=function(e){e.jsEvent&&(t.isRecentPointerDateSelect=!0)},this.onDocumentPointerDown=function(e){var n=t.context.options.unselectCancel,r=e.origEvent.target;t.matchesCancel=!!V(r,n),t.matchesEvent=!!V(r,ja.SELECTOR)},this.onDocumentPointerUp=function(e){var n=t.context,r=t.documentPointer,o=n.getCurrentData();if(!r.wasTouchScroll){if(o.dateSelection&&!t.isRecentPointerDateSelect){var i=n.options.unselectAuto;!i||i&&t.matchesCancel||n.calendarApi.unselect(e)}o.eventSelection&&!t.matchesEvent&&n.dispatch({type:"UNSELECT_EVENT"})}t.isRecentPointerDateSelect=!1};var n=this.documentPointer=new ka(document);n.shouldIgnoreMove=!0,n.shouldWatchScroll=!1,n.emitter.on("pointerdown",this.onDocumentPointerDown),n.emitter.on("pointerup",this.onDocumentPointerUp),e.emitter.on("select",this.onSelect)}return e.prototype.destroy=function(){this.context.emitter.off("select",this.onSelect),this.documentPointer.destroy()},e}(),Ya={fixedMirrorParent:Ut},Za={dateClick:Ut,eventDragStart:Ut,eventDragStop:Ut,eventDrop:Ut,eventResizeStart:Ut,eventResizeStop:Ut,eventResize:Ut,drop:Ut,eventReceive:Ut,eventLeave:Ut},Xa=function(){function e(e,t){var n=this;this.receivingContext=null,this.droppableEvent=null,this.suppliedDragMeta=null,this.dragMeta=null,this.handleDragStart=function(e){n.dragMeta=n.buildDragMeta(e.subjectEl)},this.handleHitUpdate=function(e,t,o){var i=n.hitDragging.dragging,a=null,s=null,l=!1,u={affectedEvents:{defs:{},instances:{}},mutatedEvents:{defs:{},instances:{}},isEvent:n.dragMeta.create};e&&(a=e.component.context,n.canDropElOnCalendar(o.subjectEl,a)&&(s=function(e,t,n){for(var o=r({},t.leftoverProps),i=0,a=n.pluginHooks.externalDefTransforms;i<a.length;i++){var s=a[i];r(o,s(e,t))}var l=nn(o,n),u=l.refined,c=l.extra,d=on(u,c,t.sourceId,e.allDay,n.options.forceEventDuration||Boolean(t.duration),n),p=e.range.start;e.allDay&&t.startTime&&(p=n.dateEnv.add(p,t.startTime));var f=t.duration?n.dateEnv.add(p,t.duration):Bn(e.allDay,p,n),h=He(d.defId,{start:p,end:f});return{def:d,instance:h}}(e.dateSpan,n.dragMeta,a),u.mutatedEvents=zt(s),(l=!uo(u,a))&&(u.mutatedEvents={defs:{},instances:{}},s=null))),n.displayDrag(a,u),i.setMirrorIsVisible(t||!s||!document.querySelector(".fc-event-mirror")),l?ne():re(),t||(i.setMirrorNeedsRevert(!s),n.receivingContext=a,n.droppableEvent=s)},this.handleDragEnd=function(e){var t=n,o=t.receivingContext,i=t.droppableEvent;if(n.clearDrag(),o&&i){var a=n.hitDragging.finalHit,s=a.component.context.viewApi,l=n.dragMeta;if(o.emitter.trigger("drop",r(r({},za(a.dateSpan,o)),{draggedEl:e.subjectEl,jsEvent:e.origEvent,view:s})),l.create){var u=zt(i);o.dispatch({type:"MERGE_EVENTS",eventStore:u}),e.isTouch&&o.dispatch({type:"SELECT_EVENT",eventInstanceId:i.instance.instanceId}),o.emitter.trigger("eventReceive",{event:new Kn(o,i.def,i.instance),relatedEvents:[],revert:function(){o.dispatch({type:"REMOVE_EVENTS",eventStore:u})},draggedEl:e.subjectEl,view:s})}}n.receivingContext=null,n.droppableEvent=null};var o=this.hitDragging=new Ua(e,bi);o.requireInitial=!1,o.emitter.on("dragstart",this.handleDragStart),o.emitter.on("hitupdate",this.handleHitUpdate),o.emitter.on("dragend",this.handleDragEnd),this.suppliedDragMeta=t}return e.prototype.buildDragMeta=function(e){return"object"==typeof this.suppliedDragMeta?Ti(this.suppliedDragMeta):"function"==typeof this.suppliedDragMeta?Ti(this.suppliedDragMeta(e)):Ti((t=function(e,t){var n=Di.dataAttrPrefix,r=(n?n+"-":"")+t;return e.getAttribute("data-"+r)||""}(e,"event"))?JSON.parse(t):{create:!1});var t},e.prototype.displayDrag=function(e,t){var n=this.receivingContext;n&&n!==e&&n.dispatch({type:"UNSET_EVENT_DRAG"}),e&&e.dispatch({type:"SET_EVENT_DRAG",state:t})},e.prototype.clearDrag=function(){this.receivingContext&&this.receivingContext.dispatch({type:"UNSET_EVENT_DRAG"})},e.prototype.canDropElOnCalendar=function(e,t){var n=t.options.dropAccept;return"function"==typeof n?n.call(t.calendarApi,e):"string"!=typeof n||!n||Boolean(F(e,n))},e}();Di.dataAttrPrefix="";var Ka=function(){function e(e,t){var n=this;void 0===t&&(t={}),this.handlePointerDown=function(e){var t=n.dragging,r=n.settings,o=r.minDistance,i=r.longPressDelay;t.minDistance=null!=o?o:e.isTouch?0:It.eventDragMinDistance,t.delay=e.isTouch?null!=i?i:It.longPressDelay:0},this.handleDragStart=function(e){e.isTouch&&n.dragging.delay&&e.subjectEl.classList.contains("fc-event")&&n.dragging.mirror.getMirrorEl().classList.add("fc-event-selected")},this.settings=t;var r=this.dragging=new Aa(e);r.touchScrollAllowed=!1,null!=t.itemSelector&&(r.pointer.selector=t.itemSelector),null!=t.appendTo&&(r.mirror.parentNode=t.appendTo),r.emitter.on("pointerdown",this.handlePointerDown),r.emitter.on("dragstart",this.handleDragStart),new Xa(r,t.eventData)}return e.prototype.destroy=function(){this.dragging.destroy()},e}(),Ja=function(e){function t(t){var n=e.call(this,t)||this;n.shouldIgnoreMove=!1,n.mirrorSelector="",n.currentMirrorEl=null,n.handlePointerDown=function(e){n.emitter.trigger("pointerdown",e),n.shouldIgnoreMove||n.emitter.trigger("dragstart",e)},n.handlePointerMove=function(e){n.shouldIgnoreMove||n.emitter.trigger("dragmove",e)},n.handlePointerUp=function(e){n.emitter.trigger("pointerup",e),n.shouldIgnoreMove||n.emitter.trigger("dragend",e)};var r=n.pointer=new ka(t);return r.emitter.on("pointerdown",n.handlePointerDown),r.emitter.on("pointermove",n.handlePointerMove),r.emitter.on("pointerup",n.handlePointerUp),n}return n(t,e),t.prototype.destroy=function(){this.pointer.destroy()},t.prototype.setIgnoreMove=function(e){this.shouldIgnoreMove=e},t.prototype.setMirrorIsVisible=function(e){if(e)this.currentMirrorEl&&(this.currentMirrorEl.style.visibility="",this.currentMirrorEl=null);else{var t=this.mirrorSelector?document.querySelector(this.mirrorSelector):null;t&&(this.currentMirrorEl=t,t.style.visibility="hidden")}},t}(Ri),$a=function(){function e(e,t){var n=document;e===document||e instanceof Element?(n=e,t=t||{}):t=e||{};var r=this.dragging=new Ja(n);"string"==typeof t.itemSelector?r.pointer.selector=t.itemSelector:n===document&&(r.pointer.selector="[data-event]"),"string"==typeof t.mirrorSelector&&(r.mirrorSelector=t.mirrorSelector),new Xa(r,t.eventData)}return e.prototype.destroy=function(){this.dragging.destroy()},e}(),Qa=yo({componentInteractions:[Va,Fa,ja,Ga],calendarInteractions:[qa],elementDraggingImpl:Aa,optionRefiners:Ya,listenerRefiners:Za}),es=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.headerElRef=Yr(),t}return n(t,e),t.prototype.renderSimpleLayout=function(e,t){var n=this.props,r=this.context,o=[],i=ua(r.options);return e&&o.push({type:"header",key:"header",isSticky:i,chunk:{elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}}),o.push({type:"body",key:"body",liquid:!0,chunk:{content:t}}),Gr(Po,{viewSpec:r.viewSpec},(function(e,t){return Gr("div",{ref:e,className:["fc-daygrid"].concat(t).join(" ")},Gr(da,{liquid:!n.isHeightAuto&&!n.forPrint,cols:[],sections:o}))}))},t.prototype.renderHScrollLayout=function(e,t,n,r){var o=this.context.pluginHooks.scrollGridImpl;if(!o)throw new Error("No ScrollGrid implementation");var i=this.props,a=this.context,s=!i.forPrint&&ua(a.options),l=!i.forPrint&&ca(a.options),u=[];return e&&u.push({type:"header",key:"header",isSticky:s,chunks:[{key:"main",elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}]}),u.push({type:"body",key:"body",liquid:!0,chunks:[{key:"main",content:t}]}),l&&u.push({type:"footer",key:"footer",isSticky:!0,chunks:[{key:"main",content:la}]}),Gr(Po,{viewSpec:a.viewSpec},(function(e,t){return Gr("div",{ref:e,className:["fc-daygrid"].concat(t).join(" ")},Gr(o,{liquid:!i.isHeightAuto&&!i.forPrint,colGroups:[{cols:[{span:n,minWidth:r}]}],sections:u}))}))},t}(mo);function ts(e,t){for(var n=[],r=0;r<t;r+=1)n[r]=[];for(var o=0,i=e;o<i.length;o++){var a=i[o];n[a.row].push(a)}return n}function ns(e,t){for(var n=[],r=0;r<t;r+=1)n[r]=[];for(var o=0,i=e;o<i.length;o++){var a=i[o];n[a.firstCol].push(a)}return n}function rs(e,t){var n=[];if(e){for(a=0;a<t;a+=1)n[a]={affectedInstances:e.affectedInstances,isEvent:e.isEvent,segs:[]};for(var r=0,o=e.segs;r<o.length;r++){var i=o[r];n[i.row].segs.push(i)}}else for(var a=0;a<t;a+=1)n[a]=null;return n}var os=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context.options.navLinks?{"data-navlink":xr(e.date),tabIndex:0}:{};return Gr(ma,{date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,showDayNumber:e.showDayNumber,extraHookProps:e.extraHookProps,defaultContent:is},(function(n,o){return(o||e.forceDayTop)&&Gr("div",{className:"fc-daygrid-day-top",ref:n},Gr("a",r({className:"fc-daygrid-day-number"},t),o||Gr(Zr,null," ")))}))},t}(no);function is(e){return e.dayNumberText}var as=kt({week:"narrow"}),ss=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.handleRootEl=function(e){t.rootEl=e,io(t.props.elRef,e)},t.handleMoreLinkClick=function(e){var n=t.props;if(n.onMoreClick){var r=n.segsByEachCol,o=r.filter((function(e){return n.segIsHidden[e.eventRange.instance.instanceId]}));n.onMoreClick({date:n.date,allSegs:r,hiddenSegs:o,moreCnt:n.moreCnt,dayEl:t.rootEl,ev:e})}},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.context,n=t.options,o=t.viewApi,i=this.props,a=i.date,s=i.dateProfile,l={num:i.moreCnt,text:i.buildMoreLinkText(i.moreCnt),view:o},u=n.navLinks?{"data-navlink":xr(a,"week"),tabIndex:0}:{};return Gr(Sa,{date:a,dateProfile:s,todayRange:i.todayRange,showDayNumber:i.showDayNumber,extraHookProps:i.extraHookProps,elRef:this.handleRootEl},(function(t,o,c,d){return Gr("td",r({ref:t,className:["fc-daygrid-day"].concat(o,i.extraClassNames||[]).join(" ")},c,i.extraDataAttrs),Gr("div",{className:"fc-daygrid-day-frame fc-scrollgrid-sync-inner",ref:i.innerElRef},i.showWeekNumber&&Gr(Ra,{date:a,defaultFormat:as},(function(e,t,n,o){return Gr("a",r({ref:e,className:["fc-daygrid-week-number"].concat(t).join(" ")},u),o)})),!d&&Gr(os,{date:a,dateProfile:s,showDayNumber:i.showDayNumber,forceDayTop:i.forceDayTop,todayRange:i.todayRange,extraHookProps:i.extraHookProps}),Gr("div",{className:"fc-daygrid-day-events",ref:i.fgContentElRef,style:{paddingBottom:i.fgPaddingBottom}},i.fgContent,Boolean(i.moreCnt)&&Gr("div",{className:"fc-daygrid-day-bottom",style:{marginTop:i.moreMarginTop}},Gr(bo,{hookProps:l,classNames:n.moreLinkClassNames,content:n.moreLinkContent,defaultContent:ls,didMount:n.moreLinkDidMount,willUnmount:n.moreLinkWillUnmount},(function(t,n,r,o){return Gr("a",{ref:t,className:["fc-daygrid-more-link"].concat(n).join(" "),onClick:e.handleMoreLinkClick},o)})))),Gr("div",{className:"fc-daygrid-day-bg"},i.bgContent)))}))},t}(mo);function ls(e){return e.text}ss.addPropsEquality({onMoreClick:!0});var us=kt({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"narrow"});function cs(e){var t=e.eventRange.ui.display;return"list-item"===t||"auto"===t&&!e.eventRange.def.allDay&&e.firstCol===e.lastCol&&e.isStart&&e.isEnd}var ds=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options.eventTimeFormat||us,o=Mn(e.seg,n,t,!0,e.defaultDisplayEventEnd);return Gr(pa,{seg:e.seg,timeText:o,defaultContent:ps,isDragging:e.isDragging,isResizing:!1,isDateSelecting:!1,isSelected:e.isSelected,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday},(function(t,n,o,i){return Gr("a",r({className:["fc-daygrid-event","fc-daygrid-dot-event"].concat(n).join(" "),ref:t},(a=e.seg,(s=a.eventRange.def.url)?{href:s}:{})),i);var a,s}))},t}(no);function ps(e){return Gr(Zr,null,Gr("div",{className:"fc-daygrid-event-dot",style:{borderColor:e.borderColor||e.backgroundColor}}),e.timeText&&Gr("div",{className:"fc-event-time"},e.timeText),Gr("div",{className:"fc-event-title"},e.event.title||Gr(Zr,null," ")))}var fs=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props;return Gr(fa,r({},e,{extraClassNames:["fc-daygrid-event","fc-daygrid-block-event","fc-h-event"],defaultTimeFormat:us,defaultDisplayEventEnd:e.defaultDisplayEventEnd,disableResizing:!e.seg.eventRange.def.allDay}))},t}(no);function hs(e,t,n,o,i,a,s,l){for(var u=[],c=[],d={},p={},f={},h={},g={},v=0;v<s;v+=1)u.push([]),c.push(0);for(var m=0,y=t=Rn(t,l);m<y.length;m++){T(D=y[m],i[D.eventRange.instance.instanceId+":"+D.firstCol]||0)}!0===n||!0===o?function(e,t,n,r){vs(e,t,n,!0,(function(e){return e.bottom<=r}))}(c,d,u,a):"number"==typeof n?function(e,t,n,r){vs(e,t,n,!1,(function(e,t){return t<r}))}(c,d,u,n):"number"==typeof o&&function(e,t,n,r){vs(e,t,n,!0,(function(e,t){return t<r}))}(c,d,u,o);for(var S=0;S<s;S+=1){for(var E=0,C=0,b=0,R=u[S];b<R.length;b++){var D,w=R[b];d[(D=w.seg).eventRange.instance.instanceId]||(p[D.eventRange.instance.instanceId]=w.top,D.firstCol===D.lastCol&&D.isStart&&D.isEnd?(f[D.eventRange.instance.instanceId]=w.top-E,C=0,E=w.bottom):C=w.bottom-E)}C&&(c[S]?h[S]=C:g[S]=C)}function T(e,t){if(!x(e,t,0))for(var n=e.firstCol;n<=e.lastCol;n+=1)for(var r=0,o=u[n];r<o.length;r++){if(x(e,t,o[r].bottom))return}}function x(e,t,n){if(function(e,t,n){for(var r=e.firstCol;r<=e.lastCol;r+=1)for(var o=0,i=u[r];o<i.length;o++){var a=i[o];if(n<a.bottom&&n+t>a.top)return!1}return!0}(e,t,n)){for(var r=e.firstCol;r<=e.lastCol;r+=1){for(var o=u[r],i=0;i<o.length&&n>=o[i].top;)i+=1;o.splice(i,0,{seg:e,top:n,bottom:n+t})}return!0}return!1}for(var M in i)i[M]||(d[M.split(":")[0]]=!0);return{segsByFirstCol:u.map(gs),segsByEachCol:u.map((function(t,n){var o=function(e){for(var t=[],n=0,r=e;n<r.length;n++){var o=r[n];t.push(o.seg)}return t}(t);return o=function(e,t,n){for(var o=t,i=ye(o,1),a={start:o,end:i},s=[],l=0,u=e;l<u.length;l++){var c=u[l],d=c.eventRange,p=d.range,f=pn(p,a);f&&s.push(r(r({},c),{firstCol:n,lastCol:n,eventRange:{def:d.def,ui:r(r({},d.ui),{durationEditable:!1}),instance:d.instance,range:f},isStart:c.isStart&&f.start.valueOf()===p.start.valueOf(),isEnd:c.isEnd&&f.end.valueOf()===p.end.valueOf()}))}return s}(o,e[n].date,n)})),segIsHidden:d,segTops:p,segMarginTops:f,moreCnts:c,moreTops:h,paddingBottoms:g}}function gs(e,t){for(var n=[],r=0,o=e;r<o.length;r++){var i=o[r];i.seg.firstCol===t&&n.push(i.seg)}return n}function vs(e,t,n,r,o){for(var i=e.length,a={},s=[],l=0;l<i;l+=1)s.push([]);for(l=0;l<i;l+=1)for(var u=0,c=0,d=n[l];c<d.length;c++){var p=d[c];o(p,u)?f(p):h(p,u,r),p.top!==p.bottom&&(u+=1)}function f(e){var t=e.seg,n=t.eventRange.instance.instanceId;if(!a[n]){a[n]=!0;for(var r=t.firstCol;r<=t.lastCol;r+=1){for(var o=s[r],i=0;i<o.length&&e.top>=o[i].top;)i+=1;o.splice(i,0,e)}}}function h(n,r,o){var i=n.seg,a=i.eventRange.instance.instanceId;if(!t[a]){t[a]=!0;for(var l=i.firstCol;l<=i.lastCol;l+=1){e[l]+=1;var u=e[l];if(o&&1===u&&r>0)for(var c=r-1;s[l].length>c;)h(s[l].pop(),s[l].length,!1)}}}}var ms=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.cellElRefs=new Ji,t.frameElRefs=new Ji,t.fgElRefs=new Ji,t.segHarnessRefs=new Ji,t.rootElRef=Yr(),t.state={framePositions:null,maxContentHeight:null,segHeights:{}},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.state,o=this.context,i=t.cells.length,a=ns(t.businessHourSegs,i),s=ns(t.bgEventSegs,i),l=ns(this.getHighlightSegs(),i),u=ns(this.getMirrorSegs(),i),c=hs(t.cells,t.fgEventSegs,t.dayMaxEvents,t.dayMaxEventRows,n.segHeights,n.maxContentHeight,i,o.options.eventOrder),d=c.paddingBottoms,p=c.segsByFirstCol,f=c.segsByEachCol,h=c.segIsHidden,g=c.segTops,v=c.segMarginTops,m=c.moreCnts,y=c.moreTops,S=t.eventDrag&&t.eventDrag.affectedInstances||t.eventResize&&t.eventResize.affectedInstances||{};return Gr("tr",{ref:this.rootElRef},t.renderIntro&&t.renderIntro(),t.cells.map((function(n,o){var i=e.renderFgSegs(p[o],h,g,v,S,t.todayRange),c=e.renderFgSegs(u[o],{},g,{},{},t.todayRange,Boolean(t.eventDrag),Boolean(t.eventResize),!1);return Gr(ss,{key:n.key,elRef:e.cellElRefs.createRef(n.key),innerElRef:e.frameElRefs.createRef(n.key),dateProfile:t.dateProfile,date:n.date,showDayNumber:t.showDayNumbers,showWeekNumber:t.showWeekNumbers&&0===o,forceDayTop:t.showWeekNumbers,todayRange:t.todayRange,extraHookProps:n.extraHookProps,extraDataAttrs:n.extraDataAttrs,extraClassNames:n.extraClassNames,moreCnt:m[o],buildMoreLinkText:t.buildMoreLinkText,onMoreClick:function(e){t.onMoreClick(r(r({},e),{fromCol:o}))},segIsHidden:h,moreMarginTop:y[o],segsByEachCol:f[o],fgPaddingBottom:d[o],fgContentElRef:e.fgElRefs.createRef(n.key),fgContent:Gr(Zr,null,Gr(Zr,null,i),Gr(Zr,null,c)),bgContent:Gr(Zr,null,e.renderFillSegs(l[o],"highlight"),e.renderFillSegs(a[o],"non-business"),e.renderFillSegs(s[o],"bg-event"))})})))},t.prototype.componentDidMount=function(){this.updateSizing(!0)},t.prototype.componentDidUpdate=function(e,t){var n=this.props;this.updateSizing(!ze(e,n))},t.prototype.getHighlightSegs=function(){var e=this.props;return e.eventDrag&&e.eventDrag.segs.length?e.eventDrag.segs:e.eventResize&&e.eventResize.segs.length?e.eventResize.segs:e.dateSelectionSegs},t.prototype.getMirrorSegs=function(){var e=this.props;return e.eventResize&&e.eventResize.segs.length?e.eventResize.segs:[]},t.prototype.renderFgSegs=function(e,t,n,o,i,a,s,l,u){var c=this.context,d=this.props.eventSelection,p=this.state.framePositions,f=1===this.props.cells.length,h=[];if(p)for(var g=0,v=e;g<v.length;g++){var m=v[g],y=m.eventRange.instance.instanceId,S=s||l||u,E=i[y],C=t[y]||E,b=t[y]||S||m.firstCol!==m.lastCol||!m.isStart||!m.isEnd,R=void 0,D=void 0,w=void 0,T=void 0;b?(D=n[y],c.isRtl?(T=0,w=p.lefts[m.lastCol]-p.lefts[m.firstCol]):(w=0,T=p.rights[m.firstCol]-p.rights[m.lastCol])):R=o[y],h.push(Gr("div",{className:"fc-daygrid-event-harness"+(b?" fc-daygrid-event-harness-abs":""),key:y,ref:S?null:this.segHarnessRefs.createRef(y+":"+m.firstCol),style:{visibility:C?"hidden":"",marginTop:R||"",top:D||"",left:w||"",right:T||""}},cs(m)?Gr(ds,r({seg:m,isDragging:s,isSelected:y===d,defaultDisplayEventEnd:f},kn(m,a))):Gr(fs,r({seg:m,isDragging:s,isResizing:l,isDateSelecting:u,isSelected:y===d,defaultDisplayEventEnd:f},kn(m,a)))))}return h},t.prototype.renderFillSegs=function(e,t){var n=this.context.isRtl,i=this.props.todayRange,a=this.state.framePositions,s=[];if(a)for(var l=0,u=e;l<u.length;l++){var c=u[l],d=n?{right:0,left:a.lefts[c.lastCol]-a.lefts[c.firstCol]}:{left:0,right:a.rights[c.firstCol]-a.rights[c.lastCol]};s.push(Gr("div",{key:In(c.eventRange),className:"fc-daygrid-bg-harness",style:d},"bg-event"===t?Gr(Ca,r({seg:c},kn(c,i))):Ea(t)))}return Gr.apply(void 0,o([Zr,{}],s))},t.prototype.updateSizing=function(e){var t=this.props,n=this.frameElRefs;if(null!==t.clientWidth){if(e){var r=t.cells.map((function(e){return n.currentMap[e.key]}));if(r.length){var o=this.rootElRef.current;this.setState({framePositions:new Ur(o,r,!0,!1)})}}var i=!0===t.dayMaxEvents||!0===t.dayMaxEventRows;this.setState({segHeights:this.computeSegHeights(),maxContentHeight:i?this.computeMaxContentHeight():null})}},t.prototype.computeSegHeights=function(){return Le(this.segHarnessRefs.currentMap,(function(e){return e.getBoundingClientRect().height}))},t.prototype.computeMaxContentHeight=function(){var e=this.props.cells[0].key,t=this.cellElRefs.currentMap[e],n=this.fgElRefs.currentMap[e];return t.getBoundingClientRect().bottom-n.getBoundingClientRect().top},t.prototype.getCellEls=function(){var e=this.cellElRefs.currentMap;return this.props.cells.map((function(t){return e[t.key]}))},t}(mo);ms.addPropsEquality({onMoreClick:!0}),ms.addStateEquality({segHeights:ze});var ys=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.repositioner=new ri(t.updateSize.bind(t)),t.handleRootEl=function(e){t.rootEl=e,t.props.elRef&&io(t.props.elRef,e)},t.handleDocumentMousedown=function(e){var n=t.props.onClose;n&&!t.rootEl.contains(e.target)&&n()},t.handleDocumentScroll=function(){t.repositioner.request(10)},t.handleCloseClick=function(){var e=t.props.onClose;e&&e()},t}return n(t,e),t.prototype.render=function(){var e=this.context.theme,t=this.props,n=["fc-popover",e.getClass("popover")].concat(t.extraClassNames||[]);return Gr("div",r({className:n.join(" ")},t.extraAttrs,{ref:this.handleRootEl}),Gr("div",{className:"fc-popover-header "+e.getClass("popoverHeader")},Gr("span",{className:"fc-popover-title"},t.title),Gr("span",{className:"fc-popover-close "+e.getIconClass("close"),onClick:this.handleCloseClick})),Gr("div",{className:"fc-popover-body "+e.getClass("popoverContent")},t.children))},t.prototype.componentDidMount=function(){document.addEventListener("mousedown",this.handleDocumentMousedown),document.addEventListener("scroll",this.handleDocumentScroll),this.updateSize()},t.prototype.componentWillUnmount=function(){document.removeEventListener("mousedown",this.handleDocumentMousedown),document.removeEventListener("scroll",this.handleDocumentScroll)},t.prototype.updateSize=function(){var e=this.props,t=e.alignmentEl,n=e.topAlignmentEl,r=this.rootEl;if(r){var o,i=r.getBoundingClientRect(),a=t.getBoundingClientRect(),s=n?n.getBoundingClientRect().top:a.top;s=Math.min(s,window.innerHeight-i.height-10),s=Math.max(s,10),o=this.context.isRtl?a.right-i.width:a.left,o=Math.min(o,window.innerWidth-i.width-10),Y(r,{top:s,left:o=Math.max(o,10)})}},t}(no),Ss=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.rootElRef=Yr(),t}return n(t,e),t.prototype.render=function(){var e=this.context,t=e.options,n=e.dateEnv,o=this.props,i=o.date,a=o.hiddenInstances,s=o.todayRange,l=o.dateProfile,u=o.selectedInstanceId,c=n.format(i,t.dayPopoverFormat);return Gr(Sa,{date:i,dateProfile:l,todayRange:s,elRef:this.rootElRef},(function(e,t,n){return Gr(ys,{elRef:e,title:c,extraClassNames:["fc-more-popover"].concat(t),extraAttrs:n,onClose:o.onCloseClick,alignmentEl:o.alignmentEl,topAlignmentEl:o.topAlignmentEl},Gr(ma,{date:i,dateProfile:l,todayRange:s},(function(e,t){return t&&Gr("div",{className:"fc-more-popover-misc",ref:e},t)})),o.segs.map((function(e){var t=e.eventRange.instance.instanceId;return Gr("div",{className:"fc-daygrid-event-harness",key:t,style:{visibility:a[t]?"hidden":""}},cs(e)?Gr(ds,r({seg:e,isDragging:!1,isSelected:t===u,defaultDisplayEventEnd:!1},kn(e,s))):Gr(fs,r({seg:e,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:t===u,defaultDisplayEventEnd:!1},kn(e,s))))})))}))},t.prototype.positionToHit=function(e,t,n){var r=this.rootElRef.current;if(!n||!r)return null;var o=n.getBoundingClientRect(),i=r.getBoundingClientRect(),a=i.left-o.left,s=i.top-o.top,l=e-a,u=t-s,c=this.props.date;return l>=0&&l<i.width&&u>=0&&u<i.height?{dateSpan:{allDay:!0,range:{start:c,end:ye(c,1)}},dayEl:r,relativeRect:{left:a,top:s,right:i.width,bottom:i.height},layer:1}:null},t}(mo),Es=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.splitBusinessHourSegs=pt(ts),t.splitBgEventSegs=pt(ts),t.splitFgEventSegs=pt(ts),t.splitDateSelectionSegs=pt(ts),t.splitEventDrag=pt(rs),t.splitEventResize=pt(rs),t.buildBuildMoreLinkText=pt(Cs),t.morePopoverRef=Yr(),t.rowRefs=new Ji,t.state={morePopoverState:null},t.handleRootEl=function(e){t.rootEl=e,io(t.props.elRef,e)},t.handleMoreLinkClick=function(e){var n=t.context,o=n.dateEnv,i=n.options.moreLinkClick;function a(e){var t=e.eventRange,r=t.def,i=t.instance,a=t.range;return{event:new Kn(n,r,i),start:o.toDate(a.start),end:o.toDate(a.end),isStart:e.isStart,isEnd:e.isEnd}}"function"==typeof i&&(i=i({date:o.toDate(e.date),allDay:!0,allSegs:e.allSegs.map(a),hiddenSegs:e.hiddenSegs.map(a),jsEvent:e.ev,view:n.viewApi})),i&&"popover"!==i?"string"==typeof i&&n.calendarApi.zoomTo(e.date,i):t.setState({morePopoverState:r(r({},e),{currentFgEventSegs:t.props.fgEventSegs,fromRow:e.fromRow,fromCol:e.fromCol})})},t.handleMorePopoverClose=function(){t.setState({morePopoverState:null})},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=t.dateProfile,o=t.dayMaxEventRows,i=t.dayMaxEvents,a=t.expandRows,s=this.state.morePopoverState,l=t.cells.length,u=this.splitBusinessHourSegs(t.businessHourSegs,l),c=this.splitBgEventSegs(t.bgEventSegs,l),d=this.splitFgEventSegs(t.fgEventSegs,l),p=this.splitDateSelectionSegs(t.dateSelectionSegs,l),f=this.splitEventDrag(t.eventDrag,l),h=this.splitEventResize(t.eventResize,l),g=this.buildBuildMoreLinkText(this.context.options.moreLinkText),v=!0===i||!0===o;return v&&!a&&(v=!1,o=null,i=null),Gr("div",{className:["fc-daygrid-body",v?"fc-daygrid-body-balanced":"fc-daygrid-body-unbalanced",a?"":"fc-daygrid-body-natural"].join(" "),ref:this.handleRootEl,style:{width:t.clientWidth,minWidth:t.tableMinWidth}},Gr(zi,{unit:"day"},(function(v,m){return Gr(Zr,null,Gr("table",{className:"fc-scrollgrid-sync-table",style:{width:t.clientWidth,minWidth:t.tableMinWidth,height:a?t.clientHeight:""}},t.colGroupNode,Gr("tbody",null,t.cells.map((function(a,s){return Gr(ms,{ref:e.rowRefs.createRef(s),key:a.length?a[0].date.toISOString():s,showDayNumbers:l>1,showWeekNumbers:t.showWeekNumbers,todayRange:m,dateProfile:n,cells:a,renderIntro:t.renderRowIntro,businessHourSegs:u[s],eventSelection:t.eventSelection,bgEventSegs:c[s].filter(bs),fgEventSegs:d[s],dateSelectionSegs:p[s],eventDrag:f[s],eventResize:h[s],dayMaxEvents:i,dayMaxEventRows:o,clientWidth:t.clientWidth,clientHeight:t.clientHeight,buildMoreLinkText:g,onMoreClick:function(t){e.handleMoreLinkClick(r(r({},t),{fromRow:s}))}})})))),!t.forPrint&&s&&s.currentFgEventSegs===t.fgEventSegs&&Gr(Ss,{ref:e.morePopoverRef,date:s.date,dateProfile:n,segs:s.allSegs,alignmentEl:s.dayEl,topAlignmentEl:1===l?t.headerAlignElRef.current:null,onCloseClick:e.handleMorePopoverClose,selectedInstanceId:t.eventSelection,hiddenInstances:(t.eventDrag?t.eventDrag.affectedInstances:null)||(t.eventResize?t.eventResize.affectedInstances:null)||{},todayRange:m}))})))},t.prototype.prepareHits=function(){this.rowPositions=new Ur(this.rootEl,this.rowRefs.collect().map((function(e){return e.getCellEls()[0]})),!1,!0),this.colPositions=new Ur(this.rootEl,this.rowRefs.currentMap[0].getCellEls(),!0,!1)},t.prototype.positionToHit=function(e,t){var n=this.morePopoverRef.current,o=n?n.positionToHit(e,t,this.rootEl):null,i=this.state.morePopoverState;if(o)return r({row:i.fromRow,col:i.fromCol},o);var a=this.colPositions,s=this.rowPositions,l=a.leftToIndex(e),u=s.topToIndex(t);return null!=u&&null!=l?{row:u,col:l,dateSpan:{range:this.getCellRange(u,l),allDay:!0},dayEl:this.getCellEl(u,l),relativeRect:{left:a.lefts[l],right:a.rights[l],top:s.tops[u],bottom:s.bottoms[u]}}:null},t.prototype.getCellEl=function(e,t){return this.rowRefs.currentMap[e].getCellEls()[t]},t.prototype.getCellRange=function(e,t){var n=this.props.cells[e][t].date;return{start:n,end:ye(n,1)}},t}(mo);function Cs(e){return"function"==typeof e?e:function(t){return"+"+t+" "+e}}function bs(e){return e.eventRange.def.allDay}var Rs=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.forceDayIfListItem=!0,t}return n(t,e),t.prototype.sliceRange=function(e,t){return t.sliceRange(e)},t}(Yi),Ds=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.slicer=new Rs,t.tableRef=Yr(),t.handleRootEl=function(e){e?t.context.registerInteractiveComponent(t,{el:e}):t.context.unregisterInteractiveComponent(t)},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context;return Gr(Es,r({ref:this.tableRef,elRef:this.handleRootEl},this.slicer.sliceProps(e,e.dateProfile,e.nextDayThreshold,t,e.dayTableModel),{dateProfile:e.dateProfile,cells:e.dayTableModel.cells,colGroupNode:e.colGroupNode,tableMinWidth:e.tableMinWidth,renderRowIntro:e.renderRowIntro,dayMaxEvents:e.dayMaxEvents,dayMaxEventRows:e.dayMaxEventRows,showWeekNumbers:e.showWeekNumbers,expandRows:e.expandRows,headerAlignElRef:e.headerAlignElRef,clientWidth:e.clientWidth,clientHeight:e.clientHeight,forPrint:e.forPrint}))},t.prototype.prepareHits=function(){this.tableRef.current.prepareHits()},t.prototype.queryHit=function(e,t){var n=this.tableRef.current.positionToHit(e,t);return n?{component:this,dateSpan:n.dateSpan,dayEl:n.dayEl,rect:{left:n.relativeRect.left,right:n.relativeRect.right,top:n.relativeRect.top,bottom:n.relativeRect.bottom},layer:0}:null},t}(mo),ws=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buildDayTableModel=pt(Ts),t.headerRef=Yr(),t.tableRef=Yr(),t}return n(t,e),t.prototype.render=function(){var e=this,t=this.context,n=t.options,r=t.dateProfileGenerator,o=this.props,i=this.buildDayTableModel(o.dateProfile,r),a=n.dayHeaders&&Gr(Fi,{ref:this.headerRef,dateProfile:o.dateProfile,dates:i.headerDates,datesRepDistinctDays:1===i.rowCnt}),s=function(t){return Gr(Ds,{ref:e.tableRef,dateProfile:o.dateProfile,dayTableModel:i,businessHours:o.businessHours,dateSelection:o.dateSelection,eventStore:o.eventStore,eventUiBases:o.eventUiBases,eventSelection:o.eventSelection,eventDrag:o.eventDrag,eventResize:o.eventResize,nextDayThreshold:n.nextDayThreshold,colGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,dayMaxEvents:n.dayMaxEvents,dayMaxEventRows:n.dayMaxEventRows,showWeekNumbers:n.weekNumbers,expandRows:!o.isHeightAuto,headerAlignElRef:e.headerElRef,clientWidth:t.clientWidth,clientHeight:t.clientHeight,forPrint:o.forPrint})};return n.dayMinWidth?this.renderHScrollLayout(a,s,i.colCnt,n.dayMinWidth):this.renderSimpleLayout(a,s)},t}(es);function Ts(e,t){var n=new Gi(e.renderRange,t);return new qi(n,/year|month|week/.test(e.currentRangeUnit))}var xs=yo({initialView:"dayGridMonth",optionRefiners:{moreLinkClick:Ut,moreLinkClassNames:Ut,moreLinkContent:Ut,moreLinkDidMount:Ut,moreLinkWillUnmount:Ut},views:{dayGrid:{component:ws,dateProfileGeneratorClass:function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.buildRenderRange=function(t,n,r){var o,i=this.props.dateEnv,a=e.prototype.buildRenderRange.call(this,t,n,r),s=a.start,l=a.end;(/^(year|month)$/.test(n)&&(s=i.startOfWeek(s),(o=i.startOfWeek(l)).valueOf()!==l.valueOf()&&(l=me(o,1))),this.props.monthMode&&this.props.fixedWeekCount)&&(l=me(l,6-Math.ceil(Ee(s,l))));return{start:s,end:l}},t}(Oo)},dayGridDay:{type:"dayGrid",duration:{days:1}},dayGridWeek:{type:"dayGrid",duration:{weeks:1}},dayGridMonth:{type:"dayGrid",duration:{months:1},monthMode:!0,fixedWeekCount:!0}}}),Ms=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.getKeyInfo=function(){return{allDay:{},timed:{}}},t.prototype.getKeysForDateSpan=function(e){return e.allDay?["allDay"]:["timed"]},t.prototype.getKeysForEventDef=function(e){return e.allDay?yn(e)?["timed","allDay"]:["allDay"]:["timed"]},t}(br),ks=kt({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"short"});function Ps(e){var t=["fc-timegrid-slot","fc-timegrid-slot-label",e.isLabeled?"fc-scrollgrid-shrink":"fc-timegrid-slot-minor"];return Gr(Qr.Consumer,null,(function(n){if(!e.isLabeled)return Gr("td",{className:t.join(" "),"data-time":e.isoTimeStr});var r=n.dateEnv,o=n.options,i=n.viewApi,a=null==o.slotLabelFormat?ks:Array.isArray(o.slotLabelFormat)?kt(o.slotLabelFormat[0]):kt(o.slotLabelFormat),s={level:0,time:e.time,date:r.toDate(e.date),view:i,text:r.format(e.date,a)};return Gr(bo,{hookProps:s,classNames:o.slotLabelClassNames,content:o.slotLabelContent,defaultContent:Is,didMount:o.slotLabelDidMount,willUnmount:o.slotLabelWillUnmount},(function(n,r,o,i){return Gr("td",{ref:n,className:t.concat(r).join(" "),"data-time":e.isoTimeStr},Gr("div",{className:"fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame"},Gr("div",{className:"fc-timegrid-slot-label-cushion fc-scrollgrid-shrink-cushion",ref:o},i)))}))}))}function Is(e){return e.text}var _s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){return this.props.slatMetas.map((function(e){return Gr("tr",{key:e.key},Gr(Ps,r({},e)))}))},t}(no),Ns=kt({week:"short"}),Hs=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.allDaySplitter=new Ms,t.headerElRef=Yr(),t.rootElRef=Yr(),t.scrollerElRef=Yr(),t.state={slatCoords:null},t.handleScrollTopRequest=function(e){var n=t.scrollerElRef.current;n&&(n.scrollTop=e)},t.renderHeadAxis=function(e,n){void 0===n&&(n="");var o=t.context.options,i=t.props.dateProfile.renderRange,a=Ce(i.start,i.end),s=o.navLinks&&1===a?{"data-navlink":xr(i.start,"week"),tabIndex:0}:{};return o.weekNumbers&&"day"===e?Gr(Ra,{date:i.start,defaultFormat:Ns},(function(e,t,o,i){return Gr("th",{ref:e,className:["fc-timegrid-axis","fc-scrollgrid-shrink"].concat(t).join(" ")},Gr("div",{className:"fc-timegrid-axis-frame fc-scrollgrid-shrink-frame fc-timegrid-axis-frame-liquid",style:{height:n}},Gr("a",r({ref:o,className:"fc-timegrid-axis-cushion fc-scrollgrid-shrink-cushion fc-scrollgrid-sync-inner"},s),i)))})):Gr("th",{className:"fc-timegrid-axis"},Gr("div",{className:"fc-timegrid-axis-frame",style:{height:n}}))},t.renderTableRowAxis=function(e){var n=t.context,r=n.options,o=n.viewApi,i={text:r.allDayText,view:o};return Gr(bo,{hookProps:i,classNames:r.allDayClassNames,content:r.allDayContent,defaultContent:Os,didMount:r.allDayDidMount,willUnmount:r.allDayWillUnmount},(function(t,n,r,o){return Gr("td",{ref:t,className:["fc-timegrid-axis","fc-scrollgrid-shrink"].concat(n).join(" ")},Gr("div",{className:"fc-timegrid-axis-frame fc-scrollgrid-shrink-frame"+(null==e?" fc-timegrid-axis-frame-liquid":""),style:{height:e}},Gr("span",{className:"fc-timegrid-axis-cushion fc-scrollgrid-shrink-cushion fc-scrollgrid-sync-inner",ref:r},o)))}))},t.handleSlatCoords=function(e){t.setState({slatCoords:e})},t}return n(t,e),t.prototype.renderSimpleLayout=function(e,t,n){var r=this.context,o=this.props,i=[],a=ua(r.options);return e&&i.push({type:"header",key:"header",isSticky:a,chunk:{elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}}),t&&(i.push({type:"body",key:"all-day",chunk:{content:t}}),i.push({type:"body",key:"all-day-divider",outerContent:Gr("tr",{className:"fc-scrollgrid-section"},Gr("td",{className:"fc-timegrid-divider "+r.theme.getClass("tableCellShaded")}))})),i.push({type:"body",key:"body",liquid:!0,expandRows:Boolean(r.options.expandRows),chunk:{scrollerElRef:this.scrollerElRef,content:n}}),Gr(Po,{viewSpec:r.viewSpec,elRef:this.rootElRef},(function(e,t){return Gr("div",{className:["fc-timegrid"].concat(t).join(" "),ref:e},Gr(da,{liquid:!o.isHeightAuto&&!o.forPrint,cols:[{width:"shrink"}],sections:i}))}))},t.prototype.renderHScrollLayout=function(e,t,n,r,o,i,a){var s=this,l=this.context.pluginHooks.scrollGridImpl;if(!l)throw new Error("No ScrollGrid implementation");var u=this.context,c=this.props,d=!c.forPrint&&ua(u.options),p=!c.forPrint&&ca(u.options),f=[];e&&f.push({type:"header",key:"header",isSticky:d,syncRowHeights:!0,chunks:[{key:"axis",rowContent:function(e){return Gr("tr",null,s.renderHeadAxis("day",e.rowSyncHeights[0]))}},{key:"cols",elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}]}),t&&(f.push({type:"body",key:"all-day",syncRowHeights:!0,chunks:[{key:"axis",rowContent:function(e){return Gr("tr",null,s.renderTableRowAxis(e.rowSyncHeights[0]))}},{key:"cols",content:t}]}),f.push({key:"all-day-divider",type:"body",outerContent:Gr("tr",{className:"fc-scrollgrid-section"},Gr("td",{colSpan:2,className:"fc-timegrid-divider "+u.theme.getClass("tableCellShaded")}))}));var h=u.options.nowIndicator;return f.push({type:"body",key:"body",liquid:!0,expandRows:Boolean(u.options.expandRows),chunks:[{key:"axis",content:function(e){return Gr("div",{className:"fc-timegrid-axis-chunk"},Gr("table",{style:{height:e.expandRows?e.clientHeight:""}},e.tableColGroupNode,Gr("tbody",null,Gr(_s,{slatMetas:i}))),Gr("div",{className:"fc-timegrid-now-indicator-container"},Gr(zi,{unit:h?"minute":"day"},(function(e){var t=h&&a&&a.safeComputeTop(e);return"number"==typeof t?Gr(ga,{isAxis:!0,date:e},(function(e,n,r,o){return Gr("div",{ref:e,className:["fc-timegrid-now-indicator-arrow"].concat(n).join(" "),style:{top:t}},o)})):null}))))}},{key:"cols",scrollerElRef:this.scrollerElRef,content:n}]}),p&&f.push({key:"footer",type:"footer",isSticky:!0,chunks:[{key:"axis",content:la},{key:"cols",content:la}]}),Gr(Po,{viewSpec:u.viewSpec,elRef:this.rootElRef},(function(e,t){return Gr("div",{className:["fc-timegrid"].concat(t).join(" "),ref:e},Gr(l,{liquid:!c.isHeightAuto&&!c.forPrint,colGroups:[{width:"shrink",cols:[{width:"shrink"}]},{cols:[{span:r,minWidth:o}]}],sections:f}))}))},t.prototype.getAllDayMaxEventProps=function(){var e=this.context.options,t=e.dayMaxEvents,n=e.dayMaxEventRows;return!0!==t&&!0!==n||(t=void 0,n=5),{dayMaxEvents:t,dayMaxEventRows:n}},t}(mo);function Os(e){return e.text}var Ws=function(){function e(e,t,n){this.positions=e,this.dateProfile=t,this.slotDuration=n}return e.prototype.safeComputeTop=function(e){var t=this.dateProfile;if(vn(t.currentRange,e)){var n=we(e),r=e.valueOf()-n.valueOf();if(r>=ot(t.slotMinTime)&&r<ot(t.slotMaxTime))return this.computeTimeTop(Ke(r))}return null},e.prototype.computeDateTop=function(e,t){return t||(t=we(e)),this.computeTimeTop(Ke(e.valueOf()-t.valueOf()))},e.prototype.computeTimeTop=function(e){var t,n,r=this.positions,o=this.dateProfile,i=r.els.length,a=(e.milliseconds-ot(o.slotMinTime))/ot(this.slotDuration);return a=Math.max(0,a),a=Math.min(i,a),t=Math.floor(a),n=a-(t=Math.min(t,i-1)),r.tops[t]+r.getHeight(t)*n},e}(),As=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options,o=e.slatElRefs;return Gr("tbody",null,e.slatMetas.map((function(i,a){var s={time:i.time,date:t.dateEnv.toDate(i.date),view:t.viewApi},l=["fc-timegrid-slot","fc-timegrid-slot-lane",i.isLabeled?"":"fc-timegrid-slot-minor"];return Gr("tr",{key:i.key,ref:o.createRef(i.key)},e.axis&&Gr(Ps,r({},i)),Gr(bo,{hookProps:s,classNames:n.slotLaneClassNames,content:n.slotLaneContent,didMount:n.slotLaneDidMount,willUnmount:n.slotLaneWillUnmount},(function(e,t,n,r){return Gr("td",{ref:e,className:l.concat(t).join(" "),"data-time":i.isoTimeStr},r)})))})))},t}(no),Ls=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.rootElRef=Yr(),t.slatElRefs=new Ji,t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context;return Gr("div",{className:"fc-timegrid-slots",ref:this.rootElRef},Gr("table",{className:t.theme.getClass("table"),style:{minWidth:e.tableMinWidth,width:e.clientWidth,height:e.minHeight}},e.tableColGroupNode,Gr(As,{slatElRefs:this.slatElRefs,axis:e.axis,slatMetas:e.slatMetas})))},t.prototype.componentDidMount=function(){this.updateSizing()},t.prototype.componentDidUpdate=function(){this.updateSizing()},t.prototype.componentWillUnmount=function(){this.props.onCoords&&this.props.onCoords(null)},t.prototype.updateSizing=function(){var e,t=this.context,n=this.props;n.onCoords&&null!==n.clientWidth&&(this.rootElRef.current.offsetHeight&&n.onCoords(new Ws(new Ur(this.rootElRef.current,(e=this.slatElRefs.currentMap,n.slatMetas.map((function(t){return e[t.key]}))),!1,!0),this.props.dateProfile,t.options.slotDuration)))},t}(no);function Us(e,t){var n,r=[];for(n=0;n<t;n+=1)r.push([]);if(e)for(n=0;n<e.length;n+=1)r[e[n].col].push(e[n]);return r}function Bs(e,t){var n=[];if(e){for(a=0;a<t;a+=1)n[a]={affectedInstances:e.affectedInstances,isEvent:e.isEvent,segs:[]};for(var r=0,o=e.segs;r<o.length;r++){var i=o[r];n[i.col].segs.push(i)}}else for(var a=0;a<t;a+=1)n[a]=null;return n}function zs(e,t,n,r,o){return Vs(e,t,n,r),function(e,t){for(var n=0,r=e;n<r.length;n++){(c=r[n]).level=null,c.forwardCoord=null,c.backwardCoord=null,c.forwardPressure=null}var o,i=function(e){var t,n,r,o=[];for(t=0;t<e.length;t+=1){for(n=e[t],r=0;r<o.length&&Fs(n,o[r]).length;r+=1);n.level=r,(o[r]||(o[r]=[])).push(n)}return o}(e=Rn(e,t));if(function(e){var t,n,r,o,i;for(t=0;t<e.length;t+=1)for(n=e[t],r=0;r<n.length;r+=1)for((o=n[r]).forwardSegs=[],i=t+1;i<e.length;i+=1)Fs(o,e[i],o.forwardSegs)}(i),o=i[0]){for(var a=0,s=o;a<s.length;a++){js(c=s[a])}for(var l=0,u=o;l<u.length;l++){var c;Gs(c=u[l],0,0,t)}}return e}(e,o)}function Vs(e,t,n,r){for(var o=0,i=e;o<i.length;o++){var a=i[o];a.top=n.computeDateTop(a.start,t),a.bottom=Math.max(a.top+(r||0),n.computeDateTop(a.end,t))}}function Fs(e,t,n){void 0===n&&(n=[]);for(var r=0;r<t.length;r+=1)o=e,i=t[r],o.bottom>i.top&&o.top<i.bottom&&n.push(t[r]);var o,i;return n}function js(e){var t,n,r=e.forwardSegs,o=0;if(null==e.forwardPressure){for(t=0;t<r.length;t+=1)js(n=r[t]),o=Math.max(o,1+n.forwardPressure);e.forwardPressure=o}}function Gs(e,t,n,r){var o,i=e.forwardSegs;if(null==e.forwardCoord)for(i.length?(!function(e,t){var n=e.map(qs),r=[{field:"forwardPressure",order:-1},{field:"backwardCoord",order:1}].concat(t);n.sort((function(e,t){return ue(e,t,r)})),n.map((function(e){return e._seg}))}(i,r),Gs(i[0],t+1,n,r),e.forwardCoord=i[0].backwardCoord):e.forwardCoord=1,e.backwardCoord=e.forwardCoord-(e.forwardCoord-n)/(t+1),o=0;o<i.length;o+=1)Gs(i[o],0,e.forwardCoord,r)}function qs(e){var t=Dn(e);return t.forwardPressure=e.forwardPressure,t.backwardCoord=e.backwardCoord,t}var Ys=kt({hour:"numeric",minute:"2-digit",meridiem:!1}),Zs=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=["fc-timegrid-event","fc-v-event"];return this.props.isCondensed&&e.push("fc-timegrid-event-condensed"),Gr(fa,r({},this.props,{defaultTimeFormat:Ys,extraClassNames:e}))},t}(no),Xs=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props;return Gr(ma,{date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,extraHookProps:e.extraHookProps},(function(e,t){return t&&Gr("div",{className:"fc-timegrid-col-misc",ref:e},t)}))},t}(no);Di.timeGridEventCondensedHeight=30;var Ks=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context.options.selectMirror,o=t.eventDrag&&t.eventDrag.segs||t.eventResize&&t.eventResize.segs||n&&t.dateSelectionSegs||[],i=t.eventDrag&&t.eventDrag.affectedInstances||t.eventResize&&t.eventResize.affectedInstances||{};return Gr(Sa,{elRef:t.elRef,date:t.date,dateProfile:t.dateProfile,todayRange:t.todayRange,extraHookProps:t.extraHookProps},(function(a,s,l){return Gr("td",r({ref:a,className:["fc-timegrid-col"].concat(s,t.extraClassNames||[]).join(" ")},l,t.extraDataAttrs),Gr("div",{className:"fc-timegrid-col-frame"},Gr("div",{className:"fc-timegrid-col-bg"},e.renderFillSegs(t.businessHourSegs,"non-business"),e.renderFillSegs(t.bgEventSegs,"bg-event"),e.renderFillSegs(t.dateSelectionSegs,"highlight")),Gr("div",{className:"fc-timegrid-col-events"},e.renderFgSegs(t.fgEventSegs,i)),Gr("div",{className:"fc-timegrid-col-events"},e.renderFgSegs(o,{},Boolean(t.eventDrag),Boolean(t.eventResize),Boolean(n))),Gr("div",{className:"fc-timegrid-now-indicator-container"},e.renderNowIndicator(t.nowIndicatorSegs)),Gr(Xs,{date:t.date,dateProfile:t.dateProfile,todayRange:t.todayRange,extraHookProps:t.extraHookProps})))}))},t.prototype.renderFgSegs=function(e,t,n,r,o){var i=this.props;return i.forPrint?this.renderPrintFgSegs(e):i.slatCoords?this.renderPositionedFgSegs(e,t,n,r,o):null},t.prototype.renderPrintFgSegs=function(e){var t=this.props;return(e=Rn(e,this.context.options.eventOrder)).map((function(e){return Gr("div",{className:"fc-timegrid-event-harness",key:e.eventRange.instance.instanceId},Gr(Zs,r({seg:e,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:!1,isCondensed:!1},kn(e,t.todayRange,t.nowDate))))}))},t.prototype.renderPositionedFgSegs=function(e,t,n,o,i){var a=this,s=this.context,l=this.props;return(e=zs(e,l.date,l.slatCoords,s.options.eventMinHeight,s.options.eventOrder)).map((function(e){var s=e.eventRange.instance.instanceId,u=n||o||i?r({left:0,right:0},a.computeSegTopBottomCss(e)):a.computeFgSegPositionCss(e);return Gr("div",{className:"fc-timegrid-event-harness"+(e.level>0?" fc-timegrid-event-harness-inset":""),key:s,style:r({visibility:t[s]?"hidden":""},u)},Gr(Zs,r({seg:e,isDragging:n,isResizing:o,isDateSelecting:i,isSelected:s===l.eventSelection,isCondensed:e.bottom-e.top<Di.timeGridEventCondensedHeight},kn(e,l.todayRange,l.nowDate))))}))},t.prototype.renderFillSegs=function(e,t){var n=this,o=this.context,i=this.props;if(!i.slatCoords)return null;Vs(e,i.date,i.slatCoords,o.options.eventMinHeight);var a=e.map((function(e){return Gr("div",{key:In(e.eventRange),className:"fc-timegrid-bg-harness",style:n.computeSegTopBottomCss(e)},"bg-event"===t?Gr(Ca,r({seg:e},kn(e,i.todayRange,i.nowDate))):Ea(t))}));return Gr(Zr,null,a)},t.prototype.renderNowIndicator=function(e){var t=this.props,n=t.slatCoords,r=t.date;return n?e.map((function(e,t){return Gr(ga,{isAxis:!1,date:r,key:t},(function(t,o,i,a){return Gr("div",{ref:t,className:["fc-timegrid-now-indicator-line"].concat(o).join(" "),style:{top:n.computeDateTop(e.start,r)}},a)}))})):null},t.prototype.computeFgSegPositionCss=function(e){var t,n,o=this.context,i=o.isRtl,a=o.options.slotEventOverlap,s=e.backwardCoord,l=e.forwardCoord;a&&(l=Math.min(1,s+2*(l-s))),i?(t=1-l,n=s):(t=s,n=1-l);var u={zIndex:e.level+1,left:100*t+"%",right:100*n+"%"};return a&&e.forwardPressure&&(u[i?"marginLeft":"marginRight"]=20),r(r({},u),this.computeSegTopBottomCss(e))},t.prototype.computeSegTopBottomCss=function(e){return{top:e.top,bottom:-e.bottom}},t}(no),Js=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.splitFgEventSegs=pt(Us),t.splitBgEventSegs=pt(Us),t.splitBusinessHourSegs=pt(Us),t.splitNowIndicatorSegs=pt(Us),t.splitDateSelectionSegs=pt(Us),t.splitEventDrag=pt(Bs),t.splitEventResize=pt(Bs),t.rootElRef=Yr(),t.cellElRefs=new Ji,t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context.options.nowIndicator&&t.slatCoords&&t.slatCoords.safeComputeTop(t.nowDate),r=t.cells.length,o=this.splitFgEventSegs(t.fgEventSegs,r),i=this.splitBgEventSegs(t.bgEventSegs,r),a=this.splitBusinessHourSegs(t.businessHourSegs,r),s=this.splitNowIndicatorSegs(t.nowIndicatorSegs,r),l=this.splitDateSelectionSegs(t.dateSelectionSegs,r),u=this.splitEventDrag(t.eventDrag,r),c=this.splitEventResize(t.eventResize,r);return Gr("div",{className:"fc-timegrid-cols",ref:this.rootElRef},Gr("table",{style:{minWidth:t.tableMinWidth,width:t.clientWidth}},t.tableColGroupNode,Gr("tbody",null,Gr("tr",null,t.axis&&Gr("td",{className:"fc-timegrid-col fc-timegrid-axis"},Gr("div",{className:"fc-timegrid-col-frame"},Gr("div",{className:"fc-timegrid-now-indicator-container"},"number"==typeof n&&Gr(ga,{isAxis:!0,date:t.nowDate},(function(e,t,r,o){return Gr("div",{ref:e,className:["fc-timegrid-now-indicator-arrow"].concat(t).join(" "),style:{top:n}},o)}))))),t.cells.map((function(n,r){return Gr(Ks,{key:n.key,elRef:e.cellElRefs.createRef(n.key),dateProfile:t.dateProfile,date:n.date,nowDate:t.nowDate,todayRange:t.todayRange,extraHookProps:n.extraHookProps,extraDataAttrs:n.extraDataAttrs,extraClassNames:n.extraClassNames,fgEventSegs:o[r],bgEventSegs:i[r],businessHourSegs:a[r],nowIndicatorSegs:s[r],dateSelectionSegs:l[r],eventDrag:u[r],eventResize:c[r],slatCoords:t.slatCoords,eventSelection:t.eventSelection,forPrint:t.forPrint})}))))))},t.prototype.componentDidMount=function(){this.updateCoords()},t.prototype.componentDidUpdate=function(){this.updateCoords()},t.prototype.updateCoords=function(){var e,t=this.props;t.onColCoords&&null!==t.clientWidth&&t.onColCoords(new Ur(this.rootElRef.current,(e=this.cellElRefs.currentMap,t.cells.map((function(t){return e[t.key]}))),!0,!1))},t}(no);var $s=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.processSlotOptions=pt(Qs),t.state={slatCoords:null},t.handleScrollRequest=function(e){var n=t.props.onScrollTopRequest,r=t.state.slatCoords;if(n&&r){if(e.time){var o=r.computeTimeTop(e.time);(o=Math.ceil(o))&&(o+=1),n(o)}return!0}return!1},t.handleColCoords=function(e){t.colCoords=e},t.handleSlatCoords=function(e){t.setState({slatCoords:e}),t.props.onSlatCoords&&t.props.onSlatCoords(e)},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.state;return Gr("div",{className:"fc-timegrid-body",ref:e.rootElRef,style:{width:e.clientWidth,minWidth:e.tableMinWidth}},Gr(Ls,{axis:e.axis,dateProfile:e.dateProfile,slatMetas:e.slatMetas,clientWidth:e.clientWidth,minHeight:e.expandRows?e.clientHeight:"",tableMinWidth:e.tableMinWidth,tableColGroupNode:e.axis?e.tableColGroupNode:null,onCoords:this.handleSlatCoords}),Gr(Js,{cells:e.cells,axis:e.axis,dateProfile:e.dateProfile,businessHourSegs:e.businessHourSegs,bgEventSegs:e.bgEventSegs,fgEventSegs:e.fgEventSegs,dateSelectionSegs:e.dateSelectionSegs,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,todayRange:e.todayRange,nowDate:e.nowDate,nowIndicatorSegs:e.nowIndicatorSegs,clientWidth:e.clientWidth,tableMinWidth:e.tableMinWidth,tableColGroupNode:e.tableColGroupNode,slatCoords:t.slatCoords,onColCoords:this.handleColCoords,forPrint:e.forPrint}))},t.prototype.componentDidMount=function(){this.scrollResponder=this.context.createScrollResponder(this.handleScrollRequest)},t.prototype.componentDidUpdate=function(e){this.scrollResponder.update(e.dateProfile!==this.props.dateProfile)},t.prototype.componentWillUnmount=function(){this.scrollResponder.detach()},t.prototype.positionToHit=function(e,t){var n=this.context,r=n.dateEnv,o=n.options,i=this.colCoords,a=this.props.dateProfile,s=this.state.slatCoords,l=this.processSlotOptions(this.props.slotDuration,o.snapDuration),u=l.snapDuration,c=l.snapsPerSlot,d=i.leftToIndex(e),p=s.positions.topToIndex(t);if(null!=d&&null!=p){var f=s.positions.tops[p],h=s.positions.getHeight(p),g=(t-f)/h,v=p*c+Math.floor(g*c),m=this.props.cells[d].date,y=Qe(a.slotMinTime,et(u,v)),S=r.add(m,y);return{col:d,dateSpan:{range:{start:S,end:r.add(S,u)},allDay:!1},dayEl:i.els[d],relativeRect:{left:i.lefts[d],right:i.rights[d],top:f,bottom:f+h}}}return null},t}(no);function Qs(e,t){var n=t||e,r=it(e,n);return null===r&&(n=e,r=1),{snapDuration:n,snapsPerSlot:r}}var el=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.sliceRange=function(e,t){for(var n=[],r=0;r<t.length;r+=1){var o=pn(e,t[r]);o&&n.push({start:o.start,end:o.end,isStart:o.start.valueOf()===e.start.valueOf(),isEnd:o.end.valueOf()===e.end.valueOf(),col:r})}return n},t}(Yi),tl=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buildDayRanges=pt(nl),t.slicer=new el,t.timeColsRef=Yr(),t.handleRootEl=function(e){e?t.context.registerInteractiveComponent(t,{el:e}):t.context.unregisterInteractiveComponent(t)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,o=t.dateProfile,i=t.dayTableModel,a=n.options.nowIndicator,s=this.buildDayRanges(i,o,n.dateEnv);return Gr(zi,{unit:a?"minute":"day"},(function(l,u){return Gr($s,r({ref:e.timeColsRef,rootElRef:e.handleRootEl},e.slicer.sliceProps(t,o,null,n,s),{forPrint:t.forPrint,axis:t.axis,dateProfile:o,slatMetas:t.slatMetas,slotDuration:t.slotDuration,cells:i.cells[0],tableColGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,clientWidth:t.clientWidth,clientHeight:t.clientHeight,expandRows:t.expandRows,nowDate:l,nowIndicatorSegs:a&&e.slicer.sliceNowDate(l,n,s),todayRange:u,onScrollTopRequest:t.onScrollTopRequest,onSlatCoords:t.onSlatCoords}))}))},t.prototype.queryHit=function(e,t){var n=this.timeColsRef.current.positionToHit(e,t);return n?{component:this,dateSpan:n.dateSpan,dayEl:n.dayEl,rect:{left:n.relativeRect.left,right:n.relativeRect.right,top:n.relativeRect.top,bottom:n.relativeRect.bottom},layer:0}:null},t}(mo);function nl(e,t,n){for(var r=[],o=0,i=e.headerDates;o<i.length;o++){var a=i[o];r.push({start:n.add(a,t.slotMinTime),end:n.add(a,t.slotMaxTime)})}return r}var rl=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}];function ol(e,t,n,r,o){for(var i=new Date(0),a=e,s=Ke(0),l=n||function(e){var t,n,r;for(t=rl.length-1;t>=0;t-=1)if(n=Ke(rl[t]),null!==(r=it(n,e))&&r>1)return n;return e}(r),u=[];ot(a)<ot(t);){var c=o.add(i,a),d=null!==it(s,l);u.push({date:c,time:a,key:c.toISOString(),isoTimeStr:lt(c),isLabeled:d}),a=Qe(a,r),s=Qe(s,r)}return u}var il=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buildTimeColsModel=pt(al),t.buildSlatMetas=pt(ol),t}return n(t,e),t.prototype.render=function(){var e=this,t=this.context,n=t.options,o=t.dateEnv,i=t.dateProfileGenerator,a=this.props,s=a.dateProfile,l=this.buildTimeColsModel(s,i),u=this.allDaySplitter.splitProps(a),c=this.buildSlatMetas(s.slotMinTime,s.slotMaxTime,n.slotLabelInterval,n.slotDuration,o),d=n.dayMinWidth,p=!d,f=d,h=n.dayHeaders&&Gr(Fi,{dates:l.headerDates,dateProfile:s,datesRepDistinctDays:!0,renderIntro:p?this.renderHeadAxis:null}),g=!1!==n.allDaySlot&&function(t){return Gr(Ds,r({},u.allDay,{dateProfile:s,dayTableModel:l,nextDayThreshold:n.nextDayThreshold,tableMinWidth:t.tableMinWidth,colGroupNode:t.tableColGroupNode,renderRowIntro:p?e.renderTableRowAxis:null,showWeekNumbers:!1,expandRows:!1,headerAlignElRef:e.headerElRef,clientWidth:t.clientWidth,clientHeight:t.clientHeight,forPrint:a.forPrint},e.getAllDayMaxEventProps()))},v=function(t){return Gr(tl,r({},u.timed,{dayTableModel:l,dateProfile:s,axis:p,slotDuration:n.slotDuration,slatMetas:c,forPrint:a.forPrint,tableColGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,clientWidth:t.clientWidth,clientHeight:t.clientHeight,onSlatCoords:e.handleSlatCoords,expandRows:t.expandRows,onScrollTopRequest:e.handleScrollTopRequest}))};return f?this.renderHScrollLayout(h,g,v,l.colCnt,d,c,this.state.slatCoords):this.renderSimpleLayout(h,g,v)},t}(Hs);function al(e,t){var n=new Gi(e.renderRange,t);return new qi(n,!1)}var sl=yo({initialView:"timeGridWeek",optionRefiners:{allDaySlot:Boolean},views:{timeGrid:{component:il,usesMinMaxTime:!0,allDaySlot:!0,slotDuration:"00:30:00",slotEventOverlap:!0},timeGridDay:{type:"timeGrid",duration:{days:1}},timeGridWeek:{type:"timeGrid",duration:{weeks:1}}}}),ll=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=e.dayDate,n=e.todayRange,o=this.context,i=o.theme,a=o.dateEnv,s=o.options,l=o.viewApi,u=Dr(t,n),c=s.listDayFormat?a.format(t,s.listDayFormat):"",d=s.listDaySideFormat?a.format(t,s.listDaySideFormat):"",p=s.navLinks?xr(t):null,f=r({date:a.toDate(t),view:l,text:c,sideText:d,navLinkData:p},u),h=["fc-list-day"].concat(wr(u,i));return Gr(bo,{hookProps:f,classNames:s.dayHeaderClassNames,content:s.dayHeaderContent,defaultContent:ul,didMount:s.dayHeaderDidMount,willUnmount:s.dayHeaderWillUnmount},(function(e,n,r,o){return Gr("tr",{ref:e,className:h.concat(n).join(" "),"data-date":st(t)},Gr("th",{colSpan:3},Gr("div",{className:"fc-list-day-cushion "+i.getClass("tableCellShaded"),ref:r},o)))}))},t}(no);function ul(e){var t=e.navLinkData?{"data-navlink":e.navLinkData,tabIndex:0}:{};return Gr(Zr,null,e.text&&Gr("a",r({className:"fc-list-day-text"},t),e.text),e.sideText&&Gr("a",r({className:"fc-list-day-side-text"},t),e.sideText))}var cl=kt({hour:"numeric",minute:"2-digit",meridiem:"short"}),dl=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=e.seg,r=t.options.eventTimeFormat||cl;return Gr(pa,{seg:n,timeText:"",disableDragging:!0,disableResizing:!0,defaultContent:pl,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday,isSelected:e.isSelected,isDragging:e.isDragging,isResizing:e.isResizing,isDateSelecting:e.isDateSelecting},(function(e,o,i,a,s){return Gr("tr",{className:["fc-list-event",s.event.url?"fc-event-forced-url":""].concat(o).join(" "),ref:e},function(e,t,n){var r=n.options;if(!1!==r.displayEventTime){var o=e.eventRange.def,i=e.eventRange.instance,a=!1,s=void 0;if(o.allDay?a=!0:ln(e.eventRange.range)?e.isStart?s=Mn(e,t,n,null,null,i.range.start,e.end):e.isEnd?s=Mn(e,t,n,null,null,e.start,i.range.end):a=!0:s=Mn(e,t,n),a){var l={text:n.options.allDayText,view:n.viewApi};return Gr(bo,{hookProps:l,classNames:r.allDayClassNames,content:r.allDayContent,defaultContent:fl,didMount:r.allDayDidMount,willUnmount:r.allDayWillUnmount},(function(e,t,n,r){return Gr("td",{className:["fc-list-event-time"].concat(t).join(" "),ref:e},r)}))}return Gr("td",{className:"fc-list-event-time"},s)}return null}(n,r,t),Gr("td",{className:"fc-list-event-graphic"},Gr("span",{className:"fc-list-event-dot",style:{borderColor:s.borderColor||s.backgroundColor}})),Gr("td",{className:"fc-list-event-title",ref:i},a))}))},t}(no);function pl(e){var t=e.event,n=t.url;return Gr("a",r({},n?{href:n}:{}),t.title)}function fl(e){return e.text}var hl=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.computeDateVars=pt(vl),t.eventStoreToSegs=pt(t._eventStoreToSegs),t.setRootEl=function(e){e?t.context.registerInteractiveComponent(t,{el:e}):t.context.unregisterInteractiveComponent(t)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,r=["fc-list",n.theme.getClass("table"),!1!==n.options.stickyHeaderDates?"fc-list-sticky":""],o=this.computeDateVars(t.dateProfile),i=o.dayDates,a=o.dayRanges,s=this.eventStoreToSegs(t.eventStore,t.eventUiBases,a);return Gr(Po,{viewSpec:n.viewSpec,elRef:this.setRootEl},(function(n,o){return Gr("div",{ref:n,className:r.concat(o).join(" ")},Gr(Ki,{liquid:!t.isHeightAuto,overflowX:t.isHeightAuto?"visible":"hidden",overflowY:t.isHeightAuto?"visible":"auto"},s.length>0?e.renderSegList(s,i):e.renderEmptyMessage()))}))},t.prototype.renderEmptyMessage=function(){var e=this.context,t=e.options,n=e.viewApi,r={text:t.noEventsText,view:n};return Gr(bo,{hookProps:r,classNames:t.noEventsClassNames,content:t.noEventsContent,defaultContent:gl,didMount:t.noEventsDidMount,willUnmount:t.noEventsWillUnmount},(function(e,t,n,r){return Gr("div",{className:["fc-list-empty"].concat(t).join(" "),ref:e},Gr("div",{className:"fc-list-empty-cushion",ref:n},r))}))},t.prototype.renderSegList=function(e,t){var n=this.context,o=n.theme,i=n.options,a=function(e){var t,n,r=[];for(t=0;t<e.length;t+=1)n=e[t],(r[n.dayIndex]||(r[n.dayIndex]=[])).push(n);return r}(e);return Gr(zi,{unit:"day"},(function(e,n){for(var s=[],l=0;l<a.length;l+=1){var u=a[l];if(u){var c=t[l].toISOString();s.push(Gr(ll,{key:c,dayDate:t[l],todayRange:n}));for(var d=0,p=u=Rn(u,i.eventOrder);d<p.length;d++){var f=p[d];s.push(Gr(dl,r({key:c+":"+f.eventRange.instance.instanceId,seg:f,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:!1},kn(f,n,e))))}}}return Gr("table",{className:"fc-list-table "+o.getClass("table")},Gr("tbody",null,s))}))},t.prototype._eventStoreToSegs=function(e,t,n){return this.eventRangesToSegs(mn(e,t,this.props.dateProfile.activeRange,this.context.options.nextDayThreshold).fg,n)},t.prototype.eventRangesToSegs=function(e,t){for(var n=[],r=0,o=e;r<o.length;r++){var i=o[r];n.push.apply(n,this.eventRangeToSegs(i,t))}return n},t.prototype.eventRangeToSegs=function(e,t){var n,r,o,i=this.context.dateEnv,a=this.context.options.nextDayThreshold,s=e.range,l=e.def.allDay,u=[];for(n=0;n<t.length;n+=1)if((r=pn(s,t[n]))&&(o={component:this,eventRange:e,start:r.start,end:r.end,isStart:e.isStart&&r.start.valueOf()===s.start.valueOf(),isEnd:e.isEnd&&r.end.valueOf()===s.end.valueOf(),dayIndex:n},u.push(o),!o.isEnd&&!l&&n+1<t.length&&s.end<i.add(t[n+1].start,a))){o.end=s.end,o.isEnd=!0;break}return u},t}(mo);function gl(e){return e.text}function vl(e){for(var t=we(e.renderRange.start),n=e.renderRange.end,r=[],o=[];t<n;)r.push(t),o.push({start:t,end:ye(t,1)}),t=ye(t,1);return{dayDates:r,dayRanges:o}}function ml(e){return!1===e?null:kt(e)}var yl=yo({optionRefiners:{listDayFormat:ml,listDaySideFormat:ml,noEventsClassNames:Ut,noEventsContent:Ut,noEventsDidMount:Ut,noEventsWillUnmount:Ut},views:{list:{component:hl,buttonTextKey:"list",listDayFormat:{month:"long",day:"numeric",year:"numeric"}},listDay:{type:"list",duration:{days:1},listDayFormat:{weekday:"long"}},listWeek:{type:"list",duration:{weeks:1},listDayFormat:{weekday:"long"},listDaySideFormat:{month:"long",day:"numeric",year:"numeric"}},listMonth:{type:"list",duration:{month:1},listDaySideFormat:{weekday:"long"}},listYear:{type:"list",duration:{year:1},listDaySideFormat:{weekday:"long"}}}}),Sl=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t}(Fr);Sl.prototype.classes={root:"fc-theme-bootstrap",table:"table-bordered",tableCellShaded:"table-active",buttonGroup:"btn-group",button:"btn btn-primary",buttonActive:"active",popover:"popover",popoverHeader:"popover-header",popoverContent:"popover-body"},Sl.prototype.baseIconClass="fa",Sl.prototype.iconClasses={close:"fa-times",prev:"fa-chevron-left",next:"fa-chevron-right",prevYear:"fa-angle-double-left",nextYear:"fa-angle-double-right"},Sl.prototype.rtlIconClasses={prev:"fa-chevron-right",next:"fa-chevron-left",prevYear:"fa-angle-double-right",nextYear:"fa-angle-double-left"},Sl.prototype.iconOverrideOption="bootstrapFontAwesome",Sl.prototype.iconOverrideCustomButtonOption="bootstrapFontAwesome",Sl.prototype.iconOverridePrefix="fa-";var El=yo({themeClasses:{bootstrap:Sl}});var Cl=yo({eventSourceDefs:[{parseMeta:function(e){var t=e.googleCalendarId;return!t&&e.url&&(t=function(e){var t;if(/^[^/]+@([^/.]+\.)*(google|googlemail|gmail)\.com$/.test(e))return e;if((t=/^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^/]*)/.exec(e))||(t=/^https?:\/\/www.google.com\/calendar\/feeds\/([^/]*)/.exec(e)))return decodeURIComponent(t[1]);return null}(e.url)),t?{googleCalendarId:t,googleCalendarApiKey:e.googleCalendarApiKey,googleCalendarApiBase:e.googleCalendarApiBase,extraParams:e.extraParams}:null},fetch:function(e,t,n){var o=e.context,i=o.dateEnv,a=o.options,s=e.eventSource.meta,l=s.googleCalendarApiKey||a.googleCalendarApiKey;if(l){var u=function(e){var t=e.googleCalendarApiBase;t||(t="https://www.googleapis.com/calendar/v3/calendars");return t+"/"+encodeURIComponent(e.googleCalendarId)+"/events"}(s),c=s.extraParams,d="function"==typeof c?c():c,p=function(e,t,n,o){var i,a,s;o.canComputeOffset?(a=o.formatIso(e.start),s=o.formatIso(e.end)):(a=ye(e.start,-1).toISOString(),s=ye(e.end,1).toISOString());i=r(r({},n||{}),{key:t,timeMin:a,timeMax:s,singleEvents:!0,maxResults:9999}),"local"!==o.timeZone&&(i.timeZone=o.timeZone);return i}(e.range,l,d,i);Jo("GET",u,p,(function(e,r){var o,i;e.error?n({message:"Google Calendar API: "+e.error.message,errors:e.error.errors,xhr:r}):t({rawEvents:(o=e.items,i=p.timeZone,o.map((function(e){return function(e,t){var n=e.htmlLink||null;n&&t&&(n=function(e,t){return e.replace(/(\?.*?)?(#|$)/,(function(e,n,r){return(n?n+"&":"?")+t+r}))}(n,"ctz="+t));return{id:e.id,title:e.summary,start:e.start.dateTime||e.start.date,end:e.end.dateTime||e.end.date,url:n,location:e.location,description:e.description}}(e,i)}))),xhr:r})}),(function(e,t){n({message:e,xhr:t})}))}else n({message:"Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/"})}}],optionRefiners:{googleCalendarApiKey:String},eventSourceRefiners:{googleCalendarApiKey:String,googleCalendarId:String,googleCalendarApiBase:String,extraParams:Ut}}),bl=["GPL-My-Project-Is-Open-Source","CC-Attribution-NonCommercial-NoDerivatives"],Rl={position:"absolute",zIndex:99999,bottom:"1px",left:"1px",background:"#eee",borderColor:"#ddd",borderStyle:"solid",borderWidth:"1px 1px 0 0",padding:"2px 4px",fontSize:"12px",borderTopRightRadius:"3px"};var Dl,wl=yo({optionRefiners:{schedulerLicenseKey:String},viewContainerAppends:[function(e){var t=e.options.schedulerLicenseKey,n="undefined"!=typeof window?window.location.href:"";if(!/\w+:\/\/fullcalendar\.io\/|\/examples\/[\w-]+\.html$/.test(n)){var r=function(e){if(-1!==bl.indexOf(e))return"valid";var t=(e||"").match(/^(\d+)-fcs-(\d+)$/);if(t&&10===t[1].length){var n=new Date(1e3*parseInt(t[2],10)),r=new Date(Di.mockSchedulerReleaseDate||"2021-01-16");if(_e(r))return ye(r,-372)<n?"valid":"outdated"}return"invalid"}(t);if("valid"!==r)return Gr("div",{className:"fc-license-message",style:Rl},"outdated"===r?Gr(Zr,null,"Your license key is too old to work with this version. ",Gr("a",{href:"http://fullcalendar.io/docs/schedulerLicenseKey#outdated"},"More Info")):Gr(Zr,null,"Your license key is invalid. ",Gr("a",{href:"http://fullcalendar.io/docs/schedulerLicenseKey#invalid"},"More Info")))}return null}]}),Tl="wheel mousewheel DomMouseScroll MozMousePixelScroll".split(" "),xl=function(){function e(e){var t=this;this.el=e,this.emitter=new Lr,this.isScrolling=!1,this.isTouching=!1,this.isRecentlyWheeled=!1,this.isRecentlyScrolled=!1,this.wheelWaiter=new ri(this._handleWheelWaited.bind(this)),this.scrollWaiter=new ri(this._handleScrollWaited.bind(this)),this.handleScroll=function(){t.startScroll(),t.emitter.trigger("scroll",t.isRecentlyWheeled,t.isTouching),t.isRecentlyScrolled=!0,t.scrollWaiter.request(500)},this.handleWheel=function(){t.isRecentlyWheeled=!0,t.wheelWaiter.request(500)},this.handleTouchStart=function(){t.isTouching=!0},this.handleTouchEnd=function(){t.isTouching=!1,t.isRecentlyScrolled||t.endScroll()},e.addEventListener("scroll",this.handleScroll),e.addEventListener("touchstart",this.handleTouchStart,{passive:!0}),e.addEventListener("touchend",this.handleTouchEnd);for(var n=0,r=Tl;n<r.length;n++){var o=r[n];e.addEventListener(o,this.handleWheel)}}return e.prototype.destroy=function(){var e=this.el;e.removeEventListener("scroll",this.handleScroll),e.removeEventListener("touchstart",this.handleTouchStart,{passive:!0}),e.removeEventListener("touchend",this.handleTouchEnd);for(var t=0,n=Tl;t<n.length;t++){var r=n[t];e.removeEventListener(r,this.handleWheel)}},e.prototype.startScroll=function(){this.isScrolling||(this.isScrolling=!0,this.emitter.trigger("scrollStart",this.isRecentlyWheeled,this.isTouching))},e.prototype.endScroll=function(){this.isScrolling&&(this.emitter.trigger("scrollEnd"),this.isScrolling=!1,this.isRecentlyScrolled=!0,this.isRecentlyWheeled=!1,this.scrollWaiter.clear(),this.wheelWaiter.clear())},e.prototype._handleScrollWaited=function(){this.isRecentlyScrolled=!1,this.isTouching||this.endScroll()},e.prototype._handleWheelWaited=function(){this.isRecentlyWheeled=!1},e}();function Ml(e){var t=e.scrollLeft;if("rtl"===window.getComputedStyle(e).direction)switch(Pl()){case"negative":t=e.scrollWidth-e.clientWidth+t;break;case"reverse":t=e.scrollWidth-e.clientWidth-t}return t}function kl(e,t){if("rtl"===window.getComputedStyle(e).direction)switch(Pl()){case"positive":t=e.scrollWidth-e.clientWidth+t;break;case"reverse":t=-t}e.scrollLeft=t}function Pl(){return Dl||(Dl=function(){var e,t=document.createElement("div");t.style.position="absolute",t.style.top="-1000px",t.style.width="1px",t.style.height="1px",t.style.overflow="scroll",t.style.direction="rtl",t.style.fontSize="100px",t.innerHTML="A",document.body.appendChild(t),t.scrollLeft>0?e="positive":(t.scrollLeft=1,e=t.scrollLeft>0?"reverse":"negative");return z(t),e}())}var Il="undefined"!=typeof navigator&&/Edge/.test(navigator.userAgent),_l=function(){function e(e,t){var n=this;this.scrollEl=e,this.isRtl=t,this.usingRelative=null,this.updateSize=function(){var e=n.scrollEl,t=j(e,".fc-sticky"),r=n.queryElGeoms(t),o=e.clientWidth,i=e.clientHeight;n.usingRelative?function(e,t,n,r,o){e.forEach((function(e,i){var a,s,l=t[i],u=l.naturalBound,c=l.parentBound,d=c.right-c.left,p=c.bottom-c.bottom;d>r||p>o?(a=n[i].left-u.left,s=n[i].top-u.top):(a="",s=""),Y(e,{position:"relative",left:a,right:-a,top:s})}))}(t,r,n.computeElDestinations(r,o),o,i):function(e,t,n){e.forEach((function(e,r){var o,i=t[r],a=i.textAlign,s=i.elWidth,l=i.parentBound,u=l.right-l.left;Y(e,{left:o="center"===a&&u>n?(n-s)/2:"",right:o,top:0})}))}(t,r,o)},this.usingRelative=!function(){var e=document.createElement("div");e.className="fc-sticky",document.body.appendChild(e);var t=window.getComputedStyle(e).position;if(z(e),-1!==t.indexOf("sticky"))return t;return null}()||Il&&t,this.usingRelative&&(this.listener=new xl(e),this.listener.emitter.on("scrollEnd",this.updateSize))}return e.prototype.destroy=function(){this.listener&&this.listener.destroy()},e.prototype.queryElGeoms=function(e){for(var t=this.scrollEl,n=this.isRtl,r=function(e){var t=e.getBoundingClientRect(),n=Nr(e);return{left:t.left+n.borderLeft+n.scrollbarLeft-Ml(e),top:t.top+n.borderTop-e.scrollTop}}(t),o=[],i=0,a=e;i<a.length;i++){var s=a[i],l=vr(Hr(s.parentNode,!0,!0),-r.left,-r.top),u=s.getBoundingClientRect(),c=window.getComputedStyle(s),d=window.getComputedStyle(s.parentNode).textAlign,p=null;"start"===d?d=n?"right":"left":"end"===d&&(d=n?"left":"right"),"sticky"!==c.position&&(p=vr(u,-r.left-(parseFloat(c.left)||0),-r.top-(parseFloat(c.top)||0))),o.push({parentBound:l,naturalBound:p,elWidth:u.width,elHeight:u.height,textAlign:d})}return o},e.prototype.computeElDestinations=function(e,t){var n=this.scrollEl,r=n.scrollTop,o=Ml(n),i=o+t;return e.map((function(e){var t,n,a=e.elWidth,s=e.elHeight,l=e.parentBound,u=e.naturalBound;switch(e.textAlign){case"left":t=o;break;case"right":t=i-a;break;case"center":t=(o+i)/2-a/2}return t=Math.min(t,l.right-a),t=Math.max(t,l.left),n=r,n=Math.min(n,l.bottom-s),{left:t,top:n=Math.max(n,u.top)}}))},e}();var Nl=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.elRef=Yr(),t.state={xScrollbarWidth:0,yScrollbarWidth:0},t.handleScroller=function(e){t.scroller=e,io(t.props.scrollerRef,e)},t.handleSizing=function(){var e=t.props;"scroll-hidden"===e.overflowY&&t.setState({yScrollbarWidth:t.scroller.getYScrollbarWidth()}),"scroll-hidden"===e.overflowX&&t.setState({xScrollbarWidth:t.scroller.getXScrollbarWidth()})},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.state,n=this.context.isRtl&&Pr(),r=0,o=0,i=0;return"scroll-hidden"===e.overflowX&&(i=t.xScrollbarWidth),"scroll-hidden"===e.overflowY&&null!=t.yScrollbarWidth&&(n?r=t.yScrollbarWidth:o=t.yScrollbarWidth),Gr("div",{ref:this.elRef,className:"fc-scroller-harness"+(e.liquid?" fc-scroller-harness-liquid":"")},Gr(Ki,{ref:this.handleScroller,elRef:this.props.scrollerElRef,overflowX:"scroll-hidden"===e.overflowX?"scroll":e.overflowX,overflowY:"scroll-hidden"===e.overflowY?"scroll":e.overflowY,overcomeLeft:r,overcomeRight:o,overcomeBottom:i,maxHeight:"number"==typeof e.maxHeight?e.maxHeight+("scroll-hidden"===e.overflowX?t.xScrollbarWidth:0):"",liquid:e.liquid,liquidIsAbsolute:!0},e.children))},t.prototype.componentDidMount=function(){this.handleSizing(),this.context.addResizeHandler(this.handleSizing)},t.prototype.componentDidUpdate=function(e){ze(e,this.props)||this.handleSizing()},t.prototype.componentWillUnmount=function(){this.context.removeResizeHandler(this.handleSizing)},t.prototype.needsXScrolling=function(){return this.scroller.needsXScrolling()},t.prototype.needsYScrolling=function(){return this.scroller.needsYScrolling()},t}(no),Hl=function(){function e(e,t){var n=this;this.isVertical=e,this.scrollEls=t,this.isPaused=!1,this.scrollListeners=t.map((function(e){return n.bindScroller(e)}))}return e.prototype.destroy=function(){for(var e=0,t=this.scrollListeners;e<t.length;e++){t[e].destroy()}},e.prototype.bindScroller=function(e){var t=this,n=this.scrollEls,r=this.isVertical,o=new xl(e);return o.emitter.on("scroll",(function(o,i){if(!t.isPaused&&((!t.masterEl||t.masterEl!==e&&(o||i))&&t.assignMaster(e),t.masterEl===e))for(var a=0,s=n;a<s.length;a++){var l=s[a];l!==e&&(r?l.scrollTop=e.scrollTop:l.scrollLeft=e.scrollLeft)}})),o.emitter.on("scrollEnd",(function(){t.masterEl===e&&(t.masterEl=null)})),o},e.prototype.assignMaster=function(e){this.masterEl=e;for(var t=0,n=this.scrollListeners;t<n.length;t++){var r=n[t];r.el!==e&&r.endScroll()}},e.prototype.forceScrollLeft=function(e){this.isPaused=!0;for(var t=0,n=this.scrollListeners;t<n.length;t++){kl(n[t].el,e)}this.isPaused=!1},e.prototype.forceScrollTop=function(e){this.isPaused=!0;for(var t=0,n=this.scrollListeners;t<n.length;t++){n[t].el.scrollTop=e}this.isPaused=!1},e}(),Ol=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.compileColGroupStats=ht(Ul,Vl),t.renderMicroColGroups=ht(ra),t.clippedScrollerRefs=new Ji,t.scrollerElRefs=new Ji(t._handleScrollerEl.bind(t)),t.chunkElRefs=new Ji(t._handleChunkEl.bind(t)),t.getStickyScrolling=ht(Gl,null,ql),t.getScrollSyncersBySection=gt(Fl.bind(t,!0),null,jl),t.getScrollSyncersByColumn=gt(Fl.bind(t,!1),null,jl),t.stickyScrollings=[],t.scrollSyncersBySection={},t.scrollSyncersByColumn={},t.rowUnstableMap=new Map,t.rowInnerMaxHeightMap=new Map,t.anyRowHeightsChanged=!1,t.recentSizingCnt=0,t.state={shrinkWidths:[],forceYScrollbars:!1,forceXScrollbars:!1,scrollerClientWidths:{},scrollerClientHeights:{},sectionRowMaxHeights:[]},t.handleSizing=function(e,n){if(t.allowSizing()){n||(t.anyRowHeightsChanged=!0);var o={};(e||!n&&!t.rowUnstableMap.size)&&(o.sectionRowMaxHeights=t.computeSectionRowMaxHeights()),t.setState(r(r({shrinkWidths:t.computeShrinkWidths()},t.computeScrollerDims()),o),(function(){t.rowUnstableMap.size||t.updateStickyScrolling()}))}},t.handleRowHeightChange=function(e,n){var r=t,o=r.rowUnstableMap,i=r.rowInnerMaxHeightMap;if(n){o.delete(e);var a=Al(e);i.has(e)&&i.get(e)===a||(i.set(e,a),t.anyRowHeightsChanged=!0),!o.size&&t.anyRowHeightsChanged&&(t.anyRowHeightsChanged=!1,t.setState({sectionRowMaxHeights:t.computeSectionRowMaxHeights()}))}else o.set(e,!0)},t}return n(t,e),t.prototype.render=function(){for(var e,t=this.props,n=this.state,r=this.context,i=n.shrinkWidths,a=this.compileColGroupStats(t.colGroups.map((function(e){return[e]}))),s=this.renderMicroColGroups(a.map((function(e,t){return[e.cols,i[t]]}))),l=aa(t.liquid,r),u=this.getDims(),c=(u[0],u[1],t.sections),d=c.length,p=0,f=[],h=[],g=[];p<d&&"header"===(e=c[p]).type;)f.push(this.renderSection(e,p,a,s,n.sectionRowMaxHeights)),p+=1;for(;p<d&&"body"===(e=c[p]).type;)h.push(this.renderSection(e,p,a,s,n.sectionRowMaxHeights)),p+=1;for(;p<d&&"footer"===(e=c[p]).type;)g.push(this.renderSection(e,p,a,s,n.sectionRowMaxHeights)),p+=1;var v=!Er();return Gr("table",{ref:t.elRef,className:l.join(" ")},function(e,t){var n=e.map((function(e,n){var r=e.width;return"shrink"===r&&(r=e.totalColWidth+oa(t[n])+1),Gr("col",{style:{width:r}})}));return Gr.apply(void 0,o(["colgroup",{}],n))}(a,i),Boolean(!v&&f.length)&&Gr.apply(void 0,o(["thead",{}],f)),Boolean(!v&&h.length)&&Gr.apply(void 0,o(["tbody",{}],h)),Boolean(!v&&g.length)&&Gr.apply(void 0,o(["tfoot",{}],g)),v&&Gr.apply(void 0,o(["tbody",{}],f,h,g)))},t.prototype.renderSection=function(e,t,n,r,o){var i=this;return"outerContent"in e?Gr(Zr,{key:e.key},e.outerContent):Gr("tr",{key:e.key,className:sa(e,this.props.liquid).join(" ")},e.chunks.map((function(a,s){return i.renderChunk(e,t,n[s],r[s],a,s,(o[t]||[])[s]||[])})))},t.prototype.renderChunk=function(e,t,n,r,o,i,a){if("outerContent"in o)return Gr(Zr,{key:o.key},o.outerContent);var s=this.state,l=s.scrollerClientWidths,u=s.scrollerClientHeights,c=this.getDims(),d=c[0],p=c[1],f=t*p+i,h=i===(!this.context.isRtl||Pr()?p-1:0),g=t===d-1,v=g&&s.forceXScrollbars,m=h&&s.forceYScrollbars,y=n&&n.allowXScrolling,S=ea(this.props,e),E=Qi(this.props,e),C=e.expandRows&&E,b=ta(e,o,{tableColGroupNode:r,tableMinWidth:n&&n.totalColMinWidth||"",clientWidth:void 0!==l[f]?l[f]:null,clientHeight:void 0!==u[f]?u[f]:null,expandRows:C,syncRowHeights:Boolean(e.syncRowHeights),rowSyncHeights:a,reportRowHeightChange:this.handleRowHeightChange}),R=v?g?"scroll":"scroll-hidden":y?g?"auto":"scroll-hidden":"hidden",D=m?h?"scroll":"scroll-hidden":S?h?"auto":"scroll-hidden":"hidden";return b=Gr(Nl,{ref:this.clippedScrollerRefs.createRef(f),scrollerElRef:this.scrollerElRefs.createRef(f),overflowX:R,overflowY:D,liquid:E,maxHeight:e.maxHeight},b),Gr("td",{key:o.key,ref:this.chunkElRefs.createRef(f)},b)},t.prototype.componentDidMount=function(){this.updateScrollSyncers(),this.handleSizing(!1),this.context.addResizeHandler(this.handleSizing)},t.prototype.componentDidUpdate=function(e,t){this.updateScrollSyncers(),this.handleSizing(!1,t.sectionRowMaxHeights!==this.state.sectionRowMaxHeights)},t.prototype.componentWillUnmount=function(){this.context.removeResizeHandler(this.handleSizing),this.destroyStickyScrolling(),this.destroyScrollSyncers()},t.prototype.allowSizing=function(){var e=new Date;return!this.lastSizingDate||e.valueOf()>this.lastSizingDate.valueOf()+1e3?(this.lastSizingDate=e,this.recentSizingCnt=0,!0):(this.recentSizingCnt+=1)<=10},t.prototype.computeShrinkWidths=function(){var e=this,t=this.compileColGroupStats(this.props.colGroups.map((function(e){return[e]}))),n=this.getDims(),r=n[0],o=n[1],i=r*o,a=[];return t.forEach((function(t,n){if(t.hasShrinkCol){var r=e.chunkElRefs.collect(n,i,o);a[n]=$i(r)}})),a},t.prototype.computeSectionRowMaxHeights=function(){for(var e=new Map,t=this.getDims(),n=t[0],r=t[1],o=[],i=0;i<n;i+=1){var a=this.props.sections[i],s=[];if(a&&a.syncRowHeights){for(var l=[],u=0;u<r;u+=1){var c=i*r+u,d=[],p=this.chunkElRefs.currentMap[c];d=p?j(p,".fc-scrollgrid-sync-table tr").map((function(t){var n=Al(t);return e.set(t,n),n})):[],l.push(d)}var f=l[0].length,h=!0;for(u=1;u<r;u+=1){if(!(a.chunks[u]&&void 0!==a.chunks[u].outerContent)&&l[u].length!==f){h=!1;break}}if(h){for(u=0;u<r;u+=1)s.push([]);for(E=0;E<f;E+=1){var g=[];for(u=0;u<r;u+=1){var v=l[u][E];null!=v&&g.push(v)}var m=Math.max.apply(Math,g);for(u=0;u<r;u+=1)s[u].push(m)}}else{for(var y=[],u=0;u<r;u+=1)y.push(Wl(l[u])+l[u].length);for(var S=Math.max.apply(Math,y),u=0;u<r;u+=1){var E,C=l[u].length,b=S-C,R=Math.floor(b/C),D=b-R*(C-1),w=[];for((E=0)<C&&(w.push(D),E+=1);E<C;)w.push(R),E+=1;s.push(w)}}}o.push(s)}return this.rowInnerMaxHeightMap=e,o},t.prototype.computeScrollerDims=function(){for(var e=Ir(),t=this.getDims(),n=t[0],r=t[1],o=!this.context.isRtl||Pr()?r-1:0,i=n-1,a=this.clippedScrollerRefs.currentMap,s=this.scrollerElRefs.currentMap,l=!1,u=!1,c={},d={},p=0;p<n;p+=1){if((h=a[g=p*r+o])&&h.needsYScrolling()){l=!0;break}}for(var f=0;f<r;f+=1){var h;if((h=a[g=i*r+f])&&h.needsXScrolling()){u=!0;break}}for(p=0;p<n;p+=1)for(f=0;f<r;f+=1){var g,v=s[g=p*r+f];if(v){var m=v.parentNode;c[g]=Math.floor(m.getBoundingClientRect().width-(f===o&&l?e.y:0)),d[g]=Math.floor(m.getBoundingClientRect().height-(p===i&&u?e.x:0))}}return{forceYScrollbars:l,forceXScrollbars:u,scrollerClientWidths:c,scrollerClientHeights:d}},t.prototype.updateStickyScrolling=function(){var e=this.context.isRtl,t=this.scrollerElRefs.getAll().map((function(t){return[t,e]})),n=this.getStickyScrolling(t);n.forEach((function(e){return e.updateSize()})),this.stickyScrollings=n},t.prototype.destroyStickyScrolling=function(){this.stickyScrollings.forEach(ql)},t.prototype.updateScrollSyncers=function(){for(var e=this.getDims(),t=e[0],n=e[1],r=t*n,o={},i={},a=this.scrollerElRefs.currentMap,s=0;s<t;s+=1){var l=s*n,u=l+n;o[s]=Ge(a,l,u,1)}for(var c=0;c<n;c+=1)i[c]=this.scrollerElRefs.collect(c,r,n);this.scrollSyncersBySection=this.getScrollSyncersBySection(o),this.scrollSyncersByColumn=this.getScrollSyncersByColumn(i)},t.prototype.destroyScrollSyncers=function(){Le(this.scrollSyncersBySection,jl),Le(this.scrollSyncersByColumn,jl)},t.prototype.getChunkConfigByIndex=function(e){var t=this.getDims()[1],n=Math.floor(e/t),r=e%t,o=this.props.sections[n];return o&&o.chunks[r]},t.prototype.forceScrollLeft=function(e,t){var n=this.scrollSyncersByColumn[e];n&&n.forceScrollLeft(t)},t.prototype.forceScrollTop=function(e,t){var n=this.scrollSyncersBySection[e];n&&n.forceScrollTop(t)},t.prototype._handleChunkEl=function(e,t){var n=this.getChunkConfigByIndex(parseInt(t,10));n&&io(n.elRef,e)},t.prototype._handleScrollerEl=function(e,t){var n=this.getChunkConfigByIndex(parseInt(t,10));n&&io(n.scrollerElRef,e)},t.prototype.getDims=function(){var e=this.props.sections.length;return[e,e?this.props.sections[0].chunks.length:0]},t}(no);function Wl(e){for(var t=0,n=0,r=e;n<r.length;n++){t+=r[n]}return t}function Al(e){var t=j(e,".fc-scrollgrid-sync-inner").map(Ll);return t.length?Math.max.apply(Math,t):0}function Ll(e){return e.offsetHeight}function Ul(e){var t=Bl(e.cols,"width"),n=Bl(e.cols,"minWidth"),r=ia(e.cols);return{hasShrinkCol:r,totalColWidth:t,totalColMinWidth:n,allowXScrolling:"shrink"!==e.width&&Boolean(t||n||r),cols:e.cols,width:e.width}}function Bl(e,t){for(var n=0,r=0,o=e;r<o.length;r++){var i=o[r],a=i[t];"number"==typeof a&&(n+=a*(i.span||1))}return n}Ol.addStateEquality({shrinkWidths:dt,scrollerClientWidths:ze,scrollerClientHeights:ze});var zl={cols:na};function Vl(e,t){return Fe(e,t,zl)}function Fl(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return new Hl(e,t)}function jl(e){e.destroy()}function Gl(e,t){return new _l(e,t)}function ql(e){e.destroy()}var Yl=yo({deps:[wl],scrollGridImpl:Ol}),Zl=[],Xl=[],Kl=yo({deps:[wl],contextInit:function(e){Zl.length||(window.addEventListener("beforeprint",Jl),window.addEventListener("afterprint",$l)),Zl.push(e),e.calendarApi.on("_unmount",(function(){ct(Zl,e),Zl.length||(window.removeEventListener("beforeprint",Jl),window.removeEventListener("afterprint",$l))}))}});function Jl(){for(var e=j(document.body,".fc-scroller-harness > .fc-scroller"),t=e.map((function(e){var t=window.getComputedStyle(e);return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop,overflowX:t.overflowX,overflowY:t.overflowY,marginBottom:t.marginBottom}})),n=0,r=Zl;n<r.length;n++){r[n].emitter.trigger("_beforeprint")}Kr(),function(e,t){e.forEach((function(e,n){e.style.overflowX="visible",e.style.overflowY="visible",e.style.marginBottom="",e.style.left=-t[n].scrollLeft+"px"}))}(e,t),Xl.push((function(){return function(e,t){e.forEach((function(e,n){var r=t[n];e.style.overflowX=r.overflowX,e.style.overflowY=r.overflowY,e.style.marginBottom=r.marginBottom,e.style.left="",e.scrollLeft=r.scrollLeft,e.scrollTop=r.scrollTop}))}(e,t)})),Xl.push(function(){var e=j(document.body,".fc-scrollgrid");return e.forEach(Ql),function(){return e.forEach(eu)}}())}function $l(){for(var e=0,t=Zl;e<t.length;e++){t[e].emitter.trigger("_afterprint")}for(Kr();Xl.length;)Xl.shift()()}function Ql(e){e.style.width=e.getBoundingClientRect().width+"px"}function eu(e){e.style.width=""}Di.MAX_TIMELINE_SLOTS=1e3;var tu=[{years:1},{months:1},{days:1},{hours:1},{minutes:30},{minutes:15},{minutes:10},{minutes:5},{minutes:1},{seconds:30},{seconds:15},{seconds:10},{seconds:5},{seconds:1},{milliseconds:500},{milliseconds:100},{milliseconds:10},{milliseconds:1}];function nu(e,t,n,r){var o={labelInterval:n.slotLabelInterval,slotDuration:n.slotDuration};!function(e,t,n){var r=t.currentRange;if(e.labelInterval){n.countDurationsBetween(r.start,r.end,e.labelInterval)>Di.MAX_TIMELINE_SLOTS&&(console.warn("slotLabelInterval results in too many cells"),e.labelInterval=null)}if(e.slotDuration){n.countDurationsBetween(r.start,r.end,e.slotDuration)>Di.MAX_TIMELINE_SLOTS&&(console.warn("slotDuration results in too many cells"),e.slotDuration=null)}if(e.labelInterval&&e.slotDuration){var o=it(e.labelInterval,e.slotDuration);(null===o||o<1)&&(console.warn("slotLabelInterval must be a multiple of slotDuration"),e.slotDuration=null)}}(o,e,t),iu(o,e,t),function(e,t,n){var r=t.currentRange,o=e.slotDuration;if(!o){for(var i=iu(e,t,n),a=0,s=tu;a<s.length;a++){var l=Ke(s[a]),u=it(i,l);if(null!==u&&u>1&&u<=6){o=l;break}}if(o)n.countDurationsBetween(r.start,r.end,o)>200&&(o=null);o||(o=i),e.slotDuration=o}}(o,e,t);var i=n.slotLabelFormat,a=Array.isArray(i)?i:null!=i?[i]:function(e,t,n,r){var o,i,a=e.labelInterval,s=at(a).unit,l=r.weekNumbers,u=o=i=null;"week"!==s||l||(s="day");switch(s){case"year":u={year:"numeric"};break;case"month":au("years",t,n)>1&&(u={year:"numeric"}),o={month:"short"};break;case"week":au("years",t,n)>1&&(u={year:"numeric"}),o={week:"narrow"};break;case"day":au("years",t,n)>1?u={year:"numeric",month:"long"}:au("months",t,n)>1&&(u={month:"long"}),l&&(o={week:"short"}),i={weekday:"narrow",day:"numeric"};break;case"hour":l&&(u={week:"short"}),au("days",t,n)>1&&(o={weekday:"short",day:"numeric",month:"numeric",omitCommas:!0}),i={hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"short"};break;case"minute":nt(a)/60>=6?(u={hour:"numeric",meridiem:"short"},o=function(e){return":"+pe(e.date.minute,2)}):u={hour:"numeric",minute:"numeric",meridiem:"short"};break;case"second":rt(a)/60>=6?(u={hour:"numeric",minute:"2-digit",meridiem:"lowercase"},o=function(e){return":"+pe(e.date.second,2)}):u={hour:"numeric",minute:"2-digit",second:"2-digit",meridiem:"lowercase"};break;case"millisecond":u={hour:"numeric",minute:"2-digit",second:"2-digit",meridiem:"lowercase"},o=function(e){return"."+pe(e.millisecond,3)}}return[].concat(u||[],o||[],i||[])}(o,e,t,n);o.headerFormats=a.map((function(e){return kt(e)})),o.isTimeScale=Boolean(o.slotDuration.milliseconds);var s=null;if(!o.isTimeScale){var l=at(o.slotDuration).unit;/year|month|week/.test(l)&&(s=l)}o.largeUnit=s,o.emphasizeWeeks=1===$e(o.slotDuration)&&au("weeks",e,t)>=2&&!n.businessHours;var u,c,d=n.snapDuration;d&&(u=Ke(d),c=it(o.slotDuration,u)),null==c&&(u=o.slotDuration,c=1),o.snapDuration=u,o.snapsPerSlot=c;var p=ot(e.slotMaxTime)-ot(e.slotMinTime),f=ru(e.renderRange.start,o,t),h=ru(e.renderRange.end,o,t);o.isTimeScale&&(f=t.add(f,e.slotMinTime),h=t.add(ye(h,-1),e.slotMaxTime)),o.timeWindowMs=p,o.normalizedRange={start:f,end:h};for(var g=[],v=f;v<h;)ou(v,o,e,r)&&g.push(v),v=t.add(v,o.slotDuration);o.slotDates=g;var m=-1,y=0,S=[],E=[];for(v=f;v<h;)ou(v,o,e,r)?(m+=1,S.push(m),E.push(y)):S.push(m+.5),v=t.add(v,o.snapDuration),y+=1;return o.snapDiffToIndex=S,o.snapIndexToDiff=E,o.snapCnt=m+1,o.slotCnt=o.snapCnt/o.snapsPerSlot,o.isWeekStarts=function(e,t){for(var n=e.slotDates,r=e.emphasizeWeeks,o=null,i=[],a=0,s=n;a<s.length;a++){var l=s[a],u=t.computeWeekNumber(l),c=r&&null!==o&&o!==u;o=u,i.push(c)}return i}(o,t),o.cellRows=function(e,t){for(var n=e.slotDates,r=e.headerFormats,o=r.map((function(){return[]})),i=$e(e.slotDuration),a=7===i?"week":1===i?"day":null,s=r.map((function(e){return e.getLargestUnit?e.getLargestUnit():null})),l=0;l<n.length;l+=1)for(var u=n[l],c=e.isWeekStarts[l],d=0;d<r.length;d+=1){var p=r[d],f=o[d],h=f[f.length-1],g=d===r.length-1,v=r.length>1&&!g,m=null,y=s[d]||(g?a:null);if(v){var S=t.format(u,p);h&&h.text===S?h.colspan+=1:m=su(u,S,y)}else if(!h||he(t.countDurationsBetween(e.normalizedRange.start,u,e.labelInterval))){S=t.format(u,p);m=su(u,S,y)}else h.colspan+=1;m&&(m.weekStart=c,f.push(m))}return o}(o,t),o.slotsPerLabel=it(o.labelInterval,o.slotDuration),o}function ru(e,t,n){var r=e;return t.isTimeScale||(r=we(r),t.largeUnit&&(r=n.startOf(r,t.largeUnit))),r}function ou(e,t,n,r){if(r.isHiddenDay(e))return!1;if(t.isTimeScale){var o=we(e),i=e.valueOf()-o.valueOf()-ot(n.slotMinTime);return(i=(i%864e5+864e5)%864e5)<t.timeWindowMs}return!0}function iu(e,t,n){var r=t.currentRange,o=e.labelInterval;if(!o){if(e.slotDuration){for(var i=0,a=tu;i<a.length;i++){var s=Ke(a[i]),l=it(s,e.slotDuration);if(null!==l&&l<=6){o=s;break}}o||(o=e.slotDuration)}else for(var u=0,c=tu;u<c.length;u++){if(o=Ke(c[u]),n.countDurationsBetween(r.start,r.end,o)>=18)break}e.labelInterval=o}return o}function au(e,t,n){var r=t.currentRange,o=null;return"years"===e?o=n.diffWholeYears(r.start,r.end):"months"===e||"weeks"===e?o=n.diffWholeMonths(r.start,r.end):"days"===e&&(o=De(r.start,r.end)),o||0}function su(e,t,n){return{date:e,text:t,rowUnit:n,colspan:1,isWeekStart:!1}}var lu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=e.navLinkData?{"data-navlink":e.navLinkData,tabIndex:0}:{};return Gr(Do,{hookProps:e.hookProps,content:t.options.slotLabelContent,defaultContent:uu},(function(t,o){return Gr("a",r({ref:t,className:"fc-timeline-slot-cushion fc-scrollgrid-sync-inner"+(e.isSticky?" fc-sticky":"")},n),o)}))},t}(no);function uu(e){return e.text}function cu(e){return{level:e.level,date:e.dateEnv.toDate(e.dateMarker),view:e.viewApi,text:e.text}}var du=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.refineHookProps=ft(cu),t.normalizeClassNames=xo(),t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.dateEnv,r=t.options,o=e.cell,i=e.dateProfile,a=e.tDateProfile,s=Dr(o.date,e.todayRange,e.nowDate,i),l=["fc-timeline-slot","fc-timeline-slot-label"].concat("time"===o.rowUnit?Tr(s,t.theme):wr(s,t.theme));o.isWeekStart&&l.push("fc-timeline-slot-em");var u=r.navLinks&&o.rowUnit&&"time"!==o.rowUnit?xr(o.date,o.rowUnit):null,c=this.refineHookProps({level:e.rowLevel,dateMarker:o.date,text:o.text,dateEnv:t.dateEnv,viewApi:t.viewApi}),d=this.normalizeClassNames(r.slotLabelClassNames,c);return Gr(To,{hookProps:c,didMount:r.slotLabelDidMount,willUnmount:r.slotLabelWillUnmount},(function(t){return Gr("th",{ref:t,className:l.concat(d).join(" "),"data-date":n.formatIso(o.date,{omitTime:!a.isTimeScale,omitTimeZoneOffset:!0}),colSpan:o.colspan},Gr("div",{className:"fc-timeline-slot-frame",style:{height:e.rowInnerHeight}},Gr(lu,{hookProps:c,isSticky:e.isSticky,navLinkData:u})))}))},t}(no),pu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=e.dateProfile,n=e.tDateProfile,r=e.rowInnerHeights,o=e.todayRange,i=e.nowDate,a=n.cellRows;return Gr(Zr,null,a.map((function(e,s){var l=s===a.length-1,u=n.isTimeScale&&l;return Gr("tr",{key:s,className:["fc-timeline-header-row",u?"fc-timeline-header-row-chrono":""].join(" ")},e.map((function(e){return Gr(du,{key:e.date.toISOString(),cell:e,rowLevel:s,dateProfile:t,tDateProfile:n,todayRange:o,nowDate:i,rowInnerHeight:r&&r[s],isSticky:!l})})))})))},t}(no),fu=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.rootElRef=Yr(),t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,r=at(t.tDateProfile.slotDuration).unit,o=t.slatCoords&&t.slatCoords.dateProfile===t.dateProfile?t.slatCoords:null;return Gr(zi,{unit:r},(function(r,i){return Gr("div",{className:"fc-timeline-header",ref:e.rootElRef},Gr("table",{className:"fc-scrollgrid-sync-table",style:{minWidth:t.tableMinWidth,width:t.clientWidth}},t.tableColGroupNode,Gr("tbody",null,Gr(pu,{dateProfile:t.dateProfile,tDateProfile:t.tDateProfile,nowDate:r,todayRange:i,rowInnerHeights:t.rowInnerHeights}))),n.options.nowIndicator&&Gr("div",{className:"fc-timeline-now-indicator-container"},o&&o.isDateInRange(r)&&Gr(ga,{isAxis:!0,date:r},(function(e,t,n,i){return Gr("div",{ref:e,className:["fc-timeline-now-indicator-arrow"].concat(t).join(" "),style:{left:o.dateToCoord(r)}},i)}))))}))},t.prototype.componentDidMount=function(){this.updateSize()},t.prototype.componentDidUpdate=function(){this.updateSize()},t.prototype.updateSize=function(){this.props.onMaxCushionWidth&&this.props.onMaxCushionWidth(this.computeMaxCushionWidth())},t.prototype.computeMaxCushionWidth=function(){return Math.max.apply(Math,j(this.rootElRef.current,".fc-timeline-header-row:last-child .fc-timeline-slot-cushion").map((function(e){return e.getBoundingClientRect().width})))},t}(no),hu=function(){function e(e,t,n,r,o,i){this.slatRootEl=e,this.dateProfile=n,this.tDateProfile=r,this.dateEnv=o,this.isRtl=i,this.outerCoordCache=new Ur(e,t,!0,!1),this.innerCoordCache=new Ur(e,G(t,"div"),!0,!1)}return e.prototype.rangeToCoords=function(e){return this.isRtl?{right:this.dateToCoord(e.start),left:this.dateToCoord(e.end)}:{left:this.dateToCoord(e.start),right:this.dateToCoord(e.end)}},e.prototype.isDateInRange=function(e){return vn(this.dateProfile.currentRange,e)},e.prototype.dateToCoord=function(e){var t=this.tDateProfile,n=this.computeDateSnapCoverage(e)/t.snapsPerSlot,r=Math.floor(n),o=n-(r=Math.min(r,t.slotCnt-1)),i=this.innerCoordCache,a=this.outerCoordCache;return this.isRtl?a.rights[r]-i.getWidth(r)*o-a.originClientRect.width:a.lefts[r]+i.getWidth(r)*o},e.prototype.computeDateSnapCoverage=function(e){return gu(e,this.tDateProfile,this.dateEnv)},e.prototype.computeDurationLeft=function(e){var t=this.dateProfile,n=this.tDateProfile,r=this.dateEnv,o=this.isRtl,i=0;if(t){var a=r.add(t.activeRange.start,e);n.isTimeScale||(a=we(a)),i=this.dateToCoord(a),!o&&i&&(i+=1)}return i},e}();function gu(e,t,n){var r=n.countDurationsBetween(t.normalizedRange.start,e,t.snapDuration);if(r<0)return 0;if(r>=t.snapDiffToIndex.length)return t.snapCnt;var o=Math.floor(r),i=t.snapDiffToIndex[o];return he(i)?i+=r-o:i=Math.ceil(i),i}var vu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.dateEnv,o=t.options,i=t.theme,a=e.date,s=e.tDateProfile,l=e.isEm,u=Dr(e.date,e.todayRange,e.nowDate,e.dateProfile),c=["fc-timeline-slot","fc-timeline-slot-lane"],d={"data-date":n.formatIso(a,{omitTimeZoneOffset:!0,omitTime:!s.isTimeScale})},p=r(r({date:n.toDate(e.date)},u),{view:t.viewApi});return l&&c.push("fc-timeline-slot-em"),s.isTimeScale&&c.push(he(n.countDurationsBetween(s.normalizedRange.start,e.date,s.labelInterval))?"fc-timeline-slot-major":"fc-timeline-slot-minor"),c.push.apply(c,e.isDay?wr(u,i):Tr(u,i)),Gr(bo,{hookProps:p,classNames:o.slotLaneClassNames,content:o.slotLaneContent,didMount:o.slotLaneDidMount,willUnmount:o.slotLaneWillUnmount,elRef:e.elRef},(function(e,t,n,o){return Gr("td",r({ref:e,className:c.concat(t).join(" ")},d),Gr("div",{ref:n},o))}))},t}(no),mu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=e.tDateProfile,n=e.cellElRefs,r=t.slotDates,o=t.isWeekStarts,i=!t.isTimeScale&&!t.largeUnit;return Gr("tbody",null,Gr("tr",null,r.map((function(r,a){var s=r.toISOString();return Gr(vu,{key:s,elRef:n.createRef(s),date:r,dateProfile:e.dateProfile,tDateProfile:t,nowDate:e.nowDate,todayRange:e.todayRange,isEm:o[a],isDay:i})}))))},t}(no),yu=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.rootElRef=Yr(),t.cellElRefs=new Ji,t.handleScrollRequest=function(e){var n=t.props.onScrollLeftRequest,r=t.coords;if(n&&r){if(e.time)n(r.computeDurationLeft(e.time));return!0}return null},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context;return Gr("div",{className:"fc-timeline-slots",ref:this.rootElRef},Gr("table",{className:t.theme.getClass("table"),style:{minWidth:e.tableMinWidth,width:e.clientWidth}},e.tableColGroupNode,Gr(mu,{cellElRefs:this.cellElRefs,dateProfile:e.dateProfile,tDateProfile:e.tDateProfile,nowDate:e.nowDate,todayRange:e.todayRange})))},t.prototype.componentDidMount=function(){this.updateSizing(),this.scrollResponder=this.context.createScrollResponder(this.handleScrollRequest)},t.prototype.componentDidUpdate=function(e){this.updateSizing(),this.scrollResponder.update(e.dateProfile!==this.props.dateProfile)},t.prototype.componentWillUnmount=function(){this.scrollResponder.detach(),this.props.onCoords&&this.props.onCoords(null)},t.prototype.updateSizing=function(){var e,t=this.props,n=this.context;null!==t.clientWidth&&this.scrollResponder&&(this.rootElRef.current.offsetWidth&&(this.coords=new hu(this.rootElRef.current,(e=this.cellElRefs.currentMap,t.tDateProfile.slotDates.map((function(t){var n=t.toISOString();return e[n]}))),t.dateProfile,t.tDateProfile,n.dateEnv,n.isRtl),t.onCoords&&t.onCoords(this.coords),this.scrollResponder.update(!1)))},t.prototype.positionToHit=function(e){var t=this.coords.outerCoordCache,n=this.context,r=n.dateEnv,o=n.isRtl,i=this.props.tDateProfile,a=t.leftToIndex(e);if(null!=a){var s=t.getWidth(a),l=o?(t.rights[a]-e)/s:(e-t.lefts[a])/s,u=Math.floor(l*i.snapsPerSlot),c=r.add(i.slotDates[a],et(i.snapDuration,u));return{dateSpan:{range:{start:c,end:r.add(c,i.snapDuration)},allDay:!this.props.tDateProfile.isTimeScale},dayEl:this.cellElRefs.currentMap[a],left:t.lefts[a],right:t.rights[a]}}return null},t}(no);var Su=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=[].concat(e.eventResizeSegs,e.dateSelectionSegs);return e.timelineCoords&&Gr("div",{className:"fc-timeline-bg"},this.renderSegs(e.businessHourSegs||[],e.timelineCoords,"non-business"),this.renderSegs(e.bgEventSegs||[],e.timelineCoords,"bg-event"),this.renderSegs(t,e.timelineCoords,"highlight"))},t.prototype.renderSegs=function(e,t,n){var o=this.props,i=o.todayRange,a=o.nowDate,s=e.map((function(e){var o=t.rangeToCoords(e);return Gr("div",{key:In(e.eventRange),className:"fc-timeline-bg-harness",style:{left:o.left,right:-o.right}},"bg-event"===n?Gr(Ca,r({seg:e},kn(e,i,a))):Ea(n))}));return Gr(Zr,null,s)},t}(no),Eu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.sliceRange=function(e,t,n,r,o){var i=function(e,t,n){if(!t.isTimeScale&&(e=sn(e),t.largeUnit)){var r=e;((e={start:n.startOf(e.start,t.largeUnit),end:n.startOf(e.end,t.largeUnit)}).end.valueOf()!==r.end.valueOf()||e.end<=e.start)&&(e={start:e.start,end:n.add(e.end,t.slotDuration)})}return e}(e,r,o),a=[];if(gu(i.start,r,o)<gu(i.end,r,o)){var s=pn(i,r.normalizedRange);s&&a.push({start:s.start,end:s.end,isStart:s.start.valueOf()===i.start.valueOf()&&ou(s.start,r,t,n),isEnd:s.end.valueOf()===i.end.valueOf()&&ou(Se(s.end,-1),r,t,n)})}return a},t}(Yi),Cu=kt({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"narrow"}),bu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props;return Gr(fa,r({},e,{extraClassNames:["fc-timeline-event","fc-h-event"],defaultTimeFormat:Cu,defaultDisplayEventTime:!e.isTimeScale}))},t}(no);function Ru(e,t){var n={};if(t)for(var r=0,o=e;r<o.length;r++){var i=o[r];n[i.eventRange.instance.instanceId]=t.rangeToCoords(i)}return n}function Du(e,t,n){var r,o,i,a,s=[],l=0;if(n)for(var u=0,c=e=Rn(e,t);u<c.length;u++){var d=c[u].eventRange.instance.instanceId,p=n[d];if(p){for(var f=0,h=0,g=0;g<s.length;g+=1){var v=s[g];r=p,o=f,i=v.dims,a=v.top,r.right>i.left&&r.left<i.right&&o+r.height>a&&o<a+i.height&&(f=v.top+v.dims.height,h=g)}for(;h<s.length&&f>=s[h].top;)h+=1;s.splice(h,0,{key:d,dims:p,top:f}),l=Math.max(l,f+p.height)}}for(var m={},y=0,S=s;y<S.length;y++){m[(v=S[y]).key]=v.top}return{segTops:m,height:l}}var wu=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.slicer=new Eu,t.computeFgSegHorizontals=pt(Ru),t.computeSegVerticals=pt(Du),t.harnessElRefs=new Ji,t.innerElRef=Yr(),t.state={segDims:null},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.state,n=this.context,r=e.dateProfile,o=e.tDateProfile,i=this.slicer.sliceProps(e,r,o.isTimeScale?null:e.nextDayThreshold,n,r,n.dateProfileGenerator,o,n.dateEnv),a=(i.eventDrag?i.eventDrag.segs:null)||(i.eventResize?i.eventResize.segs:null)||[],s=this.computeFgSegHorizontals(i.fgEventSegs,e.timelineCoords),l=this.computeSegVerticals(i.fgEventSegs,n.options.eventOrder,t.segDims),u=l.segTops,c=l.height,d=(i.eventDrag?i.eventDrag.affectedInstances:null)||(i.eventResize?i.eventResize.affectedInstances:null)||{};return Gr(Zr,null,Gr(Su,{businessHourSegs:i.businessHourSegs,bgEventSegs:i.bgEventSegs,timelineCoords:e.timelineCoords,eventResizeSegs:i.eventResize?i.eventResize.segs:[],dateSelectionSegs:i.dateSelectionSegs,nowDate:e.nowDate,todayRange:e.todayRange}),Gr("div",{className:"fc-timeline-events fc-scrollgrid-sync-inner",ref:this.innerElRef,style:{height:c}},this.renderFgSegs(i.fgEventSegs,s,u,d,!1,!1,!1),this.renderFgSegs(a,Ru(a,e.timelineCoords),u,{},Boolean(i.eventDrag),Boolean(i.eventResize),!1)))},t.prototype.componentDidMount=function(){this.updateSize()},t.prototype.componentDidUpdate=function(e,t){e.eventStore===this.props.eventStore&&e.timelineCoords===this.props.timelineCoords||this.updateSize()},t.prototype.updateSize=function(){var e=this,t=this.props,n=t.timelineCoords;if(t.onHeightChange&&t.onHeightChange(this.innerElRef.current,!1),n){var r=n.slatRootEl.getBoundingClientRect();this.setState({segDims:Le(this.harnessElRefs.currentMap,(function(e){var t=e.getBoundingClientRect();return{left:Math.round(t.left-r.left),right:Math.round(t.right-r.left),height:Math.round(t.height)}}))},(function(){t.onHeightChange&&t.onHeightChange(e.innerElRef.current,!0)}))}},t.prototype.renderFgSegs=function(e,t,n,o,i,a,s){var l=this,u=this.harnessElRefs,c=this.props,d=i||a||s;return Gr(Zr,null,e.map((function(e){var p=e.eventRange.instance.instanceId,f=t[p],h=n[p];return Gr("div",{key:p,ref:d?null:u.createRef(p),className:"fc-timeline-event-harness",style:{left:f?f.left:"",right:f?-f.right:"",top:null!=h?h:"",visibility:o[p]?"hidden":""}},Gr(bu,r({isTimeScale:l.props.tDateProfile.isTimeScale,seg:e,isDragging:i,isResizing:a,isDateSelecting:s,isSelected:p===l.props.eventSelection},kn(e,c.todayRange,c.nowDate))))})))},t}(no),Tu=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.slatsRef=Yr(),t.state={coords:null},t.handeEl=function(e){e?t.context.registerInteractiveComponent(t,{el:e}):t.context.unregisterInteractiveComponent(t)},t.handleCoords=function(e){t.setState({coords:e}),t.props.onSlatCoords&&t.props.onSlatCoords(e)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.state,r=this.context.options,o=t.dateProfile,i=t.tDateProfile,a=at(i.slotDuration).unit;return Gr("div",{className:"fc-timeline-body",ref:this.handeEl,style:{minWidth:t.tableMinWidth,height:t.clientHeight,width:t.clientWidth}},Gr(zi,{unit:a},(function(a,s){return Gr(Zr,null,Gr(yu,{ref:e.slatsRef,dateProfile:o,tDateProfile:i,nowDate:a,todayRange:s,clientWidth:t.clientWidth,tableColGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,onCoords:e.handleCoords,onScrollLeftRequest:t.onScrollLeftRequest}),Gr(wu,{dateProfile:o,tDateProfile:t.tDateProfile,nowDate:a,todayRange:s,nextDayThreshold:r.nextDayThreshold,businessHours:t.businessHours,eventStore:t.eventStore,eventUiBases:t.eventUiBases,dateSelection:t.dateSelection,eventSelection:t.eventSelection,eventDrag:t.eventDrag,eventResize:t.eventResize,timelineCoords:n.coords}),r.nowIndicator&&n.coords&&n.coords.isDateInRange(a)&&Gr("div",{className:"fc-timeline-now-indicator-container"},Gr(ga,{isAxis:!1,date:a},(function(e,t,r,o){return Gr("div",{ref:e,className:["fc-timeline-now-indicator-line"].concat(t).join(" "),style:{left:n.coords.dateToCoord(a)}},o)}))))})))},t.prototype.queryHit=function(e,t,n,r){var o=this.slatsRef.current.positionToHit(e);return o?{component:this,dateSpan:o.dateSpan,rect:{left:o.left,right:o.right,top:0,bottom:r},dayEl:o.dayEl,layer:0}:null},t}(mo),xu=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buildTimelineDateProfile=pt(nu),t.scrollGridRef=Yr(),t.state={slatCoords:null,slotCushionMaxWidth:null},t.handleSlatCoords=function(e){t.setState({slatCoords:e})},t.handleScrollLeftRequest=function(e){t.scrollGridRef.current.forceScrollLeft(0,e)},t.handleMaxCushionWidth=function(e){t.setState({slotCushionMaxWidth:Math.ceil(e)})},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.state,o=this.context,i=o.options,a=!t.forPrint&&ua(i),s=!t.forPrint&&ca(i),l=this.buildTimelineDateProfile(t.dateProfile,o.dateEnv,i,o.dateProfileGenerator),u=["fc-timeline",!1===i.eventOverlap?"fc-timeline-overlap-disabled":""],c=i.slotMinWidth,d=Mu(l,c||this.computeFallbackSlotMinWidth(l)),p=[{type:"header",key:"header",isSticky:a,chunks:[{key:"timeline",content:function(r){return Gr(fu,{dateProfile:t.dateProfile,clientWidth:r.clientWidth,clientHeight:r.clientHeight,tableMinWidth:r.tableMinWidth,tableColGroupNode:r.tableColGroupNode,tDateProfile:l,slatCoords:n.slatCoords,onMaxCushionWidth:c?null:e.handleMaxCushionWidth})}}]},{type:"body",key:"body",liquid:!0,chunks:[{key:"timeline",content:function(n){return Gr(Tu,r({},t,{clientWidth:n.clientWidth,clientHeight:n.clientHeight,tableMinWidth:n.tableMinWidth,tableColGroupNode:n.tableColGroupNode,tDateProfile:l,onSlatCoords:e.handleSlatCoords,onScrollLeftRequest:e.handleScrollLeftRequest}))}}]}];return s&&p.push({type:"footer",key:"footer",isSticky:!0,chunks:[{key:"timeline",content:la}]}),Gr(Po,{viewSpec:o.viewSpec},(function(n,r){return Gr("div",{ref:n,className:u.concat(r).join(" ")},Gr(Ol,{ref:e.scrollGridRef,liquid:!t.isHeightAuto&&!t.forPrint,colGroups:[{cols:d}],sections:p}))}))},t.prototype.computeFallbackSlotMinWidth=function(e){return Math.max(30,(this.state.slotCushionMaxWidth||0)/e.slotsPerLabel)},t}(mo);function Mu(e,t){return[{span:e.slotCnt,minWidth:t||1}]}var ku=yo({deps:[wl],initialView:"timelineDay",views:{timeline:{component:xu,usesMinMaxTime:!0,eventResizableFromStart:!0},timelineDay:{type:"timeline",duration:{days:1}},timelineWeek:{type:"timeline",duration:{weeks:1}},timelineMonth:{type:"timeline",duration:{months:1}},timelineYear:{type:"timeline",duration:{years:1}}}});function Pu(e,t){var n=e.resourceEditable;if(null==n){var r=e.sourceId&&t.getCurrentData().eventSources[e.sourceId];r&&(n=r.extendedProps.resourceEditable),null==n&&null==(n=t.options.eventResourceEditable)&&(n=t.options.editable)}return n}var Iu=function(){function e(){this.filterResources=pt(_u)}return e.prototype.transform=function(e,t){return t.viewSpec.optionDefaults.needsResourceData?{resourceStore:this.filterResources(t.resourceStore,t.options.filterResourcesWithEvents,t.eventStore,t.dateProfile.activeRange),resourceEntityExpansions:t.resourceEntityExpansions}:null},e}();function _u(e,t,n,o){if(t){var i=function(e,t){var n={};for(var r in e)for(var o=e[r],i=0,a=t[o.defId].resourceIds;i<a.length;i++){var s=a[i];n[s]=!0}return n}(function(e,t){return Ae(e,(function(e){return hn(e.range,t)}))}(n.instances,o),n.defs);return r(i,function(e,t){var n={};for(var r in e)for(var o=void 0;(o=t[r])&&(r=o.parentId);)n[r]=!0;return n}(i,e)),Ae(e,(function(e,t){return i[t]}))}return e}var Nu=function(){function e(){this.buildResourceEventUis=pt(Hu,ze),this.injectResourceEventUis=pt(Ou)}return e.prototype.transform=function(e,t){return t.viewSpec.optionDefaults.needsResourceData?null:{eventUiBases:this.injectResourceEventUis(e.eventUiBases,e.eventStore.defs,this.buildResourceEventUis(t.resourceStore))}},e}();function Hu(e){return Le(e,(function(e){return e.ui}))}function Ou(e,t,n){return Le(e,(function(e,r){return r?function(e,t,n){for(var r=[],o=0,i=t.resourceIds;o<i.length;o++){var a=i[o];n[a]&&r.unshift(n[a])}return r.unshift(e),Kt(r)}(e,t[r],n):e}))}var Wu=[];function Au(e){Wu.push(e)}function Lu(e){return Wu[e]}function Uu(){return Wu}var Bu={id:String,resources:Ut,url:String,method:String,startParam:String,endParam:String,timeZoneParam:String,extraParams:Ut};function zu(e){var t;if("string"==typeof e?t={url:e}:"function"==typeof e||Array.isArray(e)?t={resources:e}:"object"==typeof e&&e&&(t=e),t){var n=Lt(t,Bu),r=n.refined;!function(e){for(var t in e)console.warn("Unknown resource prop '"+t+"'")}(n.extra);var o=function(e){for(var t=Uu(),n=t.length-1;n>=0;n-=1){var r=t[n].parseMeta(e);if(r)return{meta:r,sourceDefId:n}}return null}(r);if(o)return{_raw:e,sourceId:te(),sourceDefId:o.sourceDefId,meta:o.meta,publicId:r.id||"",isFetching:!1,latestFetchId:"",fetchRange:null}}return null}function Vu(e,t,n){var o=n.options,i=n.dateProfile;if(!e||!t)return Fu(o.initialResources||o.resources,i.activeRange,o.refetchResourcesOnNavigate,n);switch(t.type){case"RESET_RESOURCE_SOURCE":return Fu(t.resourceSourceInput,i.activeRange,o.refetchResourcesOnNavigate,n);case"PREV":case"NEXT":case"CHANGE_DATE":case"CHANGE_VIEW_TYPE":return function(e,t,n,r){if(n&&!function(e){return Boolean(Lu(e.sourceDefId).ignoreRange)}(e)&&(!e.fetchRange||!fn(e.fetchRange,t)))return ju(e,t,r);return e}(e,i.activeRange,o.refetchResourcesOnNavigate,n);case"RECEIVE_RESOURCES":case"RECEIVE_RESOURCE_ERROR":return function(e,t,n){if(t===e.latestFetchId)return r(r({},e),{isFetching:!1,fetchRange:n});return e}(e,t.fetchId,t.fetchRange);case"REFETCH_RESOURCES":return ju(e,i.activeRange,n);default:return e}}function Fu(e,t,n,r){if(e){var o=zu(e);return o=ju(o,n?t:null,r)}return null}function ju(e,t,n){var o=Lu(e.sourceDefId),i=te();return o.fetch({resourceSource:e,range:t,context:n},(function(e){n.dispatch({type:"RECEIVE_RESOURCES",fetchId:i,fetchRange:t,rawResources:e.rawResources})}),(function(e){n.dispatch({type:"RECEIVE_RESOURCE_ERROR",fetchId:i,fetchRange:t,error:e})})),r(r({},e),{isFetching:!0,latestFetchId:i})}var Gu={id:String,parentId:String,children:Ut,title:String,businessHours:Ut,extendedProps:Ut,eventEditable:Boolean,eventStartEditable:Boolean,eventDurationEditable:Boolean,eventConstraint:Ut,eventOverlap:Boolean,eventAllow:Ut,eventClassNames:qt,eventBackgroundColor:String,eventBorderColor:String,eventTextColor:String,eventColor:String};function qu(e,t,n,o){void 0===t&&(t="");var i=Lt(e,Gu),a=i.refined,s=i.extra,l={id:a.id||"_fc:"+te(),parentId:a.parentId||t,title:a.title||"",businessHours:a.businessHours?fr(a.businessHours,o):null,ui:Xt({editable:a.eventEditable,startEditable:a.eventStartEditable,durationEditable:a.eventDurationEditable,constraint:a.eventConstraint,overlap:a.eventOverlap,allow:a.eventAllow,classNames:a.eventClassNames,backgroundColor:a.eventBackgroundColor,borderColor:a.eventBorderColor,textColor:a.eventTextColor,color:a.eventColor},o),extendedProps:r(r({},s),a.extendedProps)};if(Object.freeze(l.ui.classNames),Object.freeze(l.extendedProps),n[l.id]);else if(n[l.id]=l,a.children)for(var u=0,c=a.children;u<c.length;u++){qu(c[u],l.id,n,o)}return l}function Yu(e){return 0===e.indexOf("_fc:")?"":e}function Zu(e,t,n,o){if(!e||!t)return{};switch(t.type){case"RECEIVE_RESOURCES":return function(e,t,n,r,o){if(r.latestFetchId===n){for(var i={},a=0,s=t;a<s.length;a++){qu(s[a],"",i,o)}return i}return e}(e,t.rawResources,t.fetchId,n,o);case"ADD_RESOURCE":return i=e,a=t.resourceHash,r(r({},i),a);case"REMOVE_RESOURCE":return function(e,t){var n=r({},e);for(var o in delete n[t],n)n[o].parentId===t&&(n[o]=r(r({},n[o]),{parentId:""}));return n}(e,t.resourceId);case"SET_RESOURCE_PROP":return function(e,t,n,o){var i,a,s=e[t];if(s)return r(r({},e),((i={})[t]=r(r({},s),((a={})[n]=o,a)),i));return e}(e,t.resourceId,t.propName,t.propValue);case"SET_RESOURCE_EXTENDED_PROP":return function(e,t,n,o){var i,a,s=e[t];if(s)return r(r({},e),((i={})[t]=r(r({},s),{extendedProps:r(r({},s.extendedProps),(a={},a[n]=o,a))}),i));return e}(e,t.resourceId,t.propName,t.propValue);default:return e}var i,a}var Xu={resourceId:String,resourceIds:Ut,resourceEditable:Boolean};var Ku=function(){function e(e,t){this._context=e,this._resource=t}return e.prototype.setProp=function(e,t){var n=this._resource;this._context.dispatch({type:"SET_RESOURCE_PROP",resourceId:n.id,propName:e,propValue:t}),this.sync(n)},e.prototype.setExtendedProp=function(e,t){var n=this._resource;this._context.dispatch({type:"SET_RESOURCE_EXTENDED_PROP",resourceId:n.id,propName:e,propValue:t}),this.sync(n)},e.prototype.sync=function(t){var n=this._context,r=t.id;this._resource=n.getCurrentData().resourceStore[r],n.emitter.trigger("resourceChange",{oldResource:new e(n,t),resource:this,revert:function(){var e;n.dispatch({type:"ADD_RESOURCE",resourceHash:(e={},e[r]=t,e)})}})},e.prototype.remove=function(){var e=this._context,t=this._resource,n=t.id;e.dispatch({type:"REMOVE_RESOURCE",resourceId:n}),e.emitter.trigger("resourceRemove",{resource:this,revert:function(){var r;e.dispatch({type:"ADD_RESOURCE",resourceHash:(r={},r[n]=t,r)})}})},e.prototype.getParent=function(){var t=this._context,n=this._resource.parentId;return n?new e(t,t.getCurrentData().resourceSource[n]):null},e.prototype.getChildren=function(){var t=this._resource.id,n=this._context,r=n.getCurrentData().resourceStore,o=[];for(var i in r)r[i].parentId===t&&o.push(new e(n,r[i]));return o},e.prototype.getEvents=function(){var e=this._resource.id,t=this._context,n=t.getCurrentData().eventStore,r=n.defs,o=n.instances,i=[];for(var a in o){var s=o[a],l=r[s.defId];-1!==l.resourceIds.indexOf(e)&&i.push(new Kn(t,l,s))}return i},Object.defineProperty(e.prototype,"id",{get:function(){return Yu(this._resource.id)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"title",{get:function(){return this._resource.title},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"eventConstraint",{get:function(){return this._resource.ui.constraints[0]||null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"eventOverlap",{get:function(){return this._resource.ui.overlap},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"eventAllow",{get:function(){return this._resource.ui.allows[0]||null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"eventBackgroundColor",{get:function(){return this._resource.ui.backgroundColor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"eventBorderColor",{get:function(){return this._resource.ui.borderColor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"eventTextColor",{get:function(){return this._resource.ui.textColor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"eventClassNames",{get:function(){return this._resource.ui.classNames},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"extendedProps",{get:function(){return this._resource.extendedProps},enumerable:!1,configurable:!0}),e.prototype.toPlainObject=function(e){void 0===e&&(e={});var t=this._resource,n=t.ui,o=this.id,i={};return o&&(i.id=o),t.title&&(i.title=t.title),e.collapseEventColor&&n.backgroundColor&&n.backgroundColor===n.borderColor?i.eventColor=n.backgroundColor:(n.backgroundColor&&(i.eventBackgroundColor=n.backgroundColor),n.borderColor&&(i.eventBorderColor=n.borderColor)),n.textColor&&(i.eventTextColor=n.textColor),n.classNames.length&&(i.eventClassNames=n.classNames),Object.keys(t.extendedProps).length&&(e.collapseExtendedProps?r(i,t.extendedProps):i.extendedProps=t.extendedProps),i},e.prototype.toJSON=function(){return this.toPlainObject()},e}();Xn.prototype.addResource=function(e,t){var n,r=this;void 0===t&&(t=!0);var o,i,a=this.getCurrentData();e instanceof Ku?((n={})[(i=e._resource).id]=i,o=n):i=qu(e,"",o={},a),this.dispatch({type:"ADD_RESOURCE",resourceHash:o}),t&&this.trigger("_scrollRequest",{resourceId:i.id});var s=new Ku(a,i);return a.emitter.trigger("resourceAdd",{resource:s,revert:function(){r.dispatch({type:"REMOVE_RESOURCE",resourceId:i.id})}}),s},Xn.prototype.getResourceById=function(e){e=String(e);var t=this.getCurrentData();if(t.resourceStore){var n=t.resourceStore[e];if(n)return new Ku(t,n)}return null},Xn.prototype.getResources=function(){var e=this.getCurrentData(),t=e.resourceStore,n=[];if(t)for(var r in t)n.push(new Ku(e,t[r]));return n},Xn.prototype.getTopLevelResources=function(){var e=this.getCurrentData(),t=e.resourceStore,n=[];if(t)for(var r in t)t[r].parentId||n.push(new Ku(e,t[r]));return n},Xn.prototype.refetchResources=function(){this.dispatch({type:"REFETCH_RESOURCES"})};var Ju=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.getKeyInfo=function(e){return r({"":{}},e.resourceStore)},t.prototype.getKeysForDateSpan=function(e){return[e.resourceId||""]},t.prototype.getKeysForEventDef=function(e){var t=e.resourceIds;return t.length?t:[""]},t}(br);function $u(e,t){return r(r({},t),{constraints:Qu(e,t.constraints)})}function Qu(e,t){return t.map((function(t){var n=t.defs;if(n)for(var r in n){var o=n[r].resourceIds;if(o.length&&-1===o.indexOf(e))return!1}return t}))}Kn.prototype.getResources=function(){var e=this._context.calendarApi;return this._def.resourceIds.map((function(t){return e.getResourceById(t)}))},Kn.prototype.setResources=function(e){for(var t=[],n=0,r=e;n<r.length;n++){var o=r[n],i=null;"string"==typeof o?i=o:"number"==typeof o?i=String(o):o instanceof Ku?i=o.id:console.warn("unknown resource type: "+o),i&&t.push(i)}this.mutate({standardProps:{resourceIds:t}})};var ec={resources:function(e,t){t.getCurrentData().resourceSource._raw!==e&&t.dispatch({type:"RESET_RESOURCE_SOURCE",resourceSourceInput:e})}};var tc=le("id,title");var nc={initialResources:Ut,resources:Ut,eventResourceEditable:Boolean,refetchResourcesOnNavigate:Boolean,resourceOrder:le,filterResourcesWithEvents:Boolean,resourceGroupField:String,resourceAreaWidth:Ut,resourceAreaColumns:Ut,resourcesInitiallyExpanded:Boolean,datesAboveResources:Boolean,needsResourceData:Boolean,resourceAreaHeaderClassNames:Ut,resourceAreaHeaderContent:Ut,resourceAreaHeaderDidMount:Ut,resourceAreaHeaderWillUnmount:Ut,resourceGroupLabelClassNames:Ut,resourceGroupLabelContent:Ut,resourceGroupLabelDidMount:Ut,resourceGroupLabelWillUnmount:Ut,resourceLabelClassNames:Ut,resourceLabelContent:Ut,resourceLabelDidMount:Ut,resourceLabelWillUnmount:Ut,resourceLaneClassNames:Ut,resourceLaneContent:Ut,resourceLaneDidMount:Ut,resourceLaneWillUnmount:Ut,resourceGroupLaneClassNames:Ut,resourceGroupLaneContent:Ut,resourceGroupLaneDidMount:Ut,resourceGroupLaneWillUnmount:Ut},rc={resourcesSet:Ut,resourceAdd:Ut,resourceChange:Ut,resourceRemove:Ut};function oc(e){return Gr(Qr.Consumer,null,(function(t){var n=t.options,r={resource:new Ku(t,e.resource),date:e.date?t.dateEnv.toDate(e.date):null,view:t.viewApi},o={"data-resource-id":e.resource.id,"data-date":e.date?st(e.date):void 0};return Gr(bo,{hookProps:r,classNames:n.resourceLabelClassNames,content:n.resourceLabelContent,defaultContent:ic,didMount:n.resourceLabelDidMount,willUnmount:n.resourceLabelWillUnmount},(function(t,n,r,i){return e.children(t,n,o,r,i)}))}))}function ic(e){return e.resource.title||e.resource.id}Au({ignoreRange:!0,parseMeta:function(e){return Array.isArray(e.resources)?e.resources:null},fetch:function(e,t){t({rawResources:e.resourceSource.meta})}}),Au({parseMeta:function(e){return"function"==typeof e.resources?e.resources:null},fetch:function(e,t,n){var r=e.context.dateEnv,o=e.resourceSource.meta,i=e.range?{start:r.toDate(e.range.start),end:r.toDate(e.range.end),startStr:r.formatIso(e.range.start),endStr:r.formatIso(e.range.end),timeZone:r.timeZone}:{};Ar(o.bind(null,i),(function(e){t({rawResources:e})}),n)}}),Au({parseMeta:function(e){return e.url?{url:e.url,method:(e.method||"GET").toUpperCase(),extraParams:e.extraParams}:null},fetch:function(e,t,n){var o=e.resourceSource.meta,i=function(e,t,n){var o,i,a,s,l=n.dateEnv,u=n.options,c={};t&&(null==(o=e.startParam)&&(o=u.startParam),null==(i=e.endParam)&&(i=u.endParam),null==(a=e.timeZoneParam)&&(a=u.timeZoneParam),c[o]=l.formatIso(t.start),c[i]=l.formatIso(t.end),"local"!==l.timeZone&&(c[a]=l.timeZone));s="function"==typeof e.extraParams?e.extraParams():e.extraParams||{};return r(c,s),c}(o,e.range,e.context);Jo(o.method,o.url,i,(function(e,n){t({rawResources:e,xhr:n})}),(function(e,t){n({message:e,xhr:t})}))}});var ac=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props;return Gr(oc,{resource:e.resource,date:e.date},(function(t,n,o,i,a){return Gr("th",r({ref:t,className:["fc-col-header-cell","fc-resource"].concat(n).join(" "),colSpan:e.colSpan},o),Gr("div",{className:"fc-scrollgrid-sync-inner"},Gr("span",{className:["fc-col-header-cell-cushion",e.isSticky?"fc-sticky":""].join(" "),ref:i},a)))}))},t}(no),sc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buildDateFormat=pt(lc),t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,r=this.buildDateFormat(n.options.dayHeaderFormat,t.datesRepDistinctDays,t.dates.length);return Gr(zi,{unit:"day"},(function(o,i){return 1===t.dates.length?e.renderResourceRow(t.resources,t.dates[0]):n.options.datesAboveResources?e.renderDayAndResourceRows(t.dates,r,i,t.resources):e.renderResourceAndDayRows(t.resources,t.dates,r,i)}))},t.prototype.renderResourceRow=function(e,t){var n=e.map((function(e){return Gr(ac,{key:e.id,resource:e,colSpan:1,date:t})}));return this.buildTr(n,"resources")},t.prototype.renderDayAndResourceRows=function(e,t,n,r){for(var o=[],i=[],a=0,s=e;a<s.length;a++){var l=s[a];o.push(this.renderDateCell(l,t,n,r.length,null,!0));for(var u=0,c=r;u<c.length;u++){var d=c[u];i.push(Gr(ac,{key:d.id+":"+l.toISOString(),resource:d,colSpan:1,date:l}))}}return Gr(Zr,null,this.buildTr(o,"day"),this.buildTr(i,"resources"))},t.prototype.renderResourceAndDayRows=function(e,t,n,r){for(var o=[],i=[],a=0,s=e;a<s.length;a++){var l=s[a];o.push(Gr(ac,{key:l.id,resource:l,colSpan:t.length,isSticky:!0}));for(var u=0,c=t;u<c.length;u++){var d=c[u];i.push(this.renderDateCell(d,n,r,1,l))}}return Gr(Zr,null,this.buildTr(o,"resources"),this.buildTr(i,"day"))},t.prototype.renderDateCell=function(e,t,n,r,o,i){var a=this.props,s=o?":"+o.id:"",l=o?{resource:new Ku(this.context,o)}:{},u=o?{"data-resource-id":o.id}:{};return a.datesRepDistinctDays?Gr(Ui,{key:e.toISOString()+s,date:e,dateProfile:a.dateProfile,todayRange:n,colCnt:a.dates.length*a.resources.length,dayHeaderFormat:t,colSpan:r,isSticky:i,extraHookProps:l,extraDataAttrs:u}):Gr(Bi,{key:e.getUTCDay()+s,dow:e.getUTCDay(),dayHeaderFormat:t,colSpan:r,isSticky:i,extraHookProps:l,extraDataAttrs:u})},t.prototype.buildTr=function(e,t){var n=this.props.renderIntro;return e.length||(e=[Gr("td",{key:0}," ")]),Gr("tr",{key:t},n&&n(t),e)},t}(no);function lc(e,t,n){return e||Wi(t,n)}var uc=function(e){for(var t={},n=[],r=0;r<e.length;r+=1){var o=e[r].id;n.push(o),t[o]=r}this.ids=n,this.indicesById=t,this.length=e.length},cc=function(){function e(e,t,n){this.dayTableModel=e,this.resources=t,this.context=n,this.resourceIndex=new uc(t),this.rowCnt=e.rowCnt,this.colCnt=e.colCnt*t.length,this.cells=this.buildCells()}return e.prototype.buildCells=function(){for(var e=this.rowCnt,t=this.dayTableModel,n=this.resources,r=[],o=0;o<e;o+=1){for(var i=[],a=0;a<t.colCnt;a+=1)for(var s=0;s<n.length;s+=1){var l=n[s],u={resource:new Ku(this.context,l)},c={"data-resource-id":l.id},d=t.cells[o][a].date;i[this.computeCol(a,s)]={key:l.id+":"+d.toISOString(),date:d,resource:l,extraHookProps:u,extraDataAttrs:c,extraClassNames:["fc-resource"]}}r.push(i)}return r},e}(),dc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.computeCol=function(e,t){return t*this.dayTableModel.colCnt+e},t.prototype.computeColRanges=function(e,t,n){return[{firstCol:this.computeCol(e,n),lastCol:this.computeCol(t,n),isStart:!0,isEnd:!0}]},t}(cc),pc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.computeCol=function(e,t){return e*this.resources.length+t},t.prototype.computeColRanges=function(e,t,n){for(var r=[],o=e;o<=t;o+=1){var i=this.computeCol(o,n);r.push({firstCol:i,lastCol:i,isStart:o===e,isEnd:o===t})}return r},t}(cc),fc=[],hc=function(){function e(){this.joinDateSelection=pt(this.joinSegs),this.joinBusinessHours=pt(this.joinSegs),this.joinFgEvents=pt(this.joinSegs),this.joinBgEvents=pt(this.joinSegs),this.joinEventDrags=pt(this.joinInteractions),this.joinEventResizes=pt(this.joinInteractions)}return e.prototype.joinProps=function(e,t){for(var n=[],r=[],i=[],a=[],s=[],l=[],u="",c=0,d=t.resourceIndex.ids.concat([""]);c<d.length;c++){var p=d[c],f=e[p];n.push(f.dateSelectionSegs),r.push(p?f.businessHourSegs:fc),i.push(p?f.fgEventSegs:fc),a.push(f.bgEventSegs),s.push(f.eventDrag),l.push(f.eventResize),u=u||f.eventSelection}return{dateSelectionSegs:this.joinDateSelection.apply(this,o([t],n)),businessHourSegs:this.joinBusinessHours.apply(this,o([t],r)),fgEventSegs:this.joinFgEvents.apply(this,o([t],i)),bgEventSegs:this.joinBgEvents.apply(this,o([t],a)),eventDrag:this.joinEventDrags.apply(this,o([t],s)),eventResize:this.joinEventResizes.apply(this,o([t],l)),eventSelection:u}},e.prototype.joinSegs=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var r=e.resources.length,o=[],i=0;i<r;i+=1){for(var a=0,s=t[i];a<s.length;a++){var l=s[a];o.push.apply(o,this.transformSeg(l,e,i))}for(var u=0,c=t[r];u<c.length;u++){l=c[u];o.push.apply(o,this.transformSeg(l,e,i))}}return o},e.prototype.expandSegs=function(e,t){for(var n=e.resources.length,r=[],o=0;o<n;o+=1)for(var i=0,a=t;i<a.length;i++){var s=a[i];r.push.apply(r,this.transformSeg(s,e,o))}return r},e.prototype.joinInteractions=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var o=e.resources.length,i={},a=[],s=!1,l=!1,u=0;u<o;u+=1){var c=t[u];if(c){s=!0;for(var d=0,p=c.segs;d<p.length;d++){var f=p[d];a.push.apply(a,this.transformSeg(f,e,u))}r(i,c.affectedInstances),l=l||c.isEvent}if(t[o])for(var h=0,g=t[o].segs;h<g.length;h++){f=g[h];a.push.apply(a,this.transformSeg(f,e,u))}}return s?{affectedInstances:i,segs:a,isEvent:l}:null},e}(),gc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.getKeyInfo=function(e){var t=e.resourceDayTableModel,n=Le(t.resourceIndex.indicesById,(function(e){return t.resources[e]}));return n[""]={},n},t.prototype.getKeysForDateSpan=function(e){return[e.resourceId||""]},t.prototype.getKeysForEventDef=function(e){var t=e.resourceIds;return t.length?t:[""]},t}(br);function vc(e,t){return mc(e,[],t,!1,{},!0).map((function(e){return e.resource}))}function mc(e,t,n,r,o,i){var a=[];return function e(t,n,r,o,i,a,s){for(var l=0;l<t.length;l+=1){var u=t[l],c=u.group;if(c)if(r){var d=n.length,p=o.length;if(e(u.children,n,r,o.concat(0),i,a,s),d<n.length){var f=n[d];(f.rowSpans=f.rowSpans.slice())[p]=n.length-d}}else{var h=c.spec.field+":"+c.value,g=null!=a[h]?a[h]:s;n.push({id:h,group:c,isExpanded:g}),g&&e(u.children,n,r,o,i+1,a,s)}else if(u.resource){h=u.resource.id,g=null!=a[h]?a[h]:s;n.push({id:h,rowSpans:o,depth:i,isExpanded:g,hasChildren:Boolean(u.children.length),resource:u.resource,resourceFields:u.resourceFields}),g&&e(u.children,n,r,o,i+1,a,s)}}}(function(e,t,n,r){var o=function(e,t){var n={};for(var r in e){var o=e[r];n[r]={resource:o,resourceFields:Ec(o),children:[]}}for(var r in e){if((o=e[r]).parentId){var i=n[o.parentId];i&&Sc(n[r],i.children,t)}}return n}(e,r),i=[];for(var a in o){var s=o[a];s.resource.parentId||yc(s,i,n,0,t,r)}return i}(e,r?-1:1,t,n),a,r,[],0,o,i),a}function yc(e,t,n,r,o,i){n.length&&(-1===o||r<=o)?yc(e,function(e,t,n){var r,o,i=e.resourceFields[n.field];if(n.order)for(o=0;o<t.length;o+=1){if((s=t[o]).group){var a=de(i,s.group.value)*n.order;if(0===a){r=s;break}if(a<0)break}}else for(o=0;o<t.length;o+=1){var s;if((s=t[o]).group&&i===s.group.value){r=s;break}}r||(r={group:{value:i,spec:n},children:[]},t.splice(o,0,r));return r}(e,t,n[0]).children,n.slice(1),r+1,o,i):Sc(e,t,i)}function Sc(e,t,n){var r;for(r=0;r<t.length;r+=1){if(ue(t[r].resourceFields,e.resourceFields,n)>0)break}t.splice(r,0,e)}function Ec(e){var t=r(r(r({},e.extendedProps),e.ui),e);return delete t.ui,delete t.extendedProps,t}function Cc(e,t){return e.spec===t.spec&&e.value===t.value}var bc=yo({deps:[wl],reducers:[function(e,t,n){var o=Vu(e&&e.resourceSource,t,n);return{resourceSource:o,resourceStore:Zu(e&&e.resourceStore,t,o,n),resourceEntityExpansions:function(e,t){var n;if(!e||!t)return{};switch(t.type){case"SET_RESOURCE_ENTITY_EXPANDED":return r(r({},e),((n={})[t.id]=t.isExpanded,n));default:return e}}(e&&e.resourceEntityExpansions,t)}}],isLoadingFuncs:[function(e){return e.resourceSource&&e.resourceSource.isFetching}],eventRefiners:Xu,eventDefMemberAdders:[function(e){return{resourceIds:(t=e.resourceIds,(t||[]).map((function(e){return String(e)}))).concat(e.resourceId?[e.resourceId]:[]),resourceEditable:e.resourceEditable};var t}],isDraggableTransformers:[function(e,t,n,r){if(!e){var o=r.getCurrentData();if(o.viewSpecs[o.currentViewType].optionDefaults.needsResourceData&&Pu(t,r))return!0}return e}],eventDragMutationMassagers:[function(e,t,n){var r=t.dateSpan.resourceId,o=n.dateSpan.resourceId;r&&o&&r!==o&&(e.resourceMutation={matchResourceId:r,setResourceId:o})}],eventDefMutationAppliers:[function(e,t,n){var r=t.resourceMutation;if(r&&Pu(e,n)){var o=e.resourceIds.indexOf(r.matchResourceId);if(-1!==o){var i=e.resourceIds.slice();i.splice(o,1),-1===i.indexOf(r.setResourceId)&&i.push(r.setResourceId),e.resourceIds=i}}}],dateSelectionTransformers:[function(e,t){var n=e.dateSpan.resourceId,r=t.dateSpan.resourceId;return n&&r?(!1!==e.component.allowAcrossResources||n===r)&&{resourceId:n}:null}],datePointTransforms:[function(e,t){return e.resourceId?{resource:t.calendarApi.getResourceById(e.resourceId)}:{}}],dateSpanTransforms:[function(e,t){return e.resourceId?{resource:t.calendarApi.getResourceById(e.resourceId)}:{}}],viewPropsTransformers:[Iu,Nu],isPropsValid:function(e,t){var n=(new Ju).splitProps(r(r({},e),{resourceStore:t.getCurrentData().resourceStore}));for(var o in n){var i=n[o];if(o&&n[""]&&(i=r(r({},i),{eventStore:jt(n[""].eventStore,i.eventStore),eventUiBases:r(r({},n[""].eventUiBases),i.eventUiBases)})),!po(i,t,{resourceId:o},$u.bind(null,o)))return!1}return!0},externalDefTransforms:[function(e){return e.resourceId?{resourceId:e.resourceId}:{}}],eventResizeJoinTransforms:[function(e,t){return(!1!==e.component.allowAcrossResources||e.dateSpan.resourceId===t.dateSpan.resourceId)&&null}],eventDropTransformers:[function(e,t){var n=e.resourceMutation;if(n){var r=t.calendarApi;return{oldResource:r.getResourceById(n.matchResourceId),newResource:r.getResourceById(n.setResourceId)}}return{oldResource:null,newResource:null}}],optionChangeHandlers:ec,optionRefiners:nc,listenerRefiners:rc,propSetHandlers:{resourceStore:function(e,t){var n=t.emitter;n.hasHandlers("resourcesSet")&&n.trigger("resourcesSet",function(e,t){var n=[];for(var r in e)n.push(new Ku(t,e[r]));return n}(e,t))}}}),Rc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.transformSeg=function(e,t,n){return t.computeColRanges(e.firstCol,e.lastCol,n).map((function(t){return r(r(r({},e),t),{isStart:e.isStart&&t.isStart,isEnd:e.isEnd&&t.isEnd})}))},t}(hc),Dc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.allowAcrossResources=!1,t.splitter=new gc,t.slicers={},t.joiner=new Rc,t.tableRef=Yr(),t.handleRootEl=function(e){e?t.context.registerInteractiveComponent(t,{el:e}):t.context.unregisterInteractiveComponent(t)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,o=t.resourceDayTableModel,i=t.nextDayThreshold,a=t.dateProfile,s=this.splitter.splitProps(t);this.slicers=Le(s,(function(t,n){return e.slicers[n]||new Rs}));var l=Le(this.slicers,(function(e,t){return e.sliceProps(s[t],a,i,n,o.dayTableModel)}));return this.allowAcrossResources=1===o.dayTableModel.colCnt,Gr(Es,r({forPrint:t.forPrint,ref:this.tableRef,elRef:this.handleRootEl},this.joiner.joinProps(l,o),{cells:o.cells,dateProfile:a,colGroupNode:t.colGroupNode,tableMinWidth:t.tableMinWidth,renderRowIntro:t.renderRowIntro,dayMaxEvents:t.dayMaxEvents,dayMaxEventRows:t.dayMaxEventRows,showWeekNumbers:t.showWeekNumbers,expandRows:t.expandRows,headerAlignElRef:t.headerAlignElRef,clientWidth:t.clientWidth,clientHeight:t.clientHeight}))},t.prototype.prepareHits=function(){this.tableRef.current.prepareHits()},t.prototype.queryHit=function(e,t){var n=this.tableRef.current.positionToHit(e,t);return n?{component:this,dateSpan:{range:n.dateSpan.range,allDay:n.dateSpan.allDay,resourceId:this.props.resourceDayTableModel.cells[n.row][n.col].resource.id},dayEl:n.dayEl,rect:{left:n.relativeRect.left,right:n.relativeRect.right,top:n.relativeRect.top,bottom:n.relativeRect.bottom},layer:0}:null},t}(mo),wc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.flattenResources=pt(vc),t.buildResourceDayTableModel=pt(Tc),t.headerRef=Yr(),t.tableRef=Yr(),t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,r=n.options,o=r.resourceOrder||tc,i=this.flattenResources(t.resourceStore,o),a=this.buildResourceDayTableModel(t.dateProfile,n.dateProfileGenerator,i,r.datesAboveResources,n),s=r.dayHeaders&&Gr(sc,{ref:this.headerRef,resources:i,dateProfile:t.dateProfile,dates:a.dayTableModel.headerDates,datesRepDistinctDays:!0}),l=function(n){return Gr(Dc,{ref:e.tableRef,dateProfile:t.dateProfile,resourceDayTableModel:a,businessHours:t.businessHours,eventStore:t.eventStore,eventUiBases:t.eventUiBases,dateSelection:t.dateSelection,eventSelection:t.eventSelection,eventDrag:t.eventDrag,eventResize:t.eventResize,nextDayThreshold:r.nextDayThreshold,tableMinWidth:n.tableMinWidth,colGroupNode:n.tableColGroupNode,dayMaxEvents:r.dayMaxEvents,dayMaxEventRows:r.dayMaxEventRows,showWeekNumbers:r.weekNumbers,expandRows:!t.isHeightAuto,headerAlignElRef:e.headerElRef,clientWidth:n.clientWidth,clientHeight:n.clientHeight,forPrint:t.forPrint})};return r.dayMinWidth?this.renderHScrollLayout(s,l,a.colCnt,r.dayMinWidth):this.renderSimpleLayout(s,l)},t}(es);function Tc(e,t,n,r,o){var i=Ts(e,t);return r?new pc(i,n,o):new dc(i,n,o)}var xc=yo({deps:[wl,bc,xs],initialView:"resourceDayGridDay",views:{resourceDayGrid:{type:"dayGrid",component:wc,needsResourceData:!0},resourceDayGridDay:{type:"resourceDayGrid",duration:{days:1}},resourceDayGridWeek:{type:"resourceDayGrid",duration:{weeks:1}},resourceDayGridMonth:{type:"resourceDayGrid",duration:{months:1},monthMode:!0,fixedWeekCount:!0}}}),Mc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.transformSeg=function(e,t,n){return[r(r({},e),{col:t.computeCol(e.col,n)})]},t}(hc),kc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.allowAcrossResources=!1,t.buildDayRanges=pt(nl),t.splitter=new gc,t.slicers={},t.joiner=new Mc,t.timeColsRef=Yr(),t.handleRootEl=function(e){e?t.context.registerInteractiveComponent(t,{el:e}):t.context.unregisterInteractiveComponent(t)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,o=n.dateEnv,i=n.options,a=t.dateProfile,s=t.resourceDayTableModel,l=this.dayRanges=this.buildDayRanges(s.dayTableModel,a,o),u=this.splitter.splitProps(t);this.slicers=Le(u,(function(t,n){return e.slicers[n]||new el}));var c=Le(this.slicers,(function(e,t){return e.sliceProps(u[t],a,null,n,l)}));return this.allowAcrossResources=1===l.length,Gr(zi,{unit:i.nowIndicator?"minute":"day"},(function(n,o){return Gr($s,r({ref:e.timeColsRef,rootElRef:e.handleRootEl},e.joiner.joinProps(c,s),{dateProfile:a,axis:t.axis,slotDuration:t.slotDuration,slatMetas:t.slatMetas,cells:s.cells[0],tableColGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,clientWidth:t.clientWidth,clientHeight:t.clientHeight,expandRows:t.expandRows,nowDate:n,nowIndicatorSegs:i.nowIndicator&&e.buildNowIndicatorSegs(n),todayRange:o,onScrollTopRequest:t.onScrollTopRequest,forPrint:t.forPrint,onSlatCoords:t.onSlatCoords}))}))},t.prototype.buildNowIndicatorSegs=function(e){var t=this.slicers[""].sliceNowDate(e,this.context,this.dayRanges);return this.joiner.expandSegs(this.props.resourceDayTableModel,t)},t.prototype.queryHit=function(e,t){var n=this.timeColsRef.current.positionToHit(e,t);return n?{component:this,dateSpan:{range:n.dateSpan.range,allDay:n.dateSpan.allDay,resourceId:this.props.resourceDayTableModel.cells[0][n.col].resource.id},dayEl:n.dayEl,rect:{left:n.relativeRect.left,right:n.relativeRect.right,top:n.relativeRect.top,bottom:n.relativeRect.bottom},layer:0}:null},t}(mo),Pc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.flattenResources=pt(vc),t.buildResourceTimeColsModel=pt(Ic),t.buildSlatMetas=pt(ol),t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,o=n.options,i=n.dateEnv,a=t.dateProfile,s=this.allDaySplitter.splitProps(t),l=o.resourceOrder||tc,u=this.flattenResources(t.resourceStore,l),c=this.buildResourceTimeColsModel(a,n.dateProfileGenerator,u,o.datesAboveResources,n),d=this.buildSlatMetas(a.slotMinTime,a.slotMaxTime,o.slotLabelInterval,o.slotDuration,i),p=o.dayMinWidth,f=!p,h=p,g=o.dayHeaders&&Gr(sc,{resources:u,dates:c.dayTableModel.headerDates,dateProfile:a,datesRepDistinctDays:!0,renderIntro:f?this.renderHeadAxis:null}),v=!1!==o.allDaySlot&&function(n){return Gr(Dc,r({},s.allDay,{dateProfile:a,resourceDayTableModel:c,nextDayThreshold:o.nextDayThreshold,tableMinWidth:n.tableMinWidth,colGroupNode:n.tableColGroupNode,renderRowIntro:f?e.renderTableRowAxis:null,showWeekNumbers:!1,expandRows:!1,headerAlignElRef:e.headerElRef,clientWidth:n.clientWidth,clientHeight:n.clientHeight,forPrint:t.forPrint},e.getAllDayMaxEventProps()))},m=function(n){return Gr(kc,r({},s.timed,{dateProfile:a,axis:f,slotDuration:o.slotDuration,slatMetas:d,resourceDayTableModel:c,tableColGroupNode:n.tableColGroupNode,tableMinWidth:n.tableMinWidth,clientWidth:n.clientWidth,clientHeight:n.clientHeight,onSlatCoords:e.handleSlatCoords,expandRows:n.expandRows,forPrint:t.forPrint,onScrollTopRequest:e.handleScrollTopRequest}))};return h?this.renderHScrollLayout(g,v,m,c.colCnt,p,d,this.state.slatCoords):this.renderSimpleLayout(g,v,m)},t}(Hs);function Ic(e,t,n,r,o){var i=al(e,t);return r?new pc(i,n,o):new dc(i,n,o)}var _c=yo({deps:[wl,bc,sl],initialView:"resourceTimeGridDay",views:{resourceTimeGrid:{type:"timeGrid",component:Pc,needsResourceData:!0},resourceTimeGridDay:{type:"resourceTimeGrid",duration:{days:1}},resourceTimeGridWeek:{type:"resourceTimeGrid",duration:{weeks:1}}}});function Nc(e){for(var t=e.depth,n=e.hasChildren,r=e.isExpanded,i=e.onExpanderClick,a=[],s=0;s<t;s+=1)a.push(Gr("span",{className:"fc-icon"}));var l=["fc-icon"];return n&&(r?l.push("fc-icon-minus-square"):l.push("fc-icon-plus-square")),a.push(Gr("span",{className:"fc-datagrid-expander"+(n?"":" fc-datagrid-expander-placeholder"),onClick:i},Gr("span",{className:l.join(" ")}))),Gr.apply(void 0,o([Zr,{}],a))}function Hc(e){return{resource:new Ku(e.context,e.resource),fieldValue:e.fieldValue,view:e.context.viewApi}}var Oc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props;return Gr(Do,{hookProps:e.hookProps,content:e.colSpec.cellContent,defaultContent:Wc},(function(e,t){return Gr("span",{className:"fc-datagrid-cell-main",ref:e},t)}))},t}(no);function Wc(e){return e.fieldValue||Gr(Zr,null," ")}var Ac=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.refineHookProps=ft(Hc),t.normalizeClassNames=xo(),t.onExpanderClick=function(e){var n=t.props;n.hasChildren&&t.context.dispatch({type:"SET_RESOURCE_ENTITY_EXPANDED",id:n.resource.id,isExpanded:!n.isExpanded})},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,r=t.colSpec,o=this.refineHookProps({resource:t.resource,fieldValue:t.fieldValue,context:n}),i=this.normalizeClassNames(r.cellClassNames,o);return Gr(To,{hookProps:o,didMount:r.cellDidMount,willUnmount:r.cellWillUnmount},(function(n){return Gr("td",{ref:n,"data-resource-id":t.resource.id,className:["fc-datagrid-cell","fc-resource"].concat(i).join(" ")},Gr("div",{className:"fc-datagrid-cell-frame",style:{height:t.innerHeight}},Gr("div",{className:"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner"},r.isMain&&Gr(Nc,{depth:t.depth,hasChildren:t.hasChildren,isExpanded:t.isExpanded,onExpanderClick:e.onExpanderClick}),Gr(Oc,{hookProps:o,colSpec:r}))))}))},t}(no),Lc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=e.colSpec,r={groupValue:e.fieldValue,view:t.viewApi};return Gr(bo,{hookProps:r,classNames:n.cellClassNames,content:n.cellContent,defaultContent:Uc,didMount:n.cellDidMount,willUnmount:n.cellWillUnmount},(function(t,n,r,o){return Gr("td",{className:["fc-datagrid-cell","fc-resource-group"].concat(n).join(" "),rowSpan:e.rowSpan,ref:t},Gr("div",{className:"fc-datagrid-cell-frame fc-datagrid-cell-frame-liquid"},Gr("div",{className:"fc-datagrid-cell-cushion fc-sticky",ref:r},o)))}))},t}(no);function Uc(e){return e.groupValue||Gr(Zr,null," ")}var Bc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=e.resource,n=e.rowSpans,r=e.depth,o=Ec(t);return Gr("tr",null,e.colSpecs.map((function(i,a){var s=n[a];if(0===s)return null;null==s&&(s=1);var l=i.field?o[i.field]:t.title||Yu(t.id);return s>1?Gr(Lc,{key:a,colSpec:i,fieldValue:l,rowSpan:s}):Gr(Ac,{key:a,colSpec:i,resource:t,fieldValue:l,depth:r,hasChildren:e.hasChildren,isExpanded:e.isExpanded,innerHeight:e.innerHeight})})))},t}(no);Bc.addPropsEquality({rowSpans:dt});var zc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.innerInnerRef=Yr(),t.onExpanderClick=function(){var e=t.props;t.context.dispatch({type:"SET_RESOURCE_ENTITY_EXPANDED",id:e.id,isExpanded:!e.isExpanded})},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,r={groupValue:t.group.value,view:n.viewApi},o=t.group.spec;return Gr("tr",null,Gr(bo,{hookProps:r,classNames:o.labelClassNames,content:o.labelContent,defaultContent:Vc,didMount:o.labelDidMount,willUnmount:o.labelWillUnmount},(function(r,o,i,a){return Gr("td",{ref:r,colSpan:t.spreadsheetColCnt,className:["fc-datagrid-cell","fc-resource-group",n.theme.getClass("tableCellShaded")].concat(o).join(" ")},Gr("div",{className:"fc-datagrid-cell-frame",style:{height:t.innerHeight}},Gr("div",{className:"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner",ref:e.innerInnerRef},Gr(Nc,{depth:0,hasChildren:!0,isExpanded:t.isExpanded,onExpanderClick:e.onExpanderClick}),Gr("span",{className:"fc-datagrid-cell-main",ref:i},a))))})))},t}(no);function Vc(e){return e.groupValue||Gr(Zr,null," ")}zc.addPropsEquality({group:Cc});var Fc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.resizerElRefs=new Ji(t._handleColResizerEl.bind(t)),t.colDraggings={},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=t.colSpecs,r=t.superHeaderRendering,o=t.rowInnerHeights,i={view:this.context.viewApi},a=[];if(o=o.slice(),r){var s=o.shift();a.push(Gr("tr",{key:"row-super"},Gr(bo,{hookProps:i,classNames:r.headerClassNames,content:r.headerContent,didMount:r.headerDidMount,willUnmount:r.headerWillUnmount},(function(e,t,r,o){return Gr("th",{colSpan:n.length,ref:e,className:["fc-datagrid-cell","fc-datagrid-cell-super"].concat(t).join(" ")},Gr("div",{className:"fc-datagrid-cell-frame",style:{height:s}},Gr("div",{className:"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner",ref:r},o)))}))))}var l=o.shift();return a.push(Gr("tr",{key:"row"},n.map((function(t,r){var o=r===n.length-1;return Gr(bo,{key:r,hookProps:i,classNames:t.headerClassNames,content:t.headerContent,didMount:t.headerDidMount,willUnmount:t.headerWillUnmount},(function(n,i,a,s){return Gr("th",{ref:n,className:["fc-datagrid-cell"].concat(i).join(" ")},Gr("div",{className:"fc-datagrid-cell-frame",style:{height:l}},Gr("div",{className:"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner"},t.isMain&&Gr("span",{className:"fc-datagrid-expander fc-datagrid-expander-placeholder"},Gr("span",{className:"fc-icon"})),Gr("span",{className:"fc-datagrid-cell-main",ref:a},s)),!o&&Gr("div",{className:"fc-datagrid-cell-resizer",ref:e.resizerElRefs.createRef(r)})))}))})))),Gr(Zr,null,a)},t.prototype._handleColResizerEl=function(e,t){var n,r=this.colDraggings;e?(n=this.initColResizing(e,parseInt(t,10)))&&(r[t]=n):(n=r[t])&&(n.destroy(),delete r[t])},t.prototype.initColResizing=function(e,t){var n=this.context,r=n.pluginHooks,o=n.isRtl,i=this.props.onColWidthChange,a=r.elementDraggingImpl;if(a){var s,l,u=new a(e);return u.emitter.on("dragstart",(function(){var n=j(V(e,"tr"),"th");l=n.map((function(e){return e.getBoundingClientRect().width})),s=l[t]})),u.emitter.on("dragmove",(function(e){l[t]=Math.max(s+e.deltaX*(o?-1:1),20),i&&i(l.slice())})),u.setAutoScrollEnabled(!1),u}return null},t}(no),jc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n={resource:new Ku(t,e.resource)};return Gr(Do,{hookProps:n,content:t.options.resourceLaneContent},(function(e,t){return t&&Gr("div",{className:"fc-timeline-lane-misc",ref:e},t)}))},t}(no),Gc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.refineHookProps=ft(qc),t.normalizeClassNames=xo(),t.handleHeightChange=function(e,n){t.props.onHeightChange&&t.props.onHeightChange(V(e,"tr"),n)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,r=n.options,o=this.refineHookProps({resource:t.resource,context:n}),i=this.normalizeClassNames(r.resourceLaneClassNames,o);return Gr("tr",{ref:t.elRef},Gr(To,{hookProps:o,didMount:r.resourceLaneDidMount,willUnmount:r.resourceLaneWillUnmount},(function(n){return Gr("td",{ref:n,className:["fc-timeline-lane","fc-resource"].concat(i).join(" "),"data-resource-id":t.resource.id},Gr("div",{className:"fc-timeline-lane-frame",style:{height:t.innerHeight}},Gr(jc,{resource:t.resource}),Gr(wu,{dateProfile:t.dateProfile,tDateProfile:t.tDateProfile,nowDate:t.nowDate,todayRange:t.todayRange,nextDayThreshold:t.nextDayThreshold,businessHours:t.businessHours,eventStore:t.eventStore,eventUiBases:t.eventUiBases,dateSelection:t.dateSelection,eventSelection:t.eventSelection,eventDrag:t.eventDrag,eventResize:t.eventResize,timelineCoords:t.timelineCoords,onHeightChange:e.handleHeightChange})))})))},t}(no);function qc(e){return{resource:new Ku(e.context,e.resource)}}var Yc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.props.renderingHooks,r={groupValue:t.groupValue,view:this.context.viewApi};return Gr("tr",{ref:t.elRef},Gr(bo,{hookProps:r,classNames:n.laneClassNames,content:n.laneContent,didMount:n.laneDidMount,willUnmount:n.laneWillUnmount},(function(n,r,o,i){return Gr("td",{ref:n,className:["fc-timeline-lane","fc-resource-group",e.context.theme.getClass("tableCellShaded")].concat(r).join(" ")},Gr("div",{style:{height:t.innerHeight},ref:o},i))})))},t}(no),Zc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=e.rowElRefs,o=e.innerHeights;return Gr("tbody",null,e.rowNodes.map((function(i,a){if(i.group)return Gr(Yc,{key:i.id,elRef:n.createRef(i.id),groupValue:i.group.value,renderingHooks:i.group.spec,innerHeight:o[a]||""});if(i.resource){var s=i.resource;return Gr(Gc,r({key:i.id,elRef:n.createRef(i.id)},e.splitProps[s.id],{resource:s,dateProfile:e.dateProfile,tDateProfile:e.tDateProfile,nowDate:e.nowDate,todayRange:e.todayRange,nextDayThreshold:t.options.nextDayThreshold,businessHours:s.businessHours||e.fallbackBusinessHours,innerHeight:o[a]||"",timelineCoords:e.slatCoords,onHeightChange:e.onRowHeightChange}))}return null})))},t}(no),Xc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.rootElRef=Yr(),t.rowElRefs=new Ji,t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context;return Gr("table",{ref:this.rootElRef,className:"fc-scrollgrid-sync-table "+t.theme.getClass("table"),style:{minWidth:e.tableMinWidth,width:e.clientWidth,height:e.minHeight}},Gr(Zc,{rowElRefs:this.rowElRefs,rowNodes:e.rowNodes,dateProfile:e.dateProfile,tDateProfile:e.tDateProfile,nowDate:e.nowDate,todayRange:e.todayRange,splitProps:e.splitProps,fallbackBusinessHours:e.fallbackBusinessHours,slatCoords:e.slatCoords,innerHeights:e.innerHeights,onRowHeightChange:e.onRowHeightChange}))},t.prototype.componentDidMount=function(){this.updateCoords()},t.prototype.componentDidUpdate=function(){this.updateCoords()},t.prototype.componentWillUnmount=function(){this.props.onRowCoords&&this.props.onRowCoords(null)},t.prototype.updateCoords=function(){var e,t=this.props;t.onRowCoords&&null!==t.clientWidth&&this.props.onRowCoords(new Ur(this.rootElRef.current,(e=this.rowElRefs.currentMap,t.rowNodes.map((function(t){return e[t.id]}))),!1,!0))},t}(no);var Kc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.computeHasResourceBusinessHours=pt(Jc),t.resourceSplitter=new Ju,t.bgSlicer=new Eu,t.slatsRef=Yr(),t.state={slatCoords:null},t.handleEl=function(e){e?t.context.registerInteractiveComponent(t,{el:e}):t.context.unregisterInteractiveComponent(t)},t.handleSlatCoords=function(e){t.setState({slatCoords:e}),t.props.onSlatCoords&&t.props.onSlatCoords(e)},t.handleRowCoords=function(e){t.rowCoords=e,t.props.onRowCoords&&t.props.onRowCoords(e)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.state,r=this.context,o=t.dateProfile,i=t.tDateProfile,a=at(i.slotDuration).unit,s=this.computeHasResourceBusinessHours(t.rowNodes),l=this.resourceSplitter.splitProps(t),u=l[""],c=this.bgSlicer.sliceProps(u,o,i.isTimeScale?null:t.nextDayThreshold,r,o,r.dateProfileGenerator,i,r.dateEnv),d=n.slatCoords&&n.slatCoords.dateProfile===t.dateProfile?n.slatCoords:null;return Gr("div",{ref:this.handleEl,className:"fc-timeline-body",style:{minWidth:t.tableMinWidth}},Gr(zi,{unit:a},(function(n,a){return Gr(Zr,null,Gr(yu,{ref:e.slatsRef,dateProfile:o,tDateProfile:i,nowDate:n,todayRange:a,clientWidth:t.clientWidth,tableColGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,onCoords:e.handleSlatCoords,onScrollLeftRequest:t.onScrollLeftRequest}),Gr(Su,{businessHourSegs:s?null:c.businessHourSegs,bgEventSegs:c.bgEventSegs,timelineCoords:d,eventResizeSegs:c.eventResize?c.eventResize.segs:[],dateSelectionSegs:c.dateSelectionSegs,nowDate:n,todayRange:a}),Gr(Xc,{rowNodes:t.rowNodes,dateProfile:o,tDateProfile:t.tDateProfile,nowDate:n,todayRange:a,splitProps:l,fallbackBusinessHours:s?t.businessHours:null,clientWidth:t.clientWidth,minHeight:t.expandRows?t.clientHeight:"",tableMinWidth:t.tableMinWidth,innerHeights:t.rowInnerHeights,slatCoords:d,onRowCoords:e.handleRowCoords,onRowHeightChange:t.onRowHeightChange}),r.options.nowIndicator&&d&&d.isDateInRange(n)&&Gr("div",{className:"fc-timeline-now-indicator-container"},Gr(ga,{isAxis:!1,date:n},(function(e,t,r,o){return Gr("div",{ref:e,className:["fc-timeline-now-indicator-line"].concat(t).join(" "),style:{left:d.dateToCoord(n)}},o)}))))})))},t.prototype.queryHit=function(e,t){var n=this.rowCoords,r=n.topToIndex(t);if(null!=r){var o=this.props.rowNodes[r].resource;if(o){var i=this.slatsRef.current.positionToHit(e);if(i)return{component:this,dateSpan:{range:i.dateSpan.range,allDay:i.dateSpan.allDay,resourceId:o.id},rect:{left:i.left,right:i.right,top:n.tops[r],bottom:n.bottoms[r]},dayEl:i.dayEl,layer:0}}}return null},t}(mo);function Jc(e){for(var t=0,n=e;t<n.length;t++){var r=n[t].resource;if(r&&r.businessHours)return!0}return!1}var $c=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.scrollGridRef=Yr(),t.timeBodyScrollerElRef=Yr(),t.spreadsheetHeaderChunkElRef=Yr(),t.rootElRef=Yr(),t.state={resourceAreaWidthOverride:null},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.state,n=this.context,r=n.options,o=!e.forPrint&&ua(r),i=!e.forPrint&&ca(r),a=[{type:"header",key:"header",syncRowHeights:!0,isSticky:o,chunks:[{key:"datagrid",elRef:this.spreadsheetHeaderChunkElRef,tableClassName:"fc-datagrid-header",rowContent:e.spreadsheetHeaderRows},{key:"divider",outerContent:Gr("td",{className:"fc-resource-timeline-divider "+n.theme.getClass("tableCellShaded")})},{key:"timeline",content:e.timeHeaderContent}]},{type:"body",key:"body",syncRowHeights:!0,liquid:!0,expandRows:Boolean(r.expandRows),chunks:[{key:"datagrid",tableClassName:"fc-datagrid-body",rowContent:e.spreadsheetBodyRows},{key:"divider",outerContent:Gr("td",{className:"fc-resource-timeline-divider "+n.theme.getClass("tableCellShaded")})},{key:"timeline",scrollerElRef:this.timeBodyScrollerElRef,content:e.timeBodyContent}]}];i&&a.push({type:"footer",key:"footer",isSticky:!0,chunks:[{key:"datagrid",content:la},{key:"divider",outerContent:Gr("td",{className:"fc-resource-timeline-divider "+n.theme.getClass("tableCellShaded")})},{key:"timeline",content:la}]});var s=null!=t.resourceAreaWidthOverride?t.resourceAreaWidthOverride:r.resourceAreaWidth;return Gr(Ol,{ref:this.scrollGridRef,elRef:this.rootElRef,liquid:!e.isHeightAuto&&!e.forPrint,colGroups:[{cols:e.spreadsheetCols,width:s},{cols:[]},{cols:e.timeCols}],sections:a})},t.prototype.forceTimeScroll=function(e){this.scrollGridRef.current.forceScrollLeft(2,e)},t.prototype.forceResourceScroll=function(e){this.scrollGridRef.current.forceScrollTop(1,e)},t.prototype.getResourceScroll=function(){return this.timeBodyScrollerElRef.current.scrollTop},t.prototype.componentDidMount=function(){this.initSpreadsheetResizing()},t.prototype.componentWillUnmount=function(){this.destroySpreadsheetResizing()},t.prototype.initSpreadsheetResizing=function(){var e=this,t=this.context,n=t.isRtl,r=t.pluginHooks.elementDraggingImpl,o=this.spreadsheetHeaderChunkElRef.current;if(r){var i,a,s=this.rootElRef.current,l=this.spreadsheetResizerDragging=new r(s,".fc-resource-timeline-divider");l.emitter.on("dragstart",(function(){i=o.getBoundingClientRect().width,a=s.getBoundingClientRect().width})),l.emitter.on("dragmove",(function(t){var r=i+t.deltaX*(n?-1:1);r=Math.max(r,30),r=Math.min(r,a-30),e.setState({resourceAreaWidthOverride:r})})),l.setAutoScrollEnabled(!1)}},t.prototype.destroySpreadsheetResizing=function(){this.spreadsheetResizerDragging&&this.spreadsheetResizerDragging.destroy()},t}(no),Qc=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.processColOptions=pt(rd),r.buildTimelineDateProfile=pt(nu),r.hasNesting=pt(nd),r.buildRowNodes=pt(mc),r.layoutRef=Yr(),r.rowNodes=[],r.renderedRowNodes=[],r.buildRowIndex=pt(ed),r.handleSlatCoords=function(e){r.setState({slatCoords:e})},r.handleRowCoords=function(e){r.rowCoords=e,r.scrollResponder.update(!1)},r.handleMaxCushionWidth=function(e){r.setState({slotCushionMaxWidth:Math.ceil(e)})},r.handleScrollLeftRequest=function(e){r.layoutRef.current.forceTimeScroll(e)},r.handleScrollRequest=function(e){var t=r.rowCoords,n=r.layoutRef.current,o=e.rowId||e.resourceId;if(t){if(o){var i=r.buildRowIndex(r.renderedRowNodes)[o];if(null!=i){var a=null!=e.fromBottom?t.bottoms[i]-e.fromBottom:t.tops[i];n.forceResourceScroll(a)}}return!0}return null},r.handleColWidthChange=function(e){r.setState({spreadsheetColWidths:e})},r.state={resourceAreaWidth:n.options.resourceAreaWidth,spreadsheetColWidths:[]},r}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.state,r=this.context,o=r.options,i=r.viewSpec,a=this.processColOptions(r.options),s=a.superHeaderRendering,l=a.groupSpecs,u=a.orderSpecs,c=a.isVGrouping,d=a.colSpecs,p=this.buildTimelineDateProfile(t.dateProfile,r.dateEnv,o,r.dateProfileGenerator),f=this.rowNodes=this.buildRowNodes(t.resourceStore,l,u,c,t.resourceEntityExpansions,o.resourcesInitiallyExpanded),h=["fc-resource-timeline",this.hasNesting(f)?"":"fc-resource-timeline-flat","fc-timeline",!1===o.eventOverlap?"fc-timeline-overlap-disabled":"fc-timeline-overlap-enabled"],g=o.slotMinWidth,v=Mu(p,g||this.computeFallbackSlotMinWidth(p));return Gr(Po,{viewSpec:i},(function(o,i){return Gr("div",{ref:o,className:h.concat(i).join(" ")},Gr($c,{ref:e.layoutRef,forPrint:t.forPrint,isHeightAuto:t.isHeightAuto,spreadsheetCols:td(d,n.spreadsheetColWidths,""),spreadsheetHeaderRows:function(t){return Gr(Fc,{superHeaderRendering:s,colSpecs:d,onColWidthChange:e.handleColWidthChange,rowInnerHeights:t.rowSyncHeights})},spreadsheetBodyRows:function(t){return Gr(Zr,null,e.renderSpreadsheetRows(f,d,t.rowSyncHeights))},timeCols:v,timeHeaderContent:function(r){return Gr(fu,{clientWidth:r.clientWidth,clientHeight:r.clientHeight,tableMinWidth:r.tableMinWidth,tableColGroupNode:r.tableColGroupNode,dateProfile:t.dateProfile,tDateProfile:p,slatCoords:n.slatCoords,rowInnerHeights:r.rowSyncHeights,onMaxCushionWidth:g?null:e.handleMaxCushionWidth})},timeBodyContent:function(n){return Gr(Kc,{dateProfile:t.dateProfile,clientWidth:n.clientWidth,clientHeight:n.clientHeight,tableMinWidth:n.tableMinWidth,tableColGroupNode:n.tableColGroupNode,expandRows:n.expandRows,tDateProfile:p,rowNodes:f,businessHours:t.businessHours,dateSelection:t.dateSelection,eventStore:t.eventStore,eventUiBases:t.eventUiBases,eventSelection:t.eventSelection,eventDrag:t.eventDrag,eventResize:t.eventResize,resourceStore:t.resourceStore,nextDayThreshold:r.options.nextDayThreshold,rowInnerHeights:n.rowSyncHeights,onSlatCoords:e.handleSlatCoords,onRowCoords:e.handleRowCoords,onScrollLeftRequest:e.handleScrollLeftRequest,onRowHeightChange:n.reportRowHeightChange})}}))}))},t.prototype.renderSpreadsheetRows=function(e,t,n){return e.map((function(e,r){return e.group?Gr(zc,{key:e.id,id:e.id,spreadsheetColCnt:t.length,isExpanded:e.isExpanded,group:e.group,innerHeight:n[r]||""}):e.resource?Gr(Bc,{key:e.id,colSpecs:t,rowSpans:e.rowSpans,depth:e.depth,isExpanded:e.isExpanded,hasChildren:e.hasChildren,resource:e.resource,innerHeight:n[r]||""}):null}))},t.prototype.componentDidMount=function(){this.renderedRowNodes=this.rowNodes,this.scrollResponder=this.context.createScrollResponder(this.handleScrollRequest)},t.prototype.getSnapshotBeforeUpdate=function(){return this.props.forPrint?{}:{resourceScroll:this.queryResourceScroll()}},t.prototype.componentDidUpdate=function(e,t,n){this.renderedRowNodes=this.rowNodes,this.scrollResponder.update(e.dateProfile!==this.props.dateProfile),n.resourceScroll&&this.handleScrollRequest(n.resourceScroll)},t.prototype.componentWillUnmount=function(){this.scrollResponder.detach()},t.prototype.computeFallbackSlotMinWidth=function(e){return Math.max(30,(this.state.slotCushionMaxWidth||0)/e.slotsPerLabel)},t.prototype.queryResourceScroll=function(){var e=this.rowCoords,t=this.renderedRowNodes;if(e){for(var n=this.layoutRef.current,r=e.bottoms,o=n.getResourceScroll(),i={},a=0;a<r.length;a+=1){var s=t[a],l=r[a]-o;if(l>0){i.rowId=s.id,i.fromBottom=l;break}}return i}return null},t}(no);function ed(e){for(var t={},n=0;n<e.length;n+=1)t[e[n].id]=n;return t}function td(e,t,n){return void 0===n&&(n=""),e.map((function(e,r){return{className:e.isMain?"fc-main-col":"",width:t[r]||e.width||n}}))}function nd(e){for(var t=0,n=e;t<n.length;t++){var r=n[t];if(r.group)return!0;if(r.resource&&r.hasChildren)return!0}return!1}function rd(e){var t=e.resourceAreaColumns||[],n=null;t.length?e.resourceAreaHeaderContent&&(n={headerClassNames:e.resourceAreaHeaderClassNames,headerContent:e.resourceAreaHeaderContent,headerDidMount:e.resourceAreaHeaderDidMount,headerWillUnmount:e.resourceAreaHeaderWillUnmount}):t.push({headerClassNames:e.resourceAreaHeaderClassNames,headerContent:e.resourceAreaHeaderContent||"Resources",headerDidMount:e.resourceAreaHeaderDidMount,headerWillUnmount:e.resourceAreaHeaderWillUnmount});for(var o=[],i=[],a=[],s=!1,l=0,u=t;l<u.length;l++){var c=u[l];c.group?i.push(r(r({},c),{cellClassNames:c.cellClassNames||e.resourceGroupLabelClassNames,cellContent:c.cellContent||e.resourceGroupLabelContent,cellDidMount:c.cellDidMount||e.resourceGroupLabelDidMount,cellWillUnmount:c.cellWillUnmount||e.resourceGroupLaneWillUnmount})):o.push(c)}var d=o[0];if(d.isMain=!0,d.cellClassNames=d.cellClassNames||e.resourceLabelClassNames,d.cellContent=d.cellContent||e.resourceLabelContent,d.cellDidMount=d.cellDidMount||e.resourceLabelDidMount,d.cellWillUnmount=d.cellWillUnmount||e.resourceLabelWillUnmount,i.length)a=i,s=!0;else{var p=e.resourceGroupField;p&&a.push({field:p,labelClassNames:e.resourceGroupLabelClassNames,labelContent:e.resourceGroupLabelContent,labelDidMount:e.resourceGroupLabelDidMount,labelWillUnmount:e.resourceGroupLabelWillUnmount,laneClassNames:e.resourceGroupLaneClassNames,laneContent:e.resourceGroupLaneContent,laneDidMount:e.resourceGroupLaneDidMount,laneWillUnmount:e.resourceGroupLaneWillUnmount})}for(var f=[],h=0,g=e.resourceOrder||tc;h<g.length;h++){for(var v=g[h],m=!1,y=0,S=a;y<S.length;y++){var E=S[y];if(E.field===v.field){E.order=v.order,m=!0;break}}m||f.push(v)}return{superHeaderRendering:n,isVGrouping:s,groupSpecs:a,colSpecs:i.concat(o),orderSpecs:f}}Qc.addStateEquality({spreadsheetColWidths:dt});var od=yo({deps:[wl,bc,ku],initialView:"resourceTimelineDay",views:{resourceTimeline:{type:"timeline",component:Qc,needsResourceData:!0,resourceAreaWidth:"30%",resourcesInitiallyExpanded:!0,eventResizableFromStart:!0},resourceTimelineDay:{type:"resourceTimeline",duration:{days:1}},resourceTimelineWeek:{type:"resourceTimeline",duration:{weeks:1}},resourceTimelineMonth:{type:"resourceTimeline",duration:{months:1}},resourceTimelineYear:{type:"resourceTimeline",duration:{years:1}}}});return ei.push(Qa,xs,sl,yl,El,Cl,Yl,Kl,ku,bc,xc,_c,od),e.AbstractResourceDayTableModel=cc,e.BASE_OPTION_DEFAULTS=It,e.BASE_OPTION_REFINERS=Pt,e.BaseComponent=no,e.BgEvent=Ca,e.BootstrapTheme=Sl,e.Calendar=wa,e.CalendarApi=Xn,e.CalendarContent=_i,e.CalendarDataManager=ai,e.CalendarDataProvider=mi,e.CalendarRoot=Oi,e.Component=jr,e.ContentHook=Do,e.CustomContentRenderContext=Ro,e.DEFAULT_RESOURCE_ORDER=tc,e.DateComponent=mo,e.DateEnv=or,e.DateProfileGenerator=Oo,e.DayCellContent=ma,e.DayCellRoot=Sa,e.DayGridView=ws,e.DayHeader=Fi,e.DayResourceTableModel=pc,e.DaySeriesModel=Gi,e.DayTable=Ds,e.DayTableModel=qi,e.DayTableSlicer=Rs,e.DayTimeCols=tl,e.DayTimeColsSlicer=el,e.DayTimeColsView=il,e.DelayedRunner=ri,e.Draggable=Ka,e.ElementDragging=Ri,e.ElementScrollController=zr,e.Emitter=Lr,e.EventApi=Kn,e.EventRoot=pa,e.EventSourceApi=B,e.FeaturefulElementDragging=Aa,e.Fragment=Zr,e.Interaction=Si,e.ListView=hl,e.MountHook=To,e.NamedTimeZoneImpl=yi,e.NowIndicatorRoot=ga,e.NowTimer=zi,e.PointerDragging=ka,e.PositionCache=Ur,e.RefMap=Ji,e.RenderHook=bo,e.ResourceApi=Ku,e.ResourceDayHeader=sc,e.ResourceDayTable=Dc,e.ResourceDayTableModel=dc,e.ResourceDayTableView=wc,e.ResourceDayTimeCols=kc,e.ResourceDayTimeColsView=Pc,e.ResourceLabelRoot=oc,e.ResourceSplitter=Ju,e.ResourceTimelineLane=Gc,e.ResourceTimelineView=Qc,e.ScrollController=Br,e.ScrollGrid=Ol,e.ScrollResponder=$r,e.Scroller=Ki,e.SimpleScrollGrid=da,e.Slicer=Yi,e.Splitter=br,e.SpreadsheetRow=Bc,e.StandardEvent=fa,e.Table=Es,e.TableDateCell=Ui,e.TableDowCell=Bi,e.TableView=es,e.Theme=Fr,e.ThirdPartyDraggable=$a,e.TimeCols=$s,e.TimeColsSlatsCoords=Ws,e.TimeColsView=Hs,e.TimelineCoords=hu,e.TimelineHeader=fu,e.TimelineHeaderRows=pu,e.TimelineLane=wu,e.TimelineLaneBg=Su,e.TimelineLaneSlicer=Eu,e.TimelineSlats=yu,e.TimelineView=xu,e.VResourceJoiner=hc,e.VResourceSplitter=gc,e.ViewApi=jn,e.ViewContextType=Qr,e.ViewRoot=Po,e.WeekNumberRoot=Ra,e.WindowScrollController=Vr,e.addDays=ye,e.addDurations=Qe,e.addMs=Se,e.addWeeks=me,e.allowContextMenu=se,e.allowSelection=ie,e.applyMutationToEventStore=zn,e.applyStyle=Y,e.applyStyleProp=Z,e.asCleanDays=$e,e.asRoughMinutes=nt,e.asRoughMs=ot,e.asRoughSeconds=rt,e.buildClassNameNormalizer=xo,e.buildDayRanges=nl,e.buildDayTableModel=Ts,e.buildEventApis=$n,e.buildEventRangeKey=In,e.buildHashFromArray=function(e,t){for(var n={},r=0;r<e.length;r+=1){var o=t(e[r],r);n[o[0]]=o[1]}return n},e.buildNavLinkData=xr,e.buildResourceFields=Ec,e.buildRowNodes=mc,e.buildSegCompareObj=Dn,e.buildSegTimeText=Mn,e.buildSlatCols=Mu,e.buildSlatMetas=ol,e.buildTimeColsModel=al,e.buildTimelineDateProfile=nu,e.collectFromHash=Ge,e.combineEventUis=Kt,e.compareByFieldSpec=ce,e.compareByFieldSpecs=ue,e.compareNumbers=fe,e.compareObjs=Fe,e.computeEdges=Nr,e.computeFallbackHeaderFormat=Wi,e.computeHeightAndMargins=function(e){return e.getBoundingClientRect().height+function(e){var t=window.getComputedStyle(e);return parseInt(t.marginTop,10)+parseInt(t.marginBottom,10)}(e)},e.computeInnerRect=Hr,e.computeRect=Or,e.computeSegDraggable=wn,e.computeSegEndResizable=xn,e.computeSegStartResizable=Tn,e.computeShrinkWidth=$i,e.computeSmallestCellWidth=ge,e.computeVisibleDayRange=sn,e.config=Di,e.constrainPoint=mr,e.createContext=Xr,e.createDuration=Ke,e.createElement=Gr,e.createEmptyEventStore=Ft,e.createEventInstance=He,e.createEventUi=Xt,e.createFormatter=kt,e.createPlugin=yo,e.createRef=Yr,e.diffDates=un,e.diffDayAndTime=be,e.diffDays=Ce,e.diffPoints=Sr,e.diffWeeks=Ee,e.diffWholeDays=De,e.diffWholeWeeks=Re,e.disableCursor=ne,e.elementClosest=V,e.elementMatches=F,e.enableCursor=re,e.eventTupleToStore=zt,e.filterEventStoreDefs=Gt,e.filterHash=Ae,e.findDirectChildren=G,e.findElements=j,e.flattenResources=vc,e.flexibleCompare=de,e.flushToDom=Kr,e.formatDate=function(e,t){void 0===t&&(t={});var n=cr(t),r=kt(t),o=n.createMarkerMeta(e);return o?n.format(o.marker,r,{forcedTzo:o.forcedTzo}):""},e.formatDayString=st,e.formatIsoTimeString=lt,e.formatRange=function(e,t,n){var r=cr("object"==typeof n&&n?n:{}),o=kt(n),i=r.createMarkerMeta(e),a=r.createMarkerMeta(t);return i&&a?r.formatRange(i.marker,a.marker,o,{forcedStartTzo:i.forcedTzo,forcedEndTzo:a.forcedTzo,isEndExclusive:n.isEndExclusive,defaultSeparator:It.defaultRangeSeparator}):""},e.getAllowYScrolling=ea,e.getCanVGrowWithinCell=Er,e.getClippingParents=Wr,e.getDateMeta=Dr,e.getDayClassNames=wr,e.getDefaultEventEnd=Bn,e.getElSeg=En,e.getEventClassNames=Pn,e.getIsRtlScrollbarOnLeft=Pr,e.getPublicId=Yu,e.getRectCenter=yr,e.getRelevantEvents=Vt,e.getScrollGridClassNames=aa,e.getScrollbarWidths=Ir,e.getSectionClassNames=sa,e.getSectionHasLiquidHeight=Qi,e.getSegMeta=kn,e.getSlotClassNames=Tr,e.getStickyFooterScrollbar=ca,e.getStickyHeaderDates=ua,e.getUnequalProps=Ve,e.globalLocales=ir,e.globalPlugins=ei,e.greatestDurationDenominator=at,e.guid=te,e.hasBgRendering=yn,e.hasShrinkWidth=ia,e.identity=Ut,e.interactionSettingsStore=bi,e.interactionSettingsToStore=Ci,e.intersectRanges=pn,e.intersectRects=gr,e.isArraysEqual=dt,e.isColPropsEqual=na,e.isDateSpansEqual=Hn,e.isGroupsEqual=Cc,e.isInt=he,e.isInteractionValid=uo,e.isMultiDayRange=ln,e.isPropsEqual=ze,e.isPropsValid=po,e.isValidDate=_e,e.listenBySelector=J,e.mapHash=Le,e.memoize=pt,e.memoizeArraylike=ht,e.memoizeHashlike=gt,e.memoizeObjArg=ft,e.mergeEventStores=jt,e.multiplyDuration=et,e.padStart=pe,e.parseBusinessHours=fr,e.parseClassNames=qt,e.parseDragMeta=Ti,e.parseEventDef=on,e.parseFieldSpecs=le,e.parseMarker=rr,e.pointInsideRect=hr,e.preventContextMenu=ae,e.preventDefault=X,e.preventSelection=oe,e.rangeContainsMarker=vn,e.rangeContainsRange=gn,e.rangesEqual=fn,e.rangesIntersect=hn,e.refineEventDef=nn,e.refineProps=Lt,e.removeElement=z,e.removeExact=ct,e.render=qr,e.renderChunkContent=ta,e.renderFill=Ea,e.renderMicroColGroup=ra,e.renderScrollShim=la,e.requestJson=Jo,e.sanitizeShrinkWidth=oa,e.setElSeg=Sn,e.setRef=io,e.setScrollFromStartingEdge=kl,e.sliceEventStore=mn,e.sliceEvents=function(e,t){return mn(e.eventStore,e.eventUiBases,e.dateProfile.activeRange,t?e.nextDayThreshold:null).fg},e.sortEventSegs=Rn,e.startOfDay=we,e.translateRect=vr,e.triggerDateSelect=Ln,e.unmountComponentAtNode=Jr,e.unpromisify=Ar,e.version="5.5.1",e.whenTransitionDone=Q,e.wholeDivideDurations=it,Object.defineProperty(e,"__esModule",{value:!0}),e}({});
\ No newline at end of file
diff --git a/AKPlan/templates/AKPlan/load_fullcalendar.html b/AKPlan/templates/AKPlan/load_fullcalendar.html
index 30fc76b83ee95d767c23b05e874a5abfd1d61df6..6c2a93c81cf8874d10d2e3360476b4eb14d0fff1 100644
--- a/AKPlan/templates/AKPlan/load_fullcalendar.html
+++ b/AKPlan/templates/AKPlan/load_fullcalendar.html
@@ -2,8 +2,8 @@
 {% load i18n %}
 {% get_current_language as LANGUAGE_CODE %}
 
-<script src='{% static 'AKPlan/vendor/fullcalendar-scheduler/main.js' %}'></script>
 <link href='{% static 'AKPlan/vendor/fullcalendar-scheduler/main.css' %}' rel='stylesheet'/>
+<script src='{% static 'AKPlan/vendor/fullcalendar-scheduler/main.js' %}'></script>
 
 {% with 'AKPlan/vendor/fullcalendar-scheduler/locales/'|add:LANGUAGE_CODE|add:'.js' as locale_file %}
     {% if LANGUAGE_CODE != "en" %}
diff --git a/AKScheduling/api.py b/AKScheduling/api.py
index 687704a8e91a48ddd39383d391373d0d1a929648..27b4252e94adc1ffa44e4d2481bc94987d7087f1 100644
--- a/AKScheduling/api.py
+++ b/AKScheduling/api.py
@@ -72,7 +72,6 @@ class RoomAvailabilitiesView(LoginRequiredMixin, EventSlugMixin, ListView):
                 "resourceId": a.room.id,
                 "start": timezone.localtime(a.start, self.event.timezone).strftime("%Y-%m-%d %H:%M:%S"),
                 "end": timezone.localtime(a.end, self.event.timezone).strftime("%Y-%m-%d %H:%M:%S"),
-                "backgroundColor": "#28B62C",
                 "display": 'background',
                 "groupId": 'roomAvailable',
             } for a in context["availabilities"]],
diff --git a/AKScheduling/templates/admin/AKScheduling/scheduling.html b/AKScheduling/templates/admin/AKScheduling/scheduling.html
index 75dc0c3c23071023c21beb3c5a4d4eed42f453ce..6403b51aad50ecd6ed6c9299bab0072dce67c9f1 100644
--- a/AKScheduling/templates/admin/AKScheduling/scheduling.html
+++ b/AKScheduling/templates/admin/AKScheduling/scheduling.html
@@ -127,7 +127,6 @@
                 eventChange: updateEvent,
                 eventReceive: updateEvent,
                 editable: true,
-                dropable: true,
                 drop: function (info) {
                     info.draggedEl.parentNode.removeChild(info.draggedEl);
                 },
@@ -135,6 +134,7 @@
                 nowIndicator: true,
                 eventTextColor: '#fff',
                 eventColor: '#127ba3',
+                eventBackgroundColor: '#28B62C',
                 datesAboveResources: true,
                 resourceAreaHeaderContent: '{% trans "Room" %}',
                 resources: '{% url "model:scheduling-resources-list" event_slug=event.slug %}',
@@ -184,7 +184,7 @@
         <div class="col-md-2 col-lg-2" id="unscheduled-slots">
             {% for slot in slots_unscheduled %}
                 <div class="unscheduled-slot badge badge-primary" style='background-color: {{ slot.ak.category.color }}'
-                     data-event='{ "title": "{{ slot.ak.short_name }}", "duration": {"hours": "{{ slot.duration|unlocalize }}"}, "description": "{{ slot.ak.details | escapejs }}", "slotID": "{{ slot.pk }}", "backgroundColor": "{{ slot.ak.category.color }}"}' data-details="{{ slot.ak.details }}">{{ slot.ak.short_name }}
+                     data-event='{ "title": "{{ slot.ak.short_name }}", "duration": {"hours": "{{ slot.duration|unlocalize }}"}, "constraint": "roomAvailable", "description": "{{ slot.ak.details | escapejs }}", "slotID": "{{ slot.pk }}", "backgroundColor": "{{ slot.ak.category.color }}"}' data-details="{{ slot.ak.details }}">{{ slot.ak.short_name }}
                     ({{ slot.duration }} h)<br>{{ slot.ak.owners_list }}
                 </div>
             {% endfor %}