@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
package/index.global.js CHANGED
@@ -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
  */
@@ -86,7 +86,7 @@ var FullCalendar = (function (exports) {
86
86
  registerStylesRoot(document);
87
87
  }
88
88
 
89
- 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)}";
89
+ 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)}";
90
90
  injectStyles(css_248z);
91
91
 
92
92
  function removeElement(el) {
@@ -1056,10 +1056,10 @@ var FullCalendar = (function (exports) {
1056
1056
 
1057
1057
  const EXTENDED_SETTINGS_AND_SEVERITIES = {
1058
1058
  week: 3,
1059
- separator: 0,
1060
- omitZeroMinute: 0,
1061
- meridiem: 0,
1062
- omitCommas: 0,
1059
+ separator: 9,
1060
+ omitZeroMinute: 9,
1061
+ meridiem: 9,
1062
+ omitCommas: 9,
1063
1063
  };
1064
1064
  const STANDARD_DATE_PROP_SEVERITIES = {
1065
1065
  timeZoneName: 7,
@@ -1081,22 +1081,25 @@ var FullCalendar = (function (exports) {
1081
1081
  constructor(formatSettings) {
1082
1082
  let standardDateProps = {};
1083
1083
  let extendedSettings = {};
1084
- let severity = 0;
1084
+ let smallestUnitNum = 9; // the smallest unit in the formatter (9 is a sentinel, beyond max)
1085
1085
  for (let name in formatSettings) {
1086
1086
  if (name in EXTENDED_SETTINGS_AND_SEVERITIES) {
1087
1087
  extendedSettings[name] = formatSettings[name];
1088
- severity = Math.max(EXTENDED_SETTINGS_AND_SEVERITIES[name], severity);
1088
+ const severity = EXTENDED_SETTINGS_AND_SEVERITIES[name];
1089
+ if (severity < 9) {
1090
+ smallestUnitNum = Math.min(EXTENDED_SETTINGS_AND_SEVERITIES[name], smallestUnitNum);
1091
+ }
1089
1092
  }
1090
1093
  else {
1091
1094
  standardDateProps[name] = formatSettings[name];
1092
1095
  if (name in STANDARD_DATE_PROP_SEVERITIES) { // TODO: what about hour12? no severity
1093
- severity = Math.max(STANDARD_DATE_PROP_SEVERITIES[name], severity);
1096
+ smallestUnitNum = Math.min(STANDARD_DATE_PROP_SEVERITIES[name], smallestUnitNum);
1094
1097
  }
1095
1098
  }
1096
1099
  }
1097
1100
  this.standardDateProps = standardDateProps;
1098
1101
  this.extendedSettings = extendedSettings;
1099
- this.severity = severity;
1102
+ this.smallestUnitNum = smallestUnitNum;
1100
1103
  this.buildFormattingFunc = memoize(buildFormattingFunc);
1101
1104
  }
1102
1105
  format(date, context) {
@@ -1131,8 +1134,8 @@ var FullCalendar = (function (exports) {
1131
1134
  }
1132
1135
  return full0 + separator + full1;
1133
1136
  }
1134
- getLargestUnit() {
1135
- switch (this.severity) {
1137
+ getSmallestUnit() {
1138
+ switch (this.smallestUnitNum) {
1136
1139
  case 7:
1137
1140
  case 6:
1138
1141
  case 5:
@@ -2487,7 +2490,7 @@ var FullCalendar = (function (exports) {
2487
2490
  function getDateMeta(date, todayRange, nowDate, dateProfile) {
2488
2491
  return {
2489
2492
  dow: date.getUTCDay(),
2490
- isDisabled: Boolean(dateProfile && !rangeContainsMarker(dateProfile.activeRange, date)),
2493
+ isDisabled: Boolean(dateProfile && (!dateProfile.activeRange || !rangeContainsMarker(dateProfile.activeRange, date))),
2491
2494
  isOther: Boolean(dateProfile && !rangeContainsMarker(dateProfile.currentRange, date)),
2492
2495
  isToday: Boolean(todayRange && rangeContainsMarker(todayRange, date)),
2493
2496
  isPast: Boolean(nowDate ? (date < nowDate) : todayRange ? (date < todayRange.start) : false),
@@ -3138,9 +3141,10 @@ var FullCalendar = (function (exports) {
3138
3141
  }
3139
3142
 
3140
3143
  const ViewContextType = createContext({}); // for Components
3141
- function buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {
3144
+ function buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, nowManager, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {
3142
3145
  return {
3143
3146
  dateEnv,
3147
+ nowManager,
3144
3148
  options: viewOptions,
3145
3149
  pluginHooks,
3146
3150
  emitter,
@@ -3246,36 +3250,9 @@ var FullCalendar = (function (exports) {
3246
3250
  }
3247
3251
  }
3248
3252
 
3249
- function reduceCurrentDate(currentDate, action) {
3250
- switch (action.type) {
3251
- case 'CHANGE_DATE':
3252
- return action.dateMarker;
3253
- default:
3254
- return currentDate;
3255
- }
3256
- }
3257
- function getInitialDate(options, dateEnv) {
3258
- let initialDateInput = options.initialDate;
3259
- // compute the initial ambig-timezone date
3260
- if (initialDateInput != null) {
3261
- return dateEnv.createMarker(initialDateInput);
3262
- }
3263
- return getNow(options.now, dateEnv); // getNow already returns unzoned
3264
- }
3265
- function getNow(nowInput, dateEnv) {
3266
- if (typeof nowInput === 'function') {
3267
- nowInput = nowInput();
3268
- }
3269
- if (nowInput == null) {
3270
- return dateEnv.createNowMarker();
3271
- }
3272
- return dateEnv.createMarker(nowInput);
3273
- }
3274
-
3275
3253
  class DateProfileGenerator {
3276
3254
  constructor(props) {
3277
3255
  this.props = props;
3278
- this.nowDate = getNow(props.nowInput, props.dateEnv);
3279
3256
  this.initHiddenDays();
3280
3257
  }
3281
3258
  /* Date Range Computation
@@ -3360,7 +3337,7 @@ var FullCalendar = (function (exports) {
3360
3337
  buildValidRange() {
3361
3338
  let input = this.props.validRangeInput;
3362
3339
  let simpleInput = typeof input === 'function'
3363
- ? input.call(this.props.calendarApi, this.nowDate)
3340
+ ? input.call(this.props.calendarApi, this.props.dateEnv.toDate(this.props.nowManager.getDateMarker()))
3364
3341
  : input;
3365
3342
  return this.refineRange(simpleInput) ||
3366
3343
  { start: null, end: null }; // completely open-ended
@@ -5405,7 +5382,13 @@ var FullCalendar = (function (exports) {
5405
5382
  let navLinkAttrs = (!dayMeta.isDisabled && props.colCnt > 1)
5406
5383
  ? buildNavLinkAttrs(this.context, date)
5407
5384
  : {};
5408
- let renderProps = Object.assign(Object.assign(Object.assign({ date: dateEnv.toDate(date), view: viewApi }, props.extraRenderProps), { text }), dayMeta);
5385
+ let publicDate = dateEnv.toDate(date);
5386
+ // workaround for Luxon (and maybe moment) returning prior-days when start-of-day
5387
+ // in DST gap: https://github.com/fullcalendar/fullcalendar/issues/7633
5388
+ if (dateEnv.namedTimeZoneImpl) {
5389
+ publicDate = addMs(publicDate, 3600000); // add an hour
5390
+ }
5391
+ let renderProps = Object.assign(Object.assign(Object.assign({ date: publicDate, view: viewApi }, props.extraRenderProps), { text }), dayMeta);
5409
5392
  return (y(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) => (y("div", { className: "fc-scrollgrid-sync-inner" }, !dayMeta.isDisabled && (y(InnerContainer, { elTag: "a", elAttrs: navLinkAttrs, elClasses: [
5410
5393
  'fc-col-header-cell-cushion',
5411
5394
  props.isSticky && 'fc-sticky',
@@ -5447,9 +5430,20 @@ var FullCalendar = (function (exports) {
5447
5430
  class NowTimer extends x$1 {
5448
5431
  constructor(props, context) {
5449
5432
  super(props, context);
5450
- this.initialNowDate = getNow(context.options.now, context.dateEnv);
5451
- this.initialNowQueriedMs = new Date().valueOf();
5452
- this.state = this.computeTiming().currentState;
5433
+ this.handleRefresh = () => {
5434
+ let timing = this.computeTiming();
5435
+ if (timing.state.nowDate.valueOf() !== this.state.nowDate.valueOf()) {
5436
+ this.setState(timing.state);
5437
+ }
5438
+ this.clearTimeout();
5439
+ this.setTimeout(timing.waitMs);
5440
+ };
5441
+ this.handleVisibilityChange = () => {
5442
+ if (!document.hidden) {
5443
+ this.handleRefresh();
5444
+ }
5445
+ };
5446
+ this.state = this.computeTiming().state;
5453
5447
  }
5454
5448
  render() {
5455
5449
  let { props, state } = this;
@@ -5457,6 +5451,9 @@ var FullCalendar = (function (exports) {
5457
5451
  }
5458
5452
  componentDidMount() {
5459
5453
  this.setTimeout();
5454
+ this.context.nowManager.addResetListener(this.handleRefresh);
5455
+ // fired tab becomes visible after being hidden
5456
+ document.addEventListener('visibilitychange', this.handleVisibilityChange);
5460
5457
  }
5461
5458
  componentDidUpdate(prevProps) {
5462
5459
  if (prevProps.unit !== this.props.unit) {
@@ -5466,10 +5463,12 @@ var FullCalendar = (function (exports) {
5466
5463
  }
5467
5464
  componentWillUnmount() {
5468
5465
  this.clearTimeout();
5466
+ this.context.nowManager.removeResetListener(this.handleRefresh);
5467
+ document.removeEventListener('visibilitychange', this.handleVisibilityChange);
5469
5468
  }
5470
5469
  computeTiming() {
5471
5470
  let { props, context } = this;
5472
- let unroundedNow = addMs(this.initialNowDate, new Date().valueOf() - this.initialNowQueriedMs);
5471
+ let unroundedNow = context.nowManager.getDateMarker();
5473
5472
  let currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit);
5474
5473
  let nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit));
5475
5474
  let waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf();
@@ -5477,16 +5476,20 @@ var FullCalendar = (function (exports) {
5477
5476
  // ensure no longer than a day
5478
5477
  waitMs = Math.min(1000 * 60 * 60 * 24, waitMs);
5479
5478
  return {
5480
- currentState: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) },
5481
- nextState: { nowDate: nextUnitStart, todayRange: buildDayRange(nextUnitStart) },
5479
+ state: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) },
5482
5480
  waitMs,
5483
5481
  };
5484
5482
  }
5485
- setTimeout() {
5486
- let { nextState, waitMs } = this.computeTiming();
5483
+ setTimeout(waitMs = this.computeTiming().waitMs) {
5484
+ // NOTE: timeout could take longer than expected if tab sleeps,
5485
+ // which is why we listen to 'visibilitychange'
5487
5486
  this.timeoutId = setTimeout(() => {
5488
- this.setState(nextState, () => {
5489
- this.setTimeout();
5487
+ // NOTE: timeout could also return *earlier* than expected, and we need to wait 2 ms more
5488
+ // This is why use use same waitMs from computeTiming, so we don't skip an interval while
5489
+ // .setState() is executing
5490
+ const timing = this.computeTiming();
5491
+ this.setState(timing.state, () => {
5492
+ this.setTimeout(timing.waitMs);
5490
5493
  });
5491
5494
  }, waitMs);
5492
5495
  }
@@ -7247,7 +7250,7 @@ var FullCalendar = (function (exports) {
7247
7250
  this.unselect();
7248
7251
  this.dispatch({
7249
7252
  type: 'CHANGE_DATE',
7250
- dateMarker: getNow(state.calendarOptions.now, state.dateEnv),
7253
+ dateMarker: state.nowManager.getDateMarker(),
7251
7254
  });
7252
7255
  }
7253
7256
  gotoDate(zonedDateInput) {
@@ -8158,6 +8161,25 @@ var FullCalendar = (function (exports) {
8158
8161
  return viewType;
8159
8162
  }
8160
8163
 
8164
+ function reduceCurrentDate(currentDate, action) {
8165
+ switch (action.type) {
8166
+ case 'CHANGE_DATE':
8167
+ return action.dateMarker;
8168
+ default:
8169
+ return currentDate;
8170
+ }
8171
+ }
8172
+ // should be initialized once and stay constant
8173
+ // this will change too
8174
+ function getInitialDate(options, dateEnv, nowManager) {
8175
+ let initialDateInput = options.initialDate;
8176
+ // compute the initial ambig-timezone date
8177
+ if (initialDateInput != null) {
8178
+ return dateEnv.createMarker(initialDateInput);
8179
+ }
8180
+ return nowManager.getDateMarker();
8181
+ }
8182
+
8161
8183
  function reduceDynamicOptionOverrides(dynamicOptionOverrides, action) {
8162
8184
  switch (action.type) {
8163
8185
  case 'SET_OPTION':
@@ -8667,6 +8689,7 @@ var FullCalendar = (function (exports) {
8667
8689
  endTime: refined.endTime || null,
8668
8690
  startRecur: refined.startRecur ? dateEnv.createMarker(refined.startRecur) : null,
8669
8691
  endRecur: refined.endRecur ? dateEnv.createMarker(refined.endRecur) : null,
8692
+ dateEnv,
8670
8693
  };
8671
8694
  let duration;
8672
8695
  if (refined.duration) {
@@ -8686,7 +8709,7 @@ var FullCalendar = (function (exports) {
8686
8709
  expand(typeData, framingRange, dateEnv) {
8687
8710
  let clippedFramingRange = intersectRanges(framingRange, { start: typeData.startRecur, end: typeData.endRecur });
8688
8711
  if (clippedFramingRange) {
8689
- return expandRanges(typeData.daysOfWeek, typeData.startTime, clippedFramingRange, dateEnv);
8712
+ return expandRanges(typeData.daysOfWeek, typeData.startTime, typeData.dateEnv, dateEnv, clippedFramingRange);
8690
8713
  }
8691
8714
  return [];
8692
8715
  },
@@ -8696,7 +8719,7 @@ var FullCalendar = (function (exports) {
8696
8719
  recurringTypes: [recurring],
8697
8720
  eventRefiners: SIMPLE_RECURRING_REFINERS,
8698
8721
  });
8699
- function expandRanges(daysOfWeek, startTime, framingRange, dateEnv) {
8722
+ function expandRanges(daysOfWeek, startTime, eventDateEnv, calendarDateEnv, framingRange) {
8700
8723
  let dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null;
8701
8724
  let dayMarker = startOfDay(framingRange.start);
8702
8725
  let endMarker = framingRange.end;
@@ -8706,12 +8729,12 @@ var FullCalendar = (function (exports) {
8706
8729
  // if everyday, or this particular day-of-week
8707
8730
  if (!dowHash || dowHash[dayMarker.getUTCDay()]) {
8708
8731
  if (startTime) {
8709
- instanceStart = dateEnv.add(dayMarker, startTime);
8732
+ instanceStart = calendarDateEnv.add(dayMarker, startTime);
8710
8733
  }
8711
8734
  else {
8712
8735
  instanceStart = dayMarker;
8713
8736
  }
8714
- instanceStarts.push(instanceStart);
8737
+ instanceStarts.push(calendarDateEnv.createMarker(eventDateEnv.toDate(instanceStart)));
8715
8738
  }
8716
8739
  dayMarker = addDays(dayMarker, 1);
8717
8740
  }
@@ -8876,6 +8899,49 @@ var FullCalendar = (function (exports) {
8876
8899
  return { year: 'numeric', month: 'long', day: 'numeric' };
8877
8900
  }
8878
8901
 
8902
+ /*
8903
+ TODO: test switching timezones when NO timezone plugin
8904
+ */
8905
+ class CalendarNowManager {
8906
+ constructor() {
8907
+ this.resetListeners = new Set();
8908
+ }
8909
+ handleInput(dateEnv, // will change if timezone setup changed
8910
+ nowInput) {
8911
+ const oldDateEnv = this.dateEnv;
8912
+ if (dateEnv !== oldDateEnv) {
8913
+ if (typeof nowInput === 'function') {
8914
+ this.nowFn = nowInput;
8915
+ }
8916
+ else if (!oldDateEnv) { // first time?
8917
+ this.nowAnchorDate = dateEnv.toDate(nowInput
8918
+ ? dateEnv.createMarker(nowInput)
8919
+ : dateEnv.createNowMarker());
8920
+ this.nowAnchorQueried = Date.now();
8921
+ }
8922
+ this.dateEnv = dateEnv;
8923
+ // not first time? fire reset handlers
8924
+ if (oldDateEnv) {
8925
+ for (const resetListener of this.resetListeners.values()) {
8926
+ resetListener();
8927
+ }
8928
+ }
8929
+ }
8930
+ }
8931
+ getDateMarker() {
8932
+ return this.nowAnchorDate
8933
+ ? this.dateEnv.timestampToMarker(this.nowAnchorDate.valueOf() +
8934
+ (Date.now() - this.nowAnchorQueried))
8935
+ : this.dateEnv.createMarker(this.nowFn());
8936
+ }
8937
+ addResetListener(handler) {
8938
+ this.resetListeners.add(handler);
8939
+ }
8940
+ removeResetListener(handler) {
8941
+ this.resetListeners.delete(handler);
8942
+ }
8943
+ }
8944
+
8879
8945
  // in future refactor, do the redux-style function(state=initial) for initial-state
8880
8946
  // also, whatever is happening in constructor, have it happen in action queue too
8881
8947
  class CalendarDataManager {
@@ -8895,6 +8961,7 @@ var FullCalendar = (function (exports) {
8895
8961
  this.buildEventUiBases = memoize(buildEventUiBases);
8896
8962
  this.parseContextBusinessHours = memoizeObjArg(parseContextBusinessHours);
8897
8963
  this.buildTitle = memoize(buildTitle);
8964
+ this.nowManager = new CalendarNowManager();
8898
8965
  this.emitter = new Emitter();
8899
8966
  this.actionRunner = new TaskRunner(this._handleAction.bind(this), this.updateData.bind(this));
8900
8967
  this.currentCalendarOptionsInput = {};
@@ -8910,6 +8977,7 @@ var FullCalendar = (function (exports) {
8910
8977
  };
8911
8978
  this.props = props;
8912
8979
  this.actionRunner.pause();
8980
+ this.nowManager = new CalendarNowManager();
8913
8981
  let dynamicOptionOverrides = {};
8914
8982
  let optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);
8915
8983
  let currentViewType = optionsData.calendarOptions.initialView || optionsData.pluginHooks.initialView;
@@ -8919,12 +8987,8 @@ var FullCalendar = (function (exports) {
8919
8987
  props.calendarApi.currentDataManager = this;
8920
8988
  this.emitter.setThisContext(props.calendarApi);
8921
8989
  this.emitter.setOptions(currentViewData.options);
8922
- let currentDate = getInitialDate(optionsData.calendarOptions, optionsData.dateEnv);
8923
- let dateProfile = currentViewData.dateProfileGenerator.build(currentDate);
8924
- if (!rangeContainsMarker(dateProfile.activeRange, currentDate)) {
8925
- currentDate = dateProfile.currentRange.start;
8926
- }
8927
8990
  let calendarContext = {
8991
+ nowManager: this.nowManager,
8928
8992
  dateEnv: optionsData.dateEnv,
8929
8993
  options: optionsData.calendarOptions,
8930
8994
  pluginHooks: optionsData.pluginHooks,
@@ -8933,6 +8997,11 @@ var FullCalendar = (function (exports) {
8933
8997
  emitter: this.emitter,
8934
8998
  getCurrentData: this.getCurrentData,
8935
8999
  };
9000
+ let currentDate = getInitialDate(optionsData.calendarOptions, optionsData.dateEnv, this.nowManager);
9001
+ let dateProfile = currentViewData.dateProfileGenerator.build(currentDate);
9002
+ if (!rangeContainsMarker(dateProfile.activeRange, currentDate)) {
9003
+ currentDate = dateProfile.currentRange.start;
9004
+ }
8936
9005
  // needs to be after setThisContext
8937
9006
  for (let callback of optionsData.pluginHooks.contextInit) {
8938
9007
  callback(calendarContext);
@@ -8993,6 +9062,7 @@ var FullCalendar = (function (exports) {
8993
9062
  emitter.setThisContext(props.calendarApi);
8994
9063
  emitter.setOptions(currentViewData.options);
8995
9064
  let calendarContext = {
9065
+ nowManager: this.nowManager,
8996
9066
  dateEnv: optionsData.dateEnv,
8997
9067
  options: optionsData.calendarOptions,
8998
9068
  pluginHooks: optionsData.pluginHooks,
@@ -9060,7 +9130,7 @@ var FullCalendar = (function (exports) {
9060
9130
  let oldData = this.data;
9061
9131
  let optionsData = this.computeOptionsData(props.optionOverrides, state.dynamicOptionOverrides, props.calendarApi);
9062
9132
  let currentViewData = this.computeCurrentViewData(state.currentViewType, optionsData, props.optionOverrides, state.dynamicOptionOverrides);
9063
- let data = this.data = Object.assign(Object.assign(Object.assign({ viewTitle: this.buildTitle(state.dateProfile, currentViewData.options, optionsData.dateEnv), calendarApi: props.calendarApi, dispatch: this.dispatch, emitter: this.emitter, getCurrentData: this.getCurrentData }, optionsData), currentViewData), state);
9133
+ let data = this.data = Object.assign(Object.assign(Object.assign({ nowManager: this.nowManager, viewTitle: this.buildTitle(state.dateProfile, currentViewData.options, optionsData.dateEnv), calendarApi: props.calendarApi, dispatch: this.dispatch, emitter: this.emitter, getCurrentData: this.getCurrentData }, optionsData), currentViewData), state);
9064
9134
  let changeHandlers = optionsData.pluginHooks.optionChangeHandlers;
9065
9135
  let oldCalendarOptions = oldData && oldData.calendarOptions;
9066
9136
  let newCalendarOptions = optionsData.calendarOptions;
@@ -9168,8 +9238,10 @@ var FullCalendar = (function (exports) {
9168
9238
  }
9169
9239
  let { refinedOptions, extra } = this.processRawViewOptions(viewSpec, optionsData.pluginHooks, optionsData.localeDefaults, optionOverrides, dynamicOptionOverrides);
9170
9240
  warnUnknownOptions(extra);
9241
+ this.nowManager.handleInput(optionsData.dateEnv, refinedOptions.now);
9171
9242
  let dateProfileGenerator = this.buildDateProfileGenerator({
9172
9243
  dateProfileGeneratorClass: viewSpec.optionDefaults.dateProfileGeneratorClass,
9244
+ nowManager: this.nowManager,
9173
9245
  duration: viewSpec.duration,
9174
9246
  durationUnit: viewSpec.durationUnit,
9175
9247
  usesMinMaxTime: viewSpec.optionDefaults.usesMinMaxTime,
@@ -9183,7 +9255,6 @@ var FullCalendar = (function (exports) {
9183
9255
  dateIncrement: refinedOptions.dateIncrement,
9184
9256
  hiddenDays: refinedOptions.hiddenDays,
9185
9257
  weekends: refinedOptions.weekends,
9186
- nowInput: refinedOptions.now,
9187
9258
  validRangeInput: refinedOptions.validRange,
9188
9259
  visibleRangeInput: refinedOptions.visibleRange,
9189
9260
  fixedWeekCount: refinedOptions.fixedWeekCount,
@@ -9587,8 +9658,6 @@ var FullCalendar = (function (exports) {
9587
9658
  render() {
9588
9659
  let { props } = this;
9589
9660
  let { toolbarConfig, options } = props;
9590
- let toolbarProps = this.buildToolbarProps(props.viewSpec, props.dateProfile, props.dateProfileGenerator, props.currentDate, getNow(props.options.now, props.dateEnv), // TODO: use NowTimer????
9591
- props.viewTitle);
9592
9661
  let viewVGrow = false;
9593
9662
  let viewHeight = '';
9594
9663
  let viewAspectRatio;
@@ -9604,16 +9673,20 @@ var FullCalendar = (function (exports) {
9604
9673
  else {
9605
9674
  viewAspectRatio = Math.max(options.aspectRatio, 0.5); // prevent from getting too tall
9606
9675
  }
9607
- let 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);
9676
+ let viewContext = this.buildViewContext(props.viewSpec, props.viewApi, props.options, props.dateProfileGenerator, props.dateEnv, props.nowManager, props.theme, props.pluginHooks, props.dispatch, props.getCurrentData, props.emitter, props.calendarApi, this.registerInteractiveComponent, this.unregisterInteractiveComponent);
9608
9677
  let viewLabelId = (toolbarConfig.header && toolbarConfig.header.hasTitle)
9609
9678
  ? this.state.viewLabelId
9610
9679
  : undefined;
9611
9680
  return (y(ViewContextType.Provider, { value: viewContext },
9612
- toolbarConfig.header && (y(Toolbar, Object.assign({ ref: this.headerRef, extraClassName: "fc-header-toolbar", model: toolbarConfig.header, titleId: viewLabelId }, toolbarProps))),
9613
- y(ViewHarness, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, labeledById: viewLabelId },
9614
- this.renderView(props),
9615
- this.buildAppendContent()),
9616
- toolbarConfig.footer && (y(Toolbar, Object.assign({ ref: this.footerRef, extraClassName: "fc-footer-toolbar", model: toolbarConfig.footer, titleId: "" }, toolbarProps)))));
9681
+ y(NowTimer, { unit: "day" }, (nowDate) => {
9682
+ let toolbarProps = this.buildToolbarProps(props.viewSpec, props.dateProfile, props.dateProfileGenerator, props.currentDate, nowDate, props.viewTitle);
9683
+ return (y(_, null,
9684
+ toolbarConfig.header && (y(Toolbar, Object.assign({ ref: this.headerRef, extraClassName: "fc-header-toolbar", model: toolbarConfig.header, titleId: viewLabelId }, toolbarProps))),
9685
+ y(ViewHarness, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, labeledById: viewLabelId },
9686
+ this.renderView(props),
9687
+ this.buildAppendContent()),
9688
+ toolbarConfig.footer && (y(Toolbar, Object.assign({ ref: this.footerRef, extraClassName: "fc-footer-toolbar", model: toolbarConfig.footer, titleId: "" }, toolbarProps)))));
9689
+ })));
9617
9690
  }
9618
9691
  componentDidMount() {
9619
9692
  let { props } = this;
@@ -9835,7 +9908,7 @@ var FullCalendar = (function (exports) {
9835
9908
  return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;
9836
9909
  }
9837
9910
 
9838
- const version = '6.1.15';
9911
+ const version = '6.1.17';
9839
9912
 
9840
9913
  exports.Calendar = Calendar;
9841
9914
  exports.Internal = internal;