@fullcalendar/core 6.1.15 → 6.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/index.cjs +91 -21
  2. package/index.global.js +147 -74
  3. package/index.global.min.js +2 -2
  4. package/index.js +92 -22
  5. package/internal-common.cjs +105 -105
  6. package/internal-common.d.ts +19 -4
  7. package/internal-common.js +106 -103
  8. package/internal.js +1 -1
  9. package/locales/af.global.js +1 -1
  10. package/locales/af.global.min.js +1 -1
  11. package/locales/ar-dz.global.js +1 -1
  12. package/locales/ar-dz.global.min.js +1 -1
  13. package/locales/ar-kw.global.js +1 -1
  14. package/locales/ar-kw.global.min.js +1 -1
  15. package/locales/ar-ly.global.js +1 -1
  16. package/locales/ar-ly.global.min.js +1 -1
  17. package/locales/ar-ma.global.js +1 -1
  18. package/locales/ar-ma.global.min.js +1 -1
  19. package/locales/ar-sa.global.js +1 -1
  20. package/locales/ar-sa.global.min.js +1 -1
  21. package/locales/ar-tn.global.js +1 -1
  22. package/locales/ar-tn.global.min.js +1 -1
  23. package/locales/ar.global.js +1 -1
  24. package/locales/ar.global.min.js +1 -1
  25. package/locales/az.global.js +1 -1
  26. package/locales/az.global.min.js +1 -1
  27. package/locales/bg.global.js +1 -1
  28. package/locales/bg.global.min.js +1 -1
  29. package/locales/bn.global.js +1 -1
  30. package/locales/bn.global.min.js +1 -1
  31. package/locales/bs.global.js +1 -1
  32. package/locales/bs.global.min.js +1 -1
  33. package/locales/ca.global.js +1 -1
  34. package/locales/ca.global.min.js +1 -1
  35. package/locales/cs.global.js +1 -1
  36. package/locales/cs.global.min.js +1 -1
  37. package/locales/cy.global.js +1 -1
  38. package/locales/cy.global.min.js +1 -1
  39. package/locales/da.global.js +1 -1
  40. package/locales/da.global.min.js +1 -1
  41. package/locales/de-at.global.js +1 -1
  42. package/locales/de-at.global.min.js +1 -1
  43. package/locales/de.global.js +1 -1
  44. package/locales/de.global.min.js +1 -1
  45. package/locales/el.global.js +1 -1
  46. package/locales/el.global.min.js +1 -1
  47. package/locales/en-au.global.js +1 -1
  48. package/locales/en-au.global.min.js +1 -1
  49. package/locales/en-gb.global.js +1 -1
  50. package/locales/en-gb.global.min.js +1 -1
  51. package/locales/en-nz.global.js +1 -1
  52. package/locales/en-nz.global.min.js +1 -1
  53. package/locales/eo.global.js +1 -1
  54. package/locales/eo.global.min.js +1 -1
  55. package/locales/es-us.global.js +1 -1
  56. package/locales/es-us.global.min.js +1 -1
  57. package/locales/es.global.js +1 -1
  58. package/locales/es.global.min.js +1 -1
  59. package/locales/et.global.js +1 -1
  60. package/locales/et.global.min.js +1 -1
  61. package/locales/eu.global.js +1 -1
  62. package/locales/eu.global.min.js +1 -1
  63. package/locales/fa.global.js +1 -1
  64. package/locales/fa.global.min.js +1 -1
  65. package/locales/fi.global.js +1 -1
  66. package/locales/fi.global.min.js +1 -1
  67. package/locales/fr-ca.global.js +1 -1
  68. package/locales/fr-ca.global.min.js +1 -1
  69. package/locales/fr-ch.global.js +1 -1
  70. package/locales/fr-ch.global.min.js +1 -1
  71. package/locales/fr.global.js +1 -1
  72. package/locales/fr.global.min.js +1 -1
  73. package/locales/gl.global.js +1 -1
  74. package/locales/gl.global.min.js +1 -1
  75. package/locales/he.global.js +1 -1
  76. package/locales/he.global.min.js +1 -1
  77. package/locales/hi.global.js +1 -1
  78. package/locales/hi.global.min.js +1 -1
  79. package/locales/hr.global.js +1 -1
  80. package/locales/hr.global.min.js +1 -1
  81. package/locales/hu.global.js +1 -1
  82. package/locales/hu.global.min.js +1 -1
  83. package/locales/hy-am.global.js +1 -1
  84. package/locales/hy-am.global.min.js +1 -1
  85. package/locales/id.global.js +1 -1
  86. package/locales/id.global.min.js +1 -1
  87. package/locales/is.global.js +1 -1
  88. package/locales/is.global.min.js +1 -1
  89. package/locales/it.global.js +1 -1
  90. package/locales/it.global.min.js +1 -1
  91. package/locales/ja.global.js +1 -1
  92. package/locales/ja.global.min.js +1 -1
  93. package/locales/ka.global.js +1 -1
  94. package/locales/ka.global.min.js +1 -1
  95. package/locales/kk.global.js +1 -1
  96. package/locales/kk.global.min.js +1 -1
  97. package/locales/km.global.js +1 -1
  98. package/locales/km.global.min.js +1 -1
  99. package/locales/ko.global.js +1 -1
  100. package/locales/ko.global.min.js +1 -1
  101. package/locales/ku.global.js +1 -1
  102. package/locales/ku.global.min.js +1 -1
  103. package/locales/lb.global.js +1 -1
  104. package/locales/lb.global.min.js +1 -1
  105. package/locales/lt.global.js +1 -1
  106. package/locales/lt.global.min.js +1 -1
  107. package/locales/lv.global.js +1 -1
  108. package/locales/lv.global.min.js +1 -1
  109. package/locales/mk.global.js +1 -1
  110. package/locales/mk.global.min.js +1 -1
  111. package/locales/ms.global.js +1 -1
  112. package/locales/ms.global.min.js +1 -1
  113. package/locales/nb.global.js +1 -1
  114. package/locales/nb.global.min.js +1 -1
  115. package/locales/ne.global.js +1 -1
  116. package/locales/ne.global.min.js +1 -1
  117. package/locales/nl.global.js +1 -1
  118. package/locales/nl.global.min.js +1 -1
  119. package/locales/nn.global.js +1 -1
  120. package/locales/nn.global.min.js +1 -1
  121. package/locales/pl.global.js +1 -1
  122. package/locales/pl.global.min.js +1 -1
  123. package/locales/pt-br.global.js +1 -1
  124. package/locales/pt-br.global.min.js +1 -1
  125. package/locales/pt.global.js +1 -1
  126. package/locales/pt.global.min.js +1 -1
  127. package/locales/ro.global.js +1 -1
  128. package/locales/ro.global.min.js +1 -1
  129. package/locales/ru.global.js +1 -1
  130. package/locales/ru.global.min.js +1 -1
  131. package/locales/si-lk.global.js +1 -1
  132. package/locales/si-lk.global.min.js +1 -1
  133. package/locales/sk.global.js +1 -1
  134. package/locales/sk.global.min.js +1 -1
  135. package/locales/sl.global.js +1 -1
  136. package/locales/sl.global.min.js +1 -1
  137. package/locales/sm.global.js +1 -1
  138. package/locales/sm.global.min.js +1 -1
  139. package/locales/sq.global.js +1 -1
  140. package/locales/sq.global.min.js +1 -1
  141. package/locales/sr-cyrl.global.js +1 -1
  142. package/locales/sr-cyrl.global.min.js +1 -1
  143. package/locales/sr.global.js +1 -1
  144. package/locales/sr.global.min.js +1 -1
  145. package/locales/sv.global.js +1 -1
  146. package/locales/sv.global.min.js +1 -1
  147. package/locales/ta-in.global.js +1 -1
  148. package/locales/ta-in.global.min.js +1 -1
  149. package/locales/th.global.js +1 -1
  150. package/locales/th.global.min.js +1 -1
  151. package/locales/tr.global.js +1 -1
  152. package/locales/tr.global.min.js +1 -1
  153. package/locales/ug.global.js +1 -1
  154. package/locales/ug.global.min.js +1 -1
  155. package/locales/uk.global.js +1 -1
  156. package/locales/uk.global.min.js +1 -1
  157. package/locales/uz-cy.global.js +1 -1
  158. package/locales/uz-cy.global.min.js +1 -1
  159. package/locales/uz.global.js +1 -1
  160. package/locales/uz.global.min.js +1 -1
  161. package/locales/vi.global.js +1 -1
  162. package/locales/vi.global.min.js +1 -1
  163. package/locales/zh-cn.global.js +1 -1
  164. package/locales/zh-cn.global.min.js +1 -1
  165. package/locales/zh-tw.global.js +1 -1
  166. package/locales/zh-tw.global.min.js +1 -1
  167. package/locales-all.global.js +1 -1
  168. package/locales-all.global.min.js +1 -1
  169. package/package.json +1 -1
  170. package/preact.js +1 -1
@@ -389,6 +389,19 @@ declare class EventImpl implements EventApi {
389
389
  }
390
390
  declare function buildEventApis(eventStore: EventStore, context: CalendarContext, excludeInstance?: EventInstance): EventImpl[];
391
391
 
392
+ declare class CalendarNowManager {
393
+ private dateEnv?;
394
+ private resetListeners;
395
+ private nowAnchorDate?;
396
+ private nowAnchorQueried?;
397
+ private nowFn?;
398
+ handleInput(dateEnv: DateEnv, // will change if timezone setup changed
399
+ nowInput: DateInput | (() => DateInput)): void;
400
+ getDateMarker(): DateMarker;
401
+ addResetListener(handler: () => void): void;
402
+ removeResetListener(handler: () => void): void;
403
+ }
404
+
392
405
  interface DateProfile {
393
406
  currentDate: DateMarker;
394
407
  isValid: boolean;
@@ -404,6 +417,7 @@ interface DateProfile {
404
417
  }
405
418
  interface DateProfileGeneratorProps extends DateProfileOptions {
406
419
  dateProfileGeneratorClass: DateProfileGeneratorClass;
420
+ nowManager: CalendarNowManager;
407
421
  duration: Duration;
408
422
  durationUnit: string;
409
423
  usesMinMaxTime: boolean;
@@ -419,7 +433,6 @@ interface DateProfileOptions {
419
433
  dateIncrement?: Duration;
420
434
  hiddenDays?: number[];
421
435
  weekends?: boolean;
422
- nowInput?: DateInput | (() => DateInput);
423
436
  validRangeInput?: DateRangeInput | ((this: CalendarImpl, nowDate: Date) => DateRangeInput);
424
437
  visibleRangeInput?: DateRangeInput | ((this: CalendarImpl, nowDate: Date) => DateRangeInput);
425
438
  fixedWeekCount?: boolean;
@@ -429,7 +442,6 @@ type DateProfileGeneratorClass = {
429
442
  };
430
443
  declare class DateProfileGenerator {
431
444
  protected props: DateProfileGeneratorProps;
432
- nowDate: DateMarker;
433
445
  isHiddenDayHash: boolean[];
434
446
  constructor(props: DateProfileGeneratorProps);
435
447
  buildPrev(currentDateProfile: DateProfile, currentDate: DateMarker, forceToValid?: boolean): DateProfile;
@@ -613,6 +625,7 @@ interface CalendarCurrentViewData {
613
625
  }
614
626
  type CalendarDataBase = CalendarOptionsData & CalendarCurrentViewData & CalendarDataManagerState;
615
627
  interface CalendarData extends CalendarDataBase {
628
+ nowManager: CalendarNowManager;
616
629
  viewTitle: string;
617
630
  calendarApi: CalendarImpl;
618
631
  dispatch: (action: Action) => void;
@@ -803,6 +816,7 @@ declare class CalendarDataManager {
803
816
  private buildEventUiBases;
804
817
  private parseContextBusinessHours;
805
818
  private buildTitle;
819
+ private nowManager;
806
820
  emitter: Emitter<Required<RefinedOptionsFromRefiners<Required<CalendarListenerRefiners>>>>;
807
821
  private actionRunner;
808
822
  private props;
@@ -1312,6 +1326,7 @@ interface ViewPropsTransformer {
1312
1326
  type ViewContainerAppend = (context: CalendarContext) => ComponentChildren;
1313
1327
 
1314
1328
  interface CalendarContext {
1329
+ nowManager: CalendarNowManager;
1315
1330
  dateEnv: DateEnv;
1316
1331
  options: BaseOptionsRefined;
1317
1332
  pluginHooks: PluginHooks;
@@ -2740,8 +2755,6 @@ interface NowTimerState {
2740
2755
  declare class NowTimer extends Component<NowTimerProps, NowTimerState> {
2741
2756
  static contextType: any;
2742
2757
  context: ViewContext;
2743
- initialNowDate: DateMarker;
2744
- initialNowQueriedMs: number;
2745
2758
  timeoutId: any;
2746
2759
  constructor(props: NowTimerProps, context: ViewContext);
2747
2760
  render(): ComponentChildren;
@@ -2751,6 +2764,8 @@ declare class NowTimer extends Component<NowTimerProps, NowTimerState> {
2751
2764
  private computeTiming;
2752
2765
  private setTimeout;
2753
2766
  private clearTimeout;
2767
+ private handleRefresh;
2768
+ private handleVisibilityChange;
2754
2769
  }
2755
2770
 
2756
2771
  interface StandardEventProps {
@@ -82,7 +82,7 @@ if (typeof document !== 'undefined') {
82
82
  registerStylesRoot(document);
83
83
  }
84
84
 
85
- var css_248z = ":root{--fc-small-font-size:.85em;--fc-page-bg-color:#fff;--fc-neutral-bg-color:hsla(0,0%,82%,.3);--fc-neutral-text-color:grey;--fc-border-color:#ddd;--fc-button-text-color:#fff;--fc-button-bg-color:#2c3e50;--fc-button-border-color:#2c3e50;--fc-button-hover-bg-color:#1e2b37;--fc-button-hover-border-color:#1a252f;--fc-button-active-bg-color:#1a252f;--fc-button-active-border-color:#151e27;--fc-event-bg-color:#3788d8;--fc-event-border-color:#3788d8;--fc-event-text-color:#fff;--fc-event-selected-overlay-color:rgba(0,0,0,.25);--fc-more-link-bg-color:#d0d0d0;--fc-more-link-text-color:inherit;--fc-event-resizer-thickness:8px;--fc-event-resizer-dot-total-width:8px;--fc-event-resizer-dot-border-width:1px;--fc-non-business-color:hsla(0,0%,84%,.3);--fc-bg-event-color:#8fdf82;--fc-bg-event-opacity:0.3;--fc-highlight-color:rgba(188,232,241,.3);--fc-today-bg-color:rgba(255,220,40,.15);--fc-now-indicator-color:red}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc{display:flex;flex-direction:column;font-size:1em}.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{padding:0;vertical-align:top}.fc a[data-navlink]{cursor:pointer}.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 var(--fc-border-color)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:fcicons;font-style:normal;font-weight:400;src:url(\"data:application/x-font-ttf;charset=utf-8;base64,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\") format(\"truetype\")}.fc-icon{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-family:fcicons!important;font-style:normal;font-variant:normal;font-weight:400;height:1em;line-height:1;text-align:center;text-transform:none;-moz-user-select:none;user-select:none;width:1em}.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{border-radius:0;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible;text-transform:none}.fc .fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc .fc-button{-webkit-appearance:button}.fc .fc-button:not(:disabled){cursor:pointer}.fc .fc-button{background-color:transparent;border:1px solid transparent;border-radius:.25em;display:inline-block;font-size:1em;font-weight:400;line-height:1.5;padding:.4em .65em;text-align:center;-moz-user-select:none;user-select:none;vertical-align:middle}.fc .fc-button:hover{text-decoration:none}.fc .fc-button:focus{box-shadow:0 0 0 .2rem rgba(44,62,80,.25);outline:0}.fc .fc-button:disabled{opacity:.65}.fc .fc-button-primary{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:hover{background-color:var(--fc-button-hover-bg-color);border-color:var(--fc-button-hover-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:disabled{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{background-color:var(--fc-button-active-bg-color);border-color:var(--fc-button-active-border-color);color:var(--fc-button-text-color)}.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 .fc-icon{font-size:1.5em;vertical-align:middle}.fc .fc-button-group{display:inline-flex;position:relative;vertical-align:middle}.fc .fc-button-group>.fc-button{flex:1 1 auto;position:relative}.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){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-bottom-left-radius:0;border-top-left-radius:0}.fc .fc-toolbar{align-items:center;display:flex;justify-content:space-between}.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{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-scroller-harness{direction:ltr;overflow:hidden;position:relative}.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 var(--fc-border-color)}.fc .fc-scrollgrid,.fc .fc-scrollgrid table{table-layout:fixed;width:100%}.fc .fc-scrollgrid table{border-left-style:hidden;border-right-style:hidden;border-top-style:hidden}.fc .fc-scrollgrid{border-bottom-width:0;border-collapse:separate;border-right-width:0}.fc .fc-scrollgrid-liquid{height:100%}.fc .fc-scrollgrid-section,.fc .fc-scrollgrid-section table,.fc .fc-scrollgrid-section>td{height:1px}.fc .fc-scrollgrid-section-liquid>td{height:100%}.fc .fc-scrollgrid-section>*{border-left-width:0;border-top-width:0}.fc .fc-scrollgrid-section-footer>*,.fc .fc-scrollgrid-section-header>*{border-bottom-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);position:sticky;z-index:3}.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:sticky}.fc .fc-view-harness{flex-grow:1;position:relative}.fc .fc-view-harness-active>.fc-view{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-col-header-cell-cushion{display:inline-block;padding:2px 4px}.fc .fc-bg-event,.fc .fc-highlight,.fc .fc-non-business{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-non-business{background:var(--fc-non-business-color)}.fc .fc-bg-event{background:var(--fc-bg-event-color);opacity:var(--fc-bg-event-opacity)}.fc .fc-bg-event .fc-event-title{font-size:var(--fc-small-font-size);font-style:italic;margin:.5em}.fc .fc-highlight{background:var(--fc-highlight-color)}.fc .fc-cell-shaded,.fc .fc-day-disabled{background:var(--fc-neutral-bg-color)}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event.fc-event-draggable,.fc-event[href]{cursor:pointer}.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{display:block}.fc-event-selected .fc-event-resizer{background:var(--fc-page-bg-color);border-color:inherit;border-radius:calc(var(--fc-event-resizer-dot-total-width)/2);border-style:solid;border-width:var(--fc-event-resizer-dot-border-width);height:var(--fc-event-resizer-dot-total-width);width:var(--fc-event-resizer-dot-total-width)}.fc-event-selected .fc-event-resizer:before{bottom:-20px;content:\"\";left:-20px;position:absolute;right:-20px;top:-20px}.fc-event-selected,.fc-event:focus{box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event-selected:before,.fc-event:focus:before{bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;z-index:3}.fc-event-selected:after,.fc-event:focus:after{background:var(--fc-event-selected-overlay-color);bottom:-1px;content:\"\";left:-1px;position:absolute;right:-1px;top:-1px;z-index:1}.fc-h-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-h-event .fc-event-main{color:var(--fc-event-text-color)}.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;left:0;max-width:100%;overflow:hidden;right:0;vertical-align:top}.fc-h-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-bottom-left-radius:0;border-left-width:0;border-top-left-radius:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{bottom:0;top:0;width:var(--fc-event-resizer-thickness)}.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:calc(var(--fc-event-resizer-thickness)*-.5)}.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:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-h-event.fc-event-selected .fc-event-resizer{margin-top:calc(var(--fc-event-resizer-dot-total-width)*-.5);top:50%}.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:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.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:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc .fc-popover{box-shadow:0 2px 6px rgba(0,0,0,.15);position:absolute;z-index:9999}.fc .fc-popover-header{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:3px 4px}.fc .fc-popover-title{margin:0 2px}.fc .fc-popover-close{cursor:pointer;font-size:1.1em;opacity:.65}.fc-theme-standard .fc-popover{background:var(--fc-page-bg-color);border:1px solid var(--fc-border-color)}.fc-theme-standard .fc-popover-header{background:var(--fc-neutral-bg-color)}";
85
+ var css_248z = ":root{--fc-small-font-size:.85em;--fc-page-bg-color:#fff;--fc-neutral-bg-color:hsla(0,0%,82%,.3);--fc-neutral-text-color:grey;--fc-border-color:#ddd;--fc-button-text-color:#fff;--fc-button-bg-color:#2c3e50;--fc-button-border-color:#2c3e50;--fc-button-hover-bg-color:#1e2b37;--fc-button-hover-border-color:#1a252f;--fc-button-active-bg-color:#1a252f;--fc-button-active-border-color:#151e27;--fc-event-bg-color:#3788d8;--fc-event-border-color:#3788d8;--fc-event-text-color:#fff;--fc-event-selected-overlay-color:rgba(0,0,0,.25);--fc-more-link-bg-color:#d0d0d0;--fc-more-link-text-color:inherit;--fc-event-resizer-thickness:8px;--fc-event-resizer-dot-total-width:8px;--fc-event-resizer-dot-border-width:1px;--fc-non-business-color:hsla(0,0%,84%,.3);--fc-bg-event-color:#8fdf82;--fc-bg-event-opacity:0.3;--fc-highlight-color:rgba(188,232,241,.3);--fc-today-bg-color:rgba(255,220,40,.15);--fc-now-indicator-color:red}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc{display:flex;flex-direction:column;font-size:1em}.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{padding:0;vertical-align:top}.fc a[data-navlink]{cursor:pointer}.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 var(--fc-border-color)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:fcicons;font-style:normal;font-weight:400;src:url(\"data:application/x-font-ttf;charset=utf-8;base64,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\") format(\"truetype\")}.fc-icon{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-family:fcicons!important;font-style:normal;font-variant:normal;font-weight:400;height:1em;line-height:1;text-align:center;text-transform:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:1em}.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{border-radius:0;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible;text-transform:none}.fc .fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc .fc-button{-webkit-appearance:button}.fc .fc-button:not(:disabled){cursor:pointer}.fc .fc-button{background-color:transparent;border:1px solid transparent;border-radius:.25em;display:inline-block;font-size:1em;font-weight:400;line-height:1.5;padding:.4em .65em;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle}.fc .fc-button:hover{text-decoration:none}.fc .fc-button:focus{box-shadow:0 0 0 .2rem rgba(44,62,80,.25);outline:0}.fc .fc-button:disabled{opacity:.65}.fc .fc-button-primary{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:hover{background-color:var(--fc-button-hover-bg-color);border-color:var(--fc-button-hover-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:disabled{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{background-color:var(--fc-button-active-bg-color);border-color:var(--fc-button-active-border-color);color:var(--fc-button-text-color)}.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 .fc-icon{font-size:1.5em;vertical-align:middle}.fc .fc-button-group{display:inline-flex;position:relative;vertical-align:middle}.fc .fc-button-group>.fc-button{flex:1 1 auto;position:relative}.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){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-bottom-left-radius:0;border-top-left-radius:0}.fc .fc-toolbar{align-items:center;display:flex;justify-content:space-between}.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{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-scroller-harness{direction:ltr;overflow:hidden;position:relative}.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 var(--fc-border-color)}.fc .fc-scrollgrid,.fc .fc-scrollgrid table{table-layout:fixed;width:100%}.fc .fc-scrollgrid table{border-left-style:hidden;border-right-style:hidden;border-top-style:hidden}.fc .fc-scrollgrid{border-bottom-width:0;border-collapse:separate;border-right-width:0}.fc .fc-scrollgrid-liquid{height:100%}.fc .fc-scrollgrid-section,.fc .fc-scrollgrid-section table,.fc .fc-scrollgrid-section>td{height:1px}.fc .fc-scrollgrid-section-liquid>td{height:100%}.fc .fc-scrollgrid-section>*{border-left-width:0;border-top-width:0}.fc .fc-scrollgrid-section-footer>*,.fc .fc-scrollgrid-section-header>*{border-bottom-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);position:sticky;z-index:3}.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:sticky}.fc .fc-view-harness{flex-grow:1;position:relative}.fc .fc-view-harness-active>.fc-view{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-col-header-cell-cushion{display:inline-block;padding:2px 4px}.fc .fc-bg-event,.fc .fc-highlight,.fc .fc-non-business{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-non-business{background:var(--fc-non-business-color)}.fc .fc-bg-event{background:var(--fc-bg-event-color);opacity:var(--fc-bg-event-opacity)}.fc .fc-bg-event .fc-event-title{font-size:var(--fc-small-font-size);font-style:italic;margin:.5em}.fc .fc-highlight{background:var(--fc-highlight-color)}.fc .fc-cell-shaded,.fc .fc-day-disabled{background:var(--fc-neutral-bg-color)}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event.fc-event-draggable,.fc-event[href]{cursor:pointer}.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{display:block}.fc-event-selected .fc-event-resizer{background:var(--fc-page-bg-color);border-color:inherit;border-radius:calc(var(--fc-event-resizer-dot-total-width)/2);border-style:solid;border-width:var(--fc-event-resizer-dot-border-width);height:var(--fc-event-resizer-dot-total-width);width:var(--fc-event-resizer-dot-total-width)}.fc-event-selected .fc-event-resizer:before{bottom:-20px;content:\"\";left:-20px;position:absolute;right:-20px;top:-20px}.fc-event-selected,.fc-event:focus{box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event-selected:before,.fc-event:focus:before{bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;z-index:3}.fc-event-selected:after,.fc-event:focus:after{background:var(--fc-event-selected-overlay-color);bottom:-1px;content:\"\";left:-1px;position:absolute;right:-1px;top:-1px;z-index:1}.fc-h-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-h-event .fc-event-main{color:var(--fc-event-text-color)}.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;left:0;max-width:100%;overflow:hidden;right:0;vertical-align:top}.fc-h-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-bottom-left-radius:0;border-left-width:0;border-top-left-radius:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{bottom:0;top:0;width:var(--fc-event-resizer-thickness)}.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:calc(var(--fc-event-resizer-thickness)*-.5)}.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:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-h-event.fc-event-selected .fc-event-resizer{margin-top:calc(var(--fc-event-resizer-dot-total-width)*-.5);top:50%}.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:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.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:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc .fc-popover{box-shadow:0 2px 6px rgba(0,0,0,.15);position:absolute;z-index:9999}.fc .fc-popover-header{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:3px 4px}.fc .fc-popover-title{margin:0 2px}.fc .fc-popover-close{cursor:pointer;font-size:1.1em;opacity:.65}.fc-theme-standard .fc-popover{background:var(--fc-page-bg-color);border:1px solid var(--fc-border-color)}.fc-theme-standard .fc-popover-header{background:var(--fc-neutral-bg-color)}";
86
86
  injectStyles(css_248z);
87
87
 
88
88
  class DelayedRunner {
@@ -963,10 +963,10 @@ function memoizeHashlike(workerFunc, resEquality, teardownFunc) {
963
963
 
964
964
  const EXTENDED_SETTINGS_AND_SEVERITIES = {
965
965
  week: 3,
966
- separator: 0,
967
- omitZeroMinute: 0,
968
- meridiem: 0,
969
- omitCommas: 0,
966
+ separator: 9,
967
+ omitZeroMinute: 9,
968
+ meridiem: 9,
969
+ omitCommas: 9,
970
970
  };
971
971
  const STANDARD_DATE_PROP_SEVERITIES = {
972
972
  timeZoneName: 7,
@@ -988,22 +988,25 @@ class NativeFormatter {
988
988
  constructor(formatSettings) {
989
989
  let standardDateProps = {};
990
990
  let extendedSettings = {};
991
- let severity = 0;
991
+ let smallestUnitNum = 9; // the smallest unit in the formatter (9 is a sentinel, beyond max)
992
992
  for (let name in formatSettings) {
993
993
  if (name in EXTENDED_SETTINGS_AND_SEVERITIES) {
994
994
  extendedSettings[name] = formatSettings[name];
995
- severity = Math.max(EXTENDED_SETTINGS_AND_SEVERITIES[name], severity);
995
+ const severity = EXTENDED_SETTINGS_AND_SEVERITIES[name];
996
+ if (severity < 9) {
997
+ smallestUnitNum = Math.min(EXTENDED_SETTINGS_AND_SEVERITIES[name], smallestUnitNum);
998
+ }
996
999
  }
997
1000
  else {
998
1001
  standardDateProps[name] = formatSettings[name];
999
1002
  if (name in STANDARD_DATE_PROP_SEVERITIES) { // TODO: what about hour12? no severity
1000
- severity = Math.max(STANDARD_DATE_PROP_SEVERITIES[name], severity);
1003
+ smallestUnitNum = Math.min(STANDARD_DATE_PROP_SEVERITIES[name], smallestUnitNum);
1001
1004
  }
1002
1005
  }
1003
1006
  }
1004
1007
  this.standardDateProps = standardDateProps;
1005
1008
  this.extendedSettings = extendedSettings;
1006
- this.severity = severity;
1009
+ this.smallestUnitNum = smallestUnitNum;
1007
1010
  this.buildFormattingFunc = memoize(buildFormattingFunc);
1008
1011
  }
1009
1012
  format(date, context) {
@@ -1038,8 +1041,8 @@ class NativeFormatter {
1038
1041
  }
1039
1042
  return full0 + separator + full1;
1040
1043
  }
1041
- getLargestUnit() {
1042
- switch (this.severity) {
1044
+ getSmallestUnit() {
1045
+ switch (this.smallestUnitNum) {
1043
1046
  case 7:
1044
1047
  case 6:
1045
1048
  case 5:
@@ -2311,9 +2314,10 @@ class ScrollResponder {
2311
2314
  }
2312
2315
 
2313
2316
  const ViewContextType = createContext({}); // for Components
2314
- function buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {
2317
+ function buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, nowManager, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {
2315
2318
  return {
2316
2319
  dateEnv,
2320
+ nowManager,
2317
2321
  options: viewOptions,
2318
2322
  pluginHooks,
2319
2323
  emitter,
@@ -2746,36 +2750,9 @@ function diffDates(date0, date1, dateEnv, largeUnit) {
2746
2750
  return diffDayAndTime(date0, date1); // returns a duration
2747
2751
  }
2748
2752
 
2749
- function reduceCurrentDate(currentDate, action) {
2750
- switch (action.type) {
2751
- case 'CHANGE_DATE':
2752
- return action.dateMarker;
2753
- default:
2754
- return currentDate;
2755
- }
2756
- }
2757
- function getInitialDate(options, dateEnv) {
2758
- let initialDateInput = options.initialDate;
2759
- // compute the initial ambig-timezone date
2760
- if (initialDateInput != null) {
2761
- return dateEnv.createMarker(initialDateInput);
2762
- }
2763
- return getNow(options.now, dateEnv); // getNow already returns unzoned
2764
- }
2765
- function getNow(nowInput, dateEnv) {
2766
- if (typeof nowInput === 'function') {
2767
- nowInput = nowInput();
2768
- }
2769
- if (nowInput == null) {
2770
- return dateEnv.createNowMarker();
2771
- }
2772
- return dateEnv.createMarker(nowInput);
2773
- }
2774
-
2775
2753
  class DateProfileGenerator {
2776
2754
  constructor(props) {
2777
2755
  this.props = props;
2778
- this.nowDate = getNow(props.nowInput, props.dateEnv);
2779
2756
  this.initHiddenDays();
2780
2757
  }
2781
2758
  /* Date Range Computation
@@ -2860,7 +2837,7 @@ class DateProfileGenerator {
2860
2837
  buildValidRange() {
2861
2838
  let input = this.props.validRangeInput;
2862
2839
  let simpleInput = typeof input === 'function'
2863
- ? input.call(this.props.calendarApi, this.nowDate)
2840
+ ? input.call(this.props.calendarApi, this.props.dateEnv.toDate(this.props.nowManager.getDateMarker()))
2864
2841
  : input;
2865
2842
  return this.refineRange(simpleInput) ||
2866
2843
  { start: null, end: null }; // completely open-ended
@@ -4752,6 +4729,85 @@ function interactionSettingsToStore(settings) {
4752
4729
  // global state
4753
4730
  const interactionSettingsStore = {};
4754
4731
 
4732
+ class NowTimer extends Component {
4733
+ constructor(props, context) {
4734
+ super(props, context);
4735
+ this.handleRefresh = () => {
4736
+ let timing = this.computeTiming();
4737
+ if (timing.state.nowDate.valueOf() !== this.state.nowDate.valueOf()) {
4738
+ this.setState(timing.state);
4739
+ }
4740
+ this.clearTimeout();
4741
+ this.setTimeout(timing.waitMs);
4742
+ };
4743
+ this.handleVisibilityChange = () => {
4744
+ if (!document.hidden) {
4745
+ this.handleRefresh();
4746
+ }
4747
+ };
4748
+ this.state = this.computeTiming().state;
4749
+ }
4750
+ render() {
4751
+ let { props, state } = this;
4752
+ return props.children(state.nowDate, state.todayRange);
4753
+ }
4754
+ componentDidMount() {
4755
+ this.setTimeout();
4756
+ this.context.nowManager.addResetListener(this.handleRefresh);
4757
+ // fired tab becomes visible after being hidden
4758
+ document.addEventListener('visibilitychange', this.handleVisibilityChange);
4759
+ }
4760
+ componentDidUpdate(prevProps) {
4761
+ if (prevProps.unit !== this.props.unit) {
4762
+ this.clearTimeout();
4763
+ this.setTimeout();
4764
+ }
4765
+ }
4766
+ componentWillUnmount() {
4767
+ this.clearTimeout();
4768
+ this.context.nowManager.removeResetListener(this.handleRefresh);
4769
+ document.removeEventListener('visibilitychange', this.handleVisibilityChange);
4770
+ }
4771
+ computeTiming() {
4772
+ let { props, context } = this;
4773
+ let unroundedNow = context.nowManager.getDateMarker();
4774
+ let currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit);
4775
+ let nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit));
4776
+ let waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf();
4777
+ // there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342)
4778
+ // ensure no longer than a day
4779
+ waitMs = Math.min(1000 * 60 * 60 * 24, waitMs);
4780
+ return {
4781
+ state: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) },
4782
+ waitMs,
4783
+ };
4784
+ }
4785
+ setTimeout(waitMs = this.computeTiming().waitMs) {
4786
+ // NOTE: timeout could take longer than expected if tab sleeps,
4787
+ // which is why we listen to 'visibilitychange'
4788
+ this.timeoutId = setTimeout(() => {
4789
+ // NOTE: timeout could also return *earlier* than expected, and we need to wait 2 ms more
4790
+ // This is why use use same waitMs from computeTiming, so we don't skip an interval while
4791
+ // .setState() is executing
4792
+ const timing = this.computeTiming();
4793
+ this.setState(timing.state, () => {
4794
+ this.setTimeout(timing.waitMs);
4795
+ });
4796
+ }, waitMs);
4797
+ }
4798
+ clearTimeout() {
4799
+ if (this.timeoutId) {
4800
+ clearTimeout(this.timeoutId);
4801
+ }
4802
+ }
4803
+ }
4804
+ NowTimer.contextType = ViewContextType;
4805
+ function buildDayRange(date) {
4806
+ let start = startOfDay(date);
4807
+ let end = addDays(start, 1);
4808
+ return { start, end };
4809
+ }
4810
+
4755
4811
  class CalendarImpl {
4756
4812
  getCurrentData() {
4757
4813
  return this.currentDataManager.getCurrentData();
@@ -4907,7 +4963,7 @@ class CalendarImpl {
4907
4963
  this.unselect();
4908
4964
  this.dispatch({
4909
4965
  type: 'CHANGE_DATE',
4910
- dateMarker: getNow(state.calendarOptions.now, state.dateEnv),
4966
+ dateMarker: state.nowManager.getDateMarker(),
4911
4967
  });
4912
4968
  }
4913
4969
  gotoDate(zonedDateInput) {
@@ -5308,7 +5364,7 @@ function buildEventUiForKey(allUi, eventUiForKey, individualUi) {
5308
5364
  function getDateMeta(date, todayRange, nowDate, dateProfile) {
5309
5365
  return {
5310
5366
  dow: date.getUTCDay(),
5311
- isDisabled: Boolean(dateProfile && !rangeContainsMarker(dateProfile.activeRange, date)),
5367
+ isDisabled: Boolean(dateProfile && (!dateProfile.activeRange || !rangeContainsMarker(dateProfile.activeRange, date))),
5312
5368
  isOther: Boolean(dateProfile && !rangeContainsMarker(dateProfile.currentRange, date)),
5313
5369
  isToday: Boolean(todayRange && rangeContainsMarker(todayRange, date)),
5314
5370
  isPast: Boolean(nowDate ? (date < nowDate) : todayRange ? (date < todayRange.start) : false),
@@ -6073,7 +6129,13 @@ class TableDateCell extends BaseComponent {
6073
6129
  let navLinkAttrs = (!dayMeta.isDisabled && props.colCnt > 1)
6074
6130
  ? buildNavLinkAttrs(this.context, date)
6075
6131
  : {};
6076
- let renderProps = Object.assign(Object.assign(Object.assign({ date: dateEnv.toDate(date), view: viewApi }, props.extraRenderProps), { text }), dayMeta);
6132
+ let publicDate = dateEnv.toDate(date);
6133
+ // workaround for Luxon (and maybe moment) returning prior-days when start-of-day
6134
+ // in DST gap: https://github.com/fullcalendar/fullcalendar/issues/7633
6135
+ if (dateEnv.namedTimeZoneImpl) {
6136
+ publicDate = addMs(publicDate, 3600000); // add an hour
6137
+ }
6138
+ let renderProps = Object.assign(Object.assign(Object.assign({ date: publicDate, view: viewApi }, props.extraRenderProps), { text }), dayMeta);
6077
6139
  return (createElement(ContentContainer, { elTag: "th", elClasses: classNames, elAttrs: Object.assign({ role: 'columnheader', colSpan: props.colSpan, 'data-date': !dayMeta.isDisabled ? formatDayString(date) : undefined }, props.extraDataAttrs), renderProps: renderProps, generatorName: "dayHeaderContent", customGenerator: options.dayHeaderContent, defaultGenerator: renderInner$1, classNameGenerator: options.dayHeaderClassNames, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, (InnerContainer) => (createElement("div", { className: "fc-scrollgrid-sync-inner" }, !dayMeta.isDisabled && (createElement(InnerContainer, { elTag: "a", elAttrs: navLinkAttrs, elClasses: [
6078
6140
  'fc-col-header-cell-cushion',
6079
6141
  props.isSticky && 'fc-sticky',
@@ -6112,65 +6174,6 @@ class TableDowCell extends BaseComponent {
6112
6174
  }
6113
6175
  }
6114
6176
 
6115
- class NowTimer extends Component {
6116
- constructor(props, context) {
6117
- super(props, context);
6118
- this.initialNowDate = getNow(context.options.now, context.dateEnv);
6119
- this.initialNowQueriedMs = new Date().valueOf();
6120
- this.state = this.computeTiming().currentState;
6121
- }
6122
- render() {
6123
- let { props, state } = this;
6124
- return props.children(state.nowDate, state.todayRange);
6125
- }
6126
- componentDidMount() {
6127
- this.setTimeout();
6128
- }
6129
- componentDidUpdate(prevProps) {
6130
- if (prevProps.unit !== this.props.unit) {
6131
- this.clearTimeout();
6132
- this.setTimeout();
6133
- }
6134
- }
6135
- componentWillUnmount() {
6136
- this.clearTimeout();
6137
- }
6138
- computeTiming() {
6139
- let { props, context } = this;
6140
- let unroundedNow = addMs(this.initialNowDate, new Date().valueOf() - this.initialNowQueriedMs);
6141
- let currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit);
6142
- let nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit));
6143
- let waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf();
6144
- // there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342)
6145
- // ensure no longer than a day
6146
- waitMs = Math.min(1000 * 60 * 60 * 24, waitMs);
6147
- return {
6148
- currentState: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) },
6149
- nextState: { nowDate: nextUnitStart, todayRange: buildDayRange(nextUnitStart) },
6150
- waitMs,
6151
- };
6152
- }
6153
- setTimeout() {
6154
- let { nextState, waitMs } = this.computeTiming();
6155
- this.timeoutId = setTimeout(() => {
6156
- this.setState(nextState, () => {
6157
- this.setTimeout();
6158
- });
6159
- }, waitMs);
6160
- }
6161
- clearTimeout() {
6162
- if (this.timeoutId) {
6163
- clearTimeout(this.timeoutId);
6164
- }
6165
- }
6166
- }
6167
- NowTimer.contextType = ViewContextType;
6168
- function buildDayRange(date) {
6169
- let start = startOfDay(date);
6170
- let end = addDays(start, 1);
6171
- return { start, end };
6172
- }
6173
-
6174
6177
  class DayHeader extends BaseComponent {
6175
6178
  constructor() {
6176
6179
  super(...arguments);
@@ -7484,4 +7487,4 @@ class CustomRenderingStore extends Store {
7484
7487
  }
7485
7488
  }
7486
7489
 
7487
- export { elementClosest as $, memoizeObjArg as A, BaseComponent as B, ContentContainer as C, DelayedRunner as D, isPropsEqual as E, Emitter as F, getInitialDate as G, rangeContainsMarker as H, createEmptyEventStore as I, reduceCurrentDate as J, reduceEventStore as K, rezoneEventStoreDates as L, mergeRawOptions as M, BASE_OPTION_REFINERS as N, CALENDAR_LISTENER_REFINERS as O, CALENDAR_OPTION_REFINERS as P, COMPLEX_OPTION_COMPARATORS as Q, VIEW_OPTION_REFINERS as R, DateEnv as S, Theme as T, DateProfileGenerator as U, ViewContextType as V, createEventUi as W, parseBusinessHours as X, setRef as Y, Interaction as Z, getElSeg as _, mapHash as a, getSlotClassNames as a$, EventImpl as a0, listenBySelector as a1, listenToHoverBySelector as a2, PureComponent as a3, buildViewContext as a4, getUniqueDomId as a5, parseInteractionSettings as a6, interactionSettingsStore as a7, getNow as a8, CalendarImpl as a9, diffDates as aA, removeExact as aB, memoizeArraylike as aC, memoizeHashlike as aD, intersectRects as aE, pointInsideRect as aF, constrainPoint as aG, getRectCenter as aH, diffPoints as aI, translateRect as aJ, compareObjs as aK, collectFromHash as aL, findElements as aM, findDirectChildren as aN, removeElement as aO, applyStyle as aP, elementMatches as aQ, getEventTargetViaRoot as aR, parseClassNames as aS, getCanVGrowWithinCell as aT, mergeEventStores as aU, getRelevantEvents as aV, eventTupleToStore as aW, combineEventUis as aX, Splitter as aY, getDayClassNames as aZ, getDateMeta as a_, flushSync as aa, CalendarRoot as ab, RenderId as ac, ensureElHasStyles as ad, applyStyleProp as ae, sliceEventStore as af, JsonRequestError as ag, createContext as ah, refineProps as ai, createEventInstance as aj, parseEventDef as ak, refineEventDef as al, padStart as am, isInt as an, parseFieldSpecs as ao, compareByFieldSpecs as ap, flexibleCompare as aq, preventSelection as ar, allowSelection as as, preventContextMenu as at, allowContextMenu as au, compareNumbers as av, enableCursor as aw, disableCursor as ax, computeVisibleDayRange as ay, isMultiDayRange as az, buildViewClassNames as b, SimpleScrollGrid as b$, buildNavLinkAttrs as b0, preventDefault as b1, whenTransitionDone as b2, computeInnerRect as b3, computeEdges as b4, getClippingParents as b5, computeRect as b6, rangesEqual as b7, rangesIntersect as b8, rangeContainsRange as b9, SegHierarchy as bA, buildEntryKey as bB, getEntrySpanEnd as bC, binarySearch as bD, groupIntersectingEntries as bE, intersectSpans as bF, interactionSettingsToStore as bG, ElementDragging as bH, config as bI, parseDragMeta as bJ, DayHeader as bK, computeFallbackHeaderFormat as bL, TableDateCell as bM, TableDowCell as bN, DaySeriesModel as bO, hasBgRendering as bP, buildSegTimeText as bQ, sortEventSegs as bR, getSegMeta as bS, buildEventRangeKey as bT, getSegAnchorAttrs as bU, DayTableModel as bV, Slicer as bW, applyMutationToEventStore as bX, isPropsValid as bY, isInteractionValid as bZ, isDateSelectionValid as b_, PositionCache as ba, ScrollController as bb, ElementScrollController as bc, WindowScrollController as bd, DateComponent as be, isDateSpansEqual as bf, addMs as bg, addWeeks as bh, diffWeeks as bi, diffWholeWeeks as bj, diffDayAndTime as bk, diffDays as bl, isValidDate as bm, asCleanDays as bn, multiplyDuration as bo, addDurations as bp, asRoughMinutes as bq, asRoughSeconds as br, asRoughMs as bs, wholeDivideDurations as bt, formatIsoTimeString as bu, formatDayString as bv, buildIsoString as bw, formatIsoMonthStr as bx, NamedTimeZoneImpl as by, parse as bz, greatestDurationDenominator as c, hasShrinkWidth as c0, renderMicroColGroup as c1, getScrollGridClassNames as c2, getSectionClassNames as c3, getSectionHasLiquidHeight as c4, getAllowYScrolling as c5, renderChunkContent as c6, computeShrinkWidth as c7, sanitizeShrinkWidth as c8, isColPropsEqual as c9, renderScrollShim as ca, getStickyFooterScrollbar as cb, getStickyHeaderDates as cc, Scroller as cd, getScrollbarWidths as ce, RefMap as cf, getIsRtlScrollbarOnLeft as cg, NowTimer as ch, ScrollResponder as ci, StandardEvent as cj, NowIndicatorContainer as ck, DayCellContainer as cl, hasCustomDayCellContent as cm, EventContainer as cn, renderFill as co, BgEvent as cp, WeekNumberContainer as cq, MoreLinkContainer as cr, computeEarliestSegStart as cs, ViewContainer as ct, triggerDateSelect as cu, getDefaultEventEnd as cv, injectStyles as cw, buildElAttrs as cx, CustomRenderingStore as cy, createDuration as d, BASE_OPTION_DEFAULTS as e, arrayToHash as f, guid as g, filterHash as h, isArraysEqual as i, buildEventSourceRefiners as j, formatWithOrdinals as k, buildRangeApiWithTimeZone as l, mergeProps as m, identity as n, intersectRanges as o, parseEventSource as p, startOfDay as q, requestJson as r, subtractDurations as s, addDays as t, unpromisify as u, hashValuesToArray as v, buildEventApis as w, createFormatter as x, diffWholeDays as y, memoize as z };
7490
+ export { listenBySelector as $, memoizeObjArg as A, BaseComponent as B, ContentContainer as C, DelayedRunner as D, isPropsEqual as E, Emitter as F, rangeContainsMarker as G, createEmptyEventStore as H, reduceEventStore as I, rezoneEventStoreDates as J, mergeRawOptions as K, BASE_OPTION_REFINERS as L, CALENDAR_LISTENER_REFINERS as M, CALENDAR_OPTION_REFINERS as N, COMPLEX_OPTION_COMPARATORS as O, VIEW_OPTION_REFINERS as P, DateEnv as Q, DateProfileGenerator as R, createEventUi as S, Theme as T, parseBusinessHours as U, ViewContextType as V, setRef as W, Interaction as X, getElSeg as Y, elementClosest as Z, EventImpl as _, mapHash as a, preventDefault as a$, listenToHoverBySelector as a0, PureComponent as a1, buildViewContext as a2, getUniqueDomId as a3, parseInteractionSettings as a4, interactionSettingsStore as a5, NowTimer as a6, CalendarImpl as a7, flushSync as a8, CalendarRoot as a9, memoizeArraylike as aA, memoizeHashlike as aB, intersectRects as aC, pointInsideRect as aD, constrainPoint as aE, getRectCenter as aF, diffPoints as aG, translateRect as aH, compareObjs as aI, collectFromHash as aJ, findElements as aK, findDirectChildren as aL, removeElement as aM, applyStyle as aN, elementMatches as aO, getEventTargetViaRoot as aP, parseClassNames as aQ, getCanVGrowWithinCell as aR, mergeEventStores as aS, getRelevantEvents as aT, eventTupleToStore as aU, combineEventUis as aV, Splitter as aW, getDayClassNames as aX, getDateMeta as aY, getSlotClassNames as aZ, buildNavLinkAttrs as a_, RenderId as aa, ensureElHasStyles as ab, applyStyleProp as ac, sliceEventStore as ad, JsonRequestError as ae, createContext as af, refineProps as ag, createEventInstance as ah, parseEventDef as ai, refineEventDef as aj, padStart as ak, isInt as al, parseFieldSpecs as am, compareByFieldSpecs as an, flexibleCompare as ao, preventSelection as ap, allowSelection as aq, preventContextMenu as ar, allowContextMenu as as, compareNumbers as at, enableCursor as au, disableCursor as av, computeVisibleDayRange as aw, isMultiDayRange as ax, diffDates as ay, removeExact as az, buildViewClassNames as b, renderMicroColGroup as b$, whenTransitionDone as b0, computeInnerRect as b1, computeEdges as b2, getClippingParents as b3, computeRect as b4, rangesEqual as b5, rangesIntersect as b6, rangeContainsRange as b7, PositionCache as b8, ScrollController as b9, getEntrySpanEnd as bA, binarySearch as bB, groupIntersectingEntries as bC, intersectSpans as bD, interactionSettingsToStore as bE, ElementDragging as bF, config as bG, parseDragMeta as bH, DayHeader as bI, computeFallbackHeaderFormat as bJ, TableDateCell as bK, TableDowCell as bL, DaySeriesModel as bM, hasBgRendering as bN, buildSegTimeText as bO, sortEventSegs as bP, getSegMeta as bQ, buildEventRangeKey as bR, getSegAnchorAttrs as bS, DayTableModel as bT, Slicer as bU, applyMutationToEventStore as bV, isPropsValid as bW, isInteractionValid as bX, isDateSelectionValid as bY, SimpleScrollGrid as bZ, hasShrinkWidth as b_, ElementScrollController as ba, WindowScrollController as bb, DateComponent as bc, isDateSpansEqual as bd, addMs as be, addWeeks as bf, diffWeeks as bg, diffWholeWeeks as bh, diffDayAndTime as bi, diffDays as bj, isValidDate as bk, asCleanDays as bl, multiplyDuration as bm, addDurations as bn, asRoughMinutes as bo, asRoughSeconds as bp, asRoughMs as bq, wholeDivideDurations as br, formatIsoTimeString as bs, formatDayString as bt, buildIsoString as bu, formatIsoMonthStr as bv, NamedTimeZoneImpl as bw, parse as bx, SegHierarchy as by, buildEntryKey as bz, greatestDurationDenominator as c, getScrollGridClassNames as c0, getSectionClassNames as c1, getSectionHasLiquidHeight as c2, getAllowYScrolling as c3, renderChunkContent as c4, computeShrinkWidth as c5, sanitizeShrinkWidth as c6, isColPropsEqual as c7, renderScrollShim as c8, getStickyFooterScrollbar as c9, getStickyHeaderDates as ca, Scroller as cb, getScrollbarWidths as cc, RefMap as cd, getIsRtlScrollbarOnLeft as ce, ScrollResponder as cf, StandardEvent as cg, NowIndicatorContainer as ch, DayCellContainer as ci, hasCustomDayCellContent as cj, EventContainer as ck, renderFill as cl, BgEvent as cm, WeekNumberContainer as cn, MoreLinkContainer as co, computeEarliestSegStart as cp, ViewContainer as cq, triggerDateSelect as cr, getDefaultEventEnd as cs, injectStyles as ct, buildElAttrs as cu, CustomRenderingStore as cv, createDuration as d, BASE_OPTION_DEFAULTS as e, arrayToHash as f, guid as g, filterHash as h, isArraysEqual as i, buildEventSourceRefiners as j, formatWithOrdinals as k, buildRangeApiWithTimeZone as l, mergeProps as m, identity as n, intersectRanges as o, parseEventSource as p, startOfDay as q, requestJson as r, subtractDurations as s, addDays as t, unpromisify as u, hashValuesToArray as v, buildEventApis as w, createFormatter as x, diffWholeDays as y, memoize as z };
package/internal.js CHANGED
@@ -1,3 +1,3 @@
1
- export { e as BASE_OPTION_DEFAULTS, B as BaseComponent, cp as BgEvent, a9 as CalendarImpl, ab as CalendarRoot, C as ContentContainer, cy as CustomRenderingStore, be as DateComponent, S as DateEnv, U as DateProfileGenerator, cl as DayCellContainer, bK as DayHeader, bO as DaySeriesModel, bV as DayTableModel, D as DelayedRunner, bH as ElementDragging, bc as ElementScrollController, F as Emitter, cn as EventContainer, a0 as EventImpl, Z as Interaction, cr as MoreLinkContainer, by as NamedTimeZoneImpl, ck as NowIndicatorContainer, ch as NowTimer, ba as PositionCache, cf as RefMap, bb as ScrollController, ci as ScrollResponder, cd as Scroller, bA as SegHierarchy, b$ as SimpleScrollGrid, bW as Slicer, aY as Splitter, cj as StandardEvent, bM as TableDateCell, bN as TableDowCell, T as Theme, ct as ViewContainer, V as ViewContextType, cq as WeekNumberContainer, bd as WindowScrollController, t as addDays, bp as addDurations, bg as addMs, bh as addWeeks, au as allowContextMenu, as as allowSelection, bX as applyMutationToEventStore, aP as applyStyle, bn as asCleanDays, bq as asRoughMinutes, bs as asRoughMs, br as asRoughSeconds, bD as binarySearch, cx as buildElAttrs, bB as buildEntryKey, w as buildEventApis, bT as buildEventRangeKey, bw as buildIsoString, b0 as buildNavLinkAttrs, bQ as buildSegTimeText, aL as collectFromHash, aX as combineEventUis, ap as compareByFieldSpecs, av as compareNumbers, aK as compareObjs, cs as computeEarliestSegStart, b4 as computeEdges, bL as computeFallbackHeaderFormat, b3 as computeInnerRect, b6 as computeRect, c7 as computeShrinkWidth, ay as computeVisibleDayRange, bI as config, aG as constrainPoint, d as createDuration, I as createEmptyEventStore, aj as createEventInstance, W as createEventUi, x as createFormatter, aA as diffDates, bk as diffDayAndTime, bl as diffDays, aI as diffPoints, bi as diffWeeks, y as diffWholeDays, bj as diffWholeWeeks, ax as disableCursor, $ as elementClosest, aQ as elementMatches, aw as enableCursor, aW as eventTupleToStore, h as filterHash, aN as findDirectChildren, aM as findElements, aq as flexibleCompare, bv as formatDayString, bx as formatIsoMonthStr, bu as formatIsoTimeString, c5 as getAllowYScrolling, aT as getCanVGrowWithinCell, b5 as getClippingParents, a_ as getDateMeta, aZ as getDayClassNames, cv as getDefaultEventEnd, _ as getElSeg, bC as getEntrySpanEnd, aR as getEventTargetViaRoot, cg as getIsRtlScrollbarOnLeft, aH as getRectCenter, aV as getRelevantEvents, c2 as getScrollGridClassNames, ce as getScrollbarWidths, c3 as getSectionClassNames, c4 as getSectionHasLiquidHeight, bU as getSegAnchorAttrs, bS as getSegMeta, a$ as getSlotClassNames, cb as getStickyFooterScrollbar, cc as getStickyHeaderDates, a5 as getUniqueDomId, c as greatestDurationDenominator, bE as groupIntersectingEntries, g as guid, bP as hasBgRendering, cm as hasCustomDayCellContent, c0 as hasShrinkWidth, n as identity, cw as injectStyles, a7 as interactionSettingsStore, bG as interactionSettingsToStore, o as intersectRanges, aE as intersectRects, bF as intersectSpans, i as isArraysEqual, c9 as isColPropsEqual, b_ as isDateSelectionValid, bf as isDateSpansEqual, an as isInt, bZ as isInteractionValid, az as isMultiDayRange, E as isPropsEqual, bY as isPropsValid, bm as isValidDate, a as mapHash, z as memoize, aC as memoizeArraylike, aD as memoizeHashlike, A as memoizeObjArg, aU as mergeEventStores, bo as multiplyDuration, am as padStart, X as parseBusinessHours, aS as parseClassNames, bJ as parseDragMeta, ak as parseEventDef, ao as parseFieldSpecs, bz as parseMarker, aF as pointInsideRect, at as preventContextMenu, b1 as preventDefault, ar as preventSelection, H as rangeContainsMarker, b9 as rangeContainsRange, b7 as rangesEqual, b8 as rangesIntersect, al as refineEventDef, ai as refineProps, aO as removeElement, aB as removeExact, c6 as renderChunkContent, co as renderFill, c1 as renderMicroColGroup, ca as renderScrollShim, r as requestJson, c8 as sanitizeShrinkWidth, Y as setRef, af as sliceEventStore, bR as sortEventSegs, q as startOfDay, aJ as translateRect, cu as triggerDateSelect, u as unpromisify, b2 as whenTransitionDone, bt as wholeDivideDurations } from './internal-common.js';
1
+ export { e as BASE_OPTION_DEFAULTS, B as BaseComponent, cm as BgEvent, a7 as CalendarImpl, a9 as CalendarRoot, C as ContentContainer, cv as CustomRenderingStore, bc as DateComponent, Q as DateEnv, R as DateProfileGenerator, ci as DayCellContainer, bI as DayHeader, bM as DaySeriesModel, bT as DayTableModel, D as DelayedRunner, bF as ElementDragging, ba as ElementScrollController, F as Emitter, ck as EventContainer, _ as EventImpl, X as Interaction, co as MoreLinkContainer, bw as NamedTimeZoneImpl, ch as NowIndicatorContainer, a6 as NowTimer, b8 as PositionCache, cd as RefMap, b9 as ScrollController, cf as ScrollResponder, cb as Scroller, by as SegHierarchy, bZ as SimpleScrollGrid, bU as Slicer, aW as Splitter, cg as StandardEvent, bK as TableDateCell, bL as TableDowCell, T as Theme, cq as ViewContainer, V as ViewContextType, cn as WeekNumberContainer, bb as WindowScrollController, t as addDays, bn as addDurations, be as addMs, bf as addWeeks, as as allowContextMenu, aq as allowSelection, bV as applyMutationToEventStore, aN as applyStyle, bl as asCleanDays, bo as asRoughMinutes, bq as asRoughMs, bp as asRoughSeconds, bB as binarySearch, cu as buildElAttrs, bz as buildEntryKey, w as buildEventApis, bR as buildEventRangeKey, bu as buildIsoString, a_ as buildNavLinkAttrs, bO as buildSegTimeText, aJ as collectFromHash, aV as combineEventUis, an as compareByFieldSpecs, at as compareNumbers, aI as compareObjs, cp as computeEarliestSegStart, b2 as computeEdges, bJ as computeFallbackHeaderFormat, b1 as computeInnerRect, b4 as computeRect, c5 as computeShrinkWidth, aw as computeVisibleDayRange, bG as config, aE as constrainPoint, d as createDuration, H as createEmptyEventStore, ah as createEventInstance, S as createEventUi, x as createFormatter, ay as diffDates, bi as diffDayAndTime, bj as diffDays, aG as diffPoints, bg as diffWeeks, y as diffWholeDays, bh as diffWholeWeeks, av as disableCursor, Z as elementClosest, aO as elementMatches, au as enableCursor, aU as eventTupleToStore, h as filterHash, aL as findDirectChildren, aK as findElements, ao as flexibleCompare, bt as formatDayString, bv as formatIsoMonthStr, bs as formatIsoTimeString, c3 as getAllowYScrolling, aR as getCanVGrowWithinCell, b3 as getClippingParents, aY as getDateMeta, aX as getDayClassNames, cs as getDefaultEventEnd, Y as getElSeg, bA as getEntrySpanEnd, aP as getEventTargetViaRoot, ce as getIsRtlScrollbarOnLeft, aF as getRectCenter, aT as getRelevantEvents, c0 as getScrollGridClassNames, cc as getScrollbarWidths, c1 as getSectionClassNames, c2 as getSectionHasLiquidHeight, bS as getSegAnchorAttrs, bQ as getSegMeta, aZ as getSlotClassNames, c9 as getStickyFooterScrollbar, ca as getStickyHeaderDates, a3 as getUniqueDomId, c as greatestDurationDenominator, bC as groupIntersectingEntries, g as guid, bN as hasBgRendering, cj as hasCustomDayCellContent, b_ as hasShrinkWidth, n as identity, ct as injectStyles, a5 as interactionSettingsStore, bE as interactionSettingsToStore, o as intersectRanges, aC as intersectRects, bD as intersectSpans, i as isArraysEqual, c7 as isColPropsEqual, bY as isDateSelectionValid, bd as isDateSpansEqual, al as isInt, bX as isInteractionValid, ax as isMultiDayRange, E as isPropsEqual, bW as isPropsValid, bk as isValidDate, a as mapHash, z as memoize, aA as memoizeArraylike, aB as memoizeHashlike, A as memoizeObjArg, aS as mergeEventStores, bm as multiplyDuration, ak as padStart, U as parseBusinessHours, aQ as parseClassNames, bH as parseDragMeta, ai as parseEventDef, am as parseFieldSpecs, bx as parseMarker, aD as pointInsideRect, ar as preventContextMenu, a$ as preventDefault, ap as preventSelection, G as rangeContainsMarker, b7 as rangeContainsRange, b5 as rangesEqual, b6 as rangesIntersect, aj as refineEventDef, ag as refineProps, aM as removeElement, az as removeExact, c4 as renderChunkContent, cl as renderFill, b$ as renderMicroColGroup, c8 as renderScrollShim, r as requestJson, c6 as sanitizeShrinkWidth, W as setRef, ad as sliceEventStore, bP as sortEventSegs, q as startOfDay, aH as translateRect, cr as triggerDateSelect, u as unpromisify, b0 as whenTransitionDone, br as wholeDivideDurations } from './internal-common.js';
2
2
  import 'preact';
3
3
  import 'preact/compat';
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Core v6.1.15
2
+ FullCalendar Core v6.1.17
3
3
  Docs & License: https://fullcalendar.io
4
4
  (c) 2024 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Core v6.1.15
2
+ FullCalendar Core v6.1.17
3
3
  Docs & License: https://fullcalendar.io
4
4
  (c) 2024 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Core v6.1.15
2
+ FullCalendar Core v6.1.17
3
3
  Docs & License: https://fullcalendar.io
4
4
  (c) 2024 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Core v6.1.15
2
+ FullCalendar Core v6.1.17
3
3
  Docs & License: https://fullcalendar.io
4
4
  (c) 2024 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Core v6.1.15
2
+ FullCalendar Core v6.1.17
3
3
  Docs & License: https://fullcalendar.io
4
4
  (c) 2024 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Core v6.1.15
2
+ FullCalendar Core v6.1.17
3
3
  Docs & License: https://fullcalendar.io
4
4
  (c) 2024 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Core v6.1.15
2
+ FullCalendar Core v6.1.17
3
3
  Docs & License: https://fullcalendar.io
4
4
  (c) 2024 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Core v6.1.15
2
+ FullCalendar Core v6.1.17
3
3
  Docs & License: https://fullcalendar.io
4
4
  (c) 2024 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Core v6.1.15
2
+ FullCalendar Core v6.1.17
3
3
  Docs & License: https://fullcalendar.io
4
4
  (c) 2024 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Core v6.1.15
2
+ FullCalendar Core v6.1.17
3
3
  Docs & License: https://fullcalendar.io
4
4
  (c) 2024 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Core v6.1.15
2
+ FullCalendar Core v6.1.17
3
3
  Docs & License: https://fullcalendar.io
4
4
  (c) 2024 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Core v6.1.15
2
+ FullCalendar Core v6.1.17
3
3
  Docs & License: https://fullcalendar.io
4
4
  (c) 2024 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Core v6.1.15
2
+ FullCalendar Core v6.1.17
3
3
  Docs & License: https://fullcalendar.io
4
4
  (c) 2024 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Core v6.1.15
2
+ FullCalendar Core v6.1.17
3
3
  Docs & License: https://fullcalendar.io
4
4
  (c) 2024 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Core v6.1.15
2
+ FullCalendar Core v6.1.17
3
3
  Docs & License: https://fullcalendar.io
4
4
  (c) 2024 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- FullCalendar Core v6.1.15
2
+ FullCalendar Core v6.1.17
3
3
  Docs & License: https://fullcalendar.io
4
4
  (c) 2024 Adam Shaw
5
5
  */