@fullcalendar/core 6.1.15 → 6.1.18

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 +189 -90
  3. package/index.global.min.js +2 -2
  4. package/index.js +92 -22
  5. package/internal-common.cjs +147 -121
  6. package/internal-common.d.ts +20 -5
  7. package/internal-common.js +148 -119
  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
@@ -103,7 +103,7 @@ if (typeof document !== 'undefined') {
103
103
  registerStylesRoot(document);
104
104
  }
105
105
 
106
- 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)}";
106
+ 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)}";
107
107
  injectStyles(css_248z);
108
108
 
109
109
  class DelayedRunner {
@@ -984,10 +984,10 @@ function memoizeHashlike(workerFunc, resEquality, teardownFunc) {
984
984
 
985
985
  const EXTENDED_SETTINGS_AND_SEVERITIES = {
986
986
  week: 3,
987
- separator: 0,
988
- omitZeroMinute: 0,
989
- meridiem: 0,
990
- omitCommas: 0,
987
+ separator: 9,
988
+ omitZeroMinute: 9,
989
+ meridiem: 9,
990
+ omitCommas: 9,
991
991
  };
992
992
  const STANDARD_DATE_PROP_SEVERITIES = {
993
993
  timeZoneName: 7,
@@ -1009,22 +1009,25 @@ class NativeFormatter {
1009
1009
  constructor(formatSettings) {
1010
1010
  let standardDateProps = {};
1011
1011
  let extendedSettings = {};
1012
- let severity = 0;
1012
+ let smallestUnitNum = 9; // the smallest unit in the formatter (9 is a sentinel, beyond max)
1013
1013
  for (let name in formatSettings) {
1014
1014
  if (name in EXTENDED_SETTINGS_AND_SEVERITIES) {
1015
1015
  extendedSettings[name] = formatSettings[name];
1016
- severity = Math.max(EXTENDED_SETTINGS_AND_SEVERITIES[name], severity);
1016
+ const severity = EXTENDED_SETTINGS_AND_SEVERITIES[name];
1017
+ if (severity < 9) {
1018
+ smallestUnitNum = Math.min(EXTENDED_SETTINGS_AND_SEVERITIES[name], smallestUnitNum);
1019
+ }
1017
1020
  }
1018
1021
  else {
1019
1022
  standardDateProps[name] = formatSettings[name];
1020
1023
  if (name in STANDARD_DATE_PROP_SEVERITIES) { // TODO: what about hour12? no severity
1021
- severity = Math.max(STANDARD_DATE_PROP_SEVERITIES[name], severity);
1024
+ smallestUnitNum = Math.min(STANDARD_DATE_PROP_SEVERITIES[name], smallestUnitNum);
1022
1025
  }
1023
1026
  }
1024
1027
  }
1025
1028
  this.standardDateProps = standardDateProps;
1026
1029
  this.extendedSettings = extendedSettings;
1027
- this.severity = severity;
1030
+ this.smallestUnitNum = smallestUnitNum;
1028
1031
  this.buildFormattingFunc = memoize(buildFormattingFunc);
1029
1032
  }
1030
1033
  format(date, context) {
@@ -1059,8 +1062,8 @@ class NativeFormatter {
1059
1062
  }
1060
1063
  return full0 + separator + full1;
1061
1064
  }
1062
- getLargestUnit() {
1063
- switch (this.severity) {
1065
+ getSmallestUnit() {
1066
+ switch (this.smallestUnitNum) {
1064
1067
  case 7:
1065
1068
  case 6:
1066
1069
  case 5:
@@ -1773,6 +1776,25 @@ function compareObjs(oldProps, newProps, equalityFuncs = {}) {
1773
1776
  if (oldProps === newProps) {
1774
1777
  return true;
1775
1778
  }
1779
+ // if (debug) {
1780
+ // for (let key in newProps) {
1781
+ // if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) {
1782
+ // // equal
1783
+ // } else {
1784
+ // if (debug) {
1785
+ // console.log('prop difference', key, oldProps[key], newProps[key])
1786
+ // }
1787
+ // }
1788
+ // }
1789
+ // // check for props that were omitted in the new
1790
+ // for (let key in oldProps) {
1791
+ // if (!(key in newProps)) {
1792
+ // if (debug) {
1793
+ // console.log('prop absent', key)
1794
+ // }
1795
+ // }
1796
+ // }
1797
+ // }
1776
1798
  for (let key in newProps) {
1777
1799
  if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) ;
1778
1800
  else {
@@ -2332,9 +2354,10 @@ class ScrollResponder {
2332
2354
  }
2333
2355
 
2334
2356
  const ViewContextType = createContext({}); // for Components
2335
- function buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {
2357
+ function buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, nowManager, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {
2336
2358
  return {
2337
2359
  dateEnv,
2360
+ nowManager,
2338
2361
  options: viewOptions,
2339
2362
  pluginHooks,
2340
2363
  emitter,
@@ -2362,13 +2385,14 @@ function buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator,
2362
2385
 
2363
2386
  /* eslint max-classes-per-file: off */
2364
2387
  class PureComponent extends preact.Component {
2388
+ // debug: boolean
2365
2389
  shouldComponentUpdate(nextProps, nextState) {
2366
- if (this.debug) {
2367
- // eslint-disable-next-line no-console
2368
- console.log(getUnequalProps(nextProps, this.props), getUnequalProps(nextState, this.state));
2369
- }
2370
- return !compareObjs(this.props, nextProps, this.propEquality) ||
2371
- !compareObjs(this.state, nextState, this.stateEquality);
2390
+ const shouldUpdate = !compareObjs(this.props, nextProps, this.propEquality /*, this.debug */) ||
2391
+ !compareObjs(this.state, nextState, this.stateEquality /*, this.debug */);
2392
+ // if (this.debug && shouldUpdate) {
2393
+ // console.log('shouldUpdate!')
2394
+ // }
2395
+ return shouldUpdate;
2372
2396
  }
2373
2397
  // HACK for freakin' React StrictMode
2374
2398
  safeSetState(newState) {
@@ -2608,10 +2632,10 @@ class ViewContainer extends BaseComponent {
2608
2632
  let { props, context } = this;
2609
2633
  let { options } = context;
2610
2634
  let renderProps = { view: context.viewApi };
2611
- return (preact.createElement(ContentContainer, Object.assign({}, props, { elTag: props.elTag || 'div', elClasses: [
2635
+ return (preact.createElement(ContentContainer, { elRef: props.elRef, elTag: props.elTag || 'div', elAttrs: props.elAttrs, elClasses: [
2612
2636
  ...buildViewClassNames(props.viewSpec),
2613
2637
  ...(props.elClasses || []),
2614
- ], renderProps: renderProps, classNameGenerator: options.viewClassNames, generatorName: undefined, didMount: options.viewDidMount, willUnmount: options.viewWillUnmount }), () => props.children));
2638
+ ], elStyle: props.elStyle, renderProps: renderProps, classNameGenerator: options.viewClassNames, generatorName: undefined, didMount: options.viewDidMount, willUnmount: options.viewWillUnmount }, () => props.children));
2615
2639
  }
2616
2640
  }
2617
2641
  function buildViewClassNames(viewSpec) {
@@ -2767,36 +2791,9 @@ function diffDates(date0, date1, dateEnv, largeUnit) {
2767
2791
  return diffDayAndTime(date0, date1); // returns a duration
2768
2792
  }
2769
2793
 
2770
- function reduceCurrentDate(currentDate, action) {
2771
- switch (action.type) {
2772
- case 'CHANGE_DATE':
2773
- return action.dateMarker;
2774
- default:
2775
- return currentDate;
2776
- }
2777
- }
2778
- function getInitialDate(options, dateEnv) {
2779
- let initialDateInput = options.initialDate;
2780
- // compute the initial ambig-timezone date
2781
- if (initialDateInput != null) {
2782
- return dateEnv.createMarker(initialDateInput);
2783
- }
2784
- return getNow(options.now, dateEnv); // getNow already returns unzoned
2785
- }
2786
- function getNow(nowInput, dateEnv) {
2787
- if (typeof nowInput === 'function') {
2788
- nowInput = nowInput();
2789
- }
2790
- if (nowInput == null) {
2791
- return dateEnv.createNowMarker();
2792
- }
2793
- return dateEnv.createMarker(nowInput);
2794
- }
2795
-
2796
2794
  class DateProfileGenerator {
2797
2795
  constructor(props) {
2798
2796
  this.props = props;
2799
- this.nowDate = getNow(props.nowInput, props.dateEnv);
2800
2797
  this.initHiddenDays();
2801
2798
  }
2802
2799
  /* Date Range Computation
@@ -2881,7 +2878,7 @@ class DateProfileGenerator {
2881
2878
  buildValidRange() {
2882
2879
  let input = this.props.validRangeInput;
2883
2880
  let simpleInput = typeof input === 'function'
2884
- ? input.call(this.props.calendarApi, this.nowDate)
2881
+ ? input.call(this.props.calendarApi, this.props.dateEnv.toDate(this.props.nowManager.getDateMarker()))
2885
2882
  : input;
2886
2883
  return this.refineRange(simpleInput) ||
2887
2884
  { start: null, end: null }; // completely open-ended
@@ -4773,6 +4770,85 @@ function interactionSettingsToStore(settings) {
4773
4770
  // global state
4774
4771
  const interactionSettingsStore = {};
4775
4772
 
4773
+ class NowTimer extends preact.Component {
4774
+ constructor(props, context) {
4775
+ super(props, context);
4776
+ this.handleRefresh = () => {
4777
+ let timing = this.computeTiming();
4778
+ if (timing.state.nowDate.valueOf() !== this.state.nowDate.valueOf()) {
4779
+ this.setState(timing.state);
4780
+ }
4781
+ this.clearTimeout();
4782
+ this.setTimeout(timing.waitMs);
4783
+ };
4784
+ this.handleVisibilityChange = () => {
4785
+ if (!document.hidden) {
4786
+ this.handleRefresh();
4787
+ }
4788
+ };
4789
+ this.state = this.computeTiming().state;
4790
+ }
4791
+ render() {
4792
+ let { props, state } = this;
4793
+ return props.children(state.nowDate, state.todayRange);
4794
+ }
4795
+ componentDidMount() {
4796
+ this.setTimeout();
4797
+ this.context.nowManager.addResetListener(this.handleRefresh);
4798
+ // fired tab becomes visible after being hidden
4799
+ document.addEventListener('visibilitychange', this.handleVisibilityChange);
4800
+ }
4801
+ componentDidUpdate(prevProps) {
4802
+ if (prevProps.unit !== this.props.unit) {
4803
+ this.clearTimeout();
4804
+ this.setTimeout();
4805
+ }
4806
+ }
4807
+ componentWillUnmount() {
4808
+ this.clearTimeout();
4809
+ this.context.nowManager.removeResetListener(this.handleRefresh);
4810
+ document.removeEventListener('visibilitychange', this.handleVisibilityChange);
4811
+ }
4812
+ computeTiming() {
4813
+ let { props, context } = this;
4814
+ let unroundedNow = context.nowManager.getDateMarker();
4815
+ let currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit);
4816
+ let nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit));
4817
+ let waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf();
4818
+ // there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342)
4819
+ // ensure no longer than a day
4820
+ waitMs = Math.min(1000 * 60 * 60 * 24, waitMs);
4821
+ return {
4822
+ state: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) },
4823
+ waitMs,
4824
+ };
4825
+ }
4826
+ setTimeout(waitMs = this.computeTiming().waitMs) {
4827
+ // NOTE: timeout could take longer than expected if tab sleeps,
4828
+ // which is why we listen to 'visibilitychange'
4829
+ this.timeoutId = setTimeout(() => {
4830
+ // NOTE: timeout could also return *earlier* than expected, and we need to wait 2 ms more
4831
+ // This is why use use same waitMs from computeTiming, so we don't skip an interval while
4832
+ // .setState() is executing
4833
+ const timing = this.computeTiming();
4834
+ this.setState(timing.state, () => {
4835
+ this.setTimeout(timing.waitMs);
4836
+ });
4837
+ }, waitMs);
4838
+ }
4839
+ clearTimeout() {
4840
+ if (this.timeoutId) {
4841
+ clearTimeout(this.timeoutId);
4842
+ }
4843
+ }
4844
+ }
4845
+ NowTimer.contextType = ViewContextType;
4846
+ function buildDayRange(date) {
4847
+ let start = startOfDay(date);
4848
+ let end = addDays(start, 1);
4849
+ return { start, end };
4850
+ }
4851
+
4776
4852
  class CalendarImpl {
4777
4853
  getCurrentData() {
4778
4854
  return this.currentDataManager.getCurrentData();
@@ -4928,7 +5004,7 @@ class CalendarImpl {
4928
5004
  this.unselect();
4929
5005
  this.dispatch({
4930
5006
  type: 'CHANGE_DATE',
4931
- dateMarker: getNow(state.calendarOptions.now, state.dateEnv),
5007
+ dateMarker: state.nowManager.getDateMarker(),
4932
5008
  });
4933
5009
  }
4934
5010
  gotoDate(zonedDateInput) {
@@ -5329,7 +5405,7 @@ function buildEventUiForKey(allUi, eventUiForKey, individualUi) {
5329
5405
  function getDateMeta(date, todayRange, nowDate, dateProfile) {
5330
5406
  return {
5331
5407
  dow: date.getUTCDay(),
5332
- isDisabled: Boolean(dateProfile && !rangeContainsMarker(dateProfile.activeRange, date)),
5408
+ isDisabled: Boolean(dateProfile && (!dateProfile.activeRange || !rangeContainsMarker(dateProfile.activeRange, date))),
5333
5409
  isOther: Boolean(dateProfile && !rangeContainsMarker(dateProfile.currentRange, date)),
5334
5410
  isToday: Boolean(todayRange && rangeContainsMarker(todayRange, date)),
5335
5411
  isPast: Boolean(nowDate ? (date < nowDate) : todayRange ? (date < todayRange.start) : false),
@@ -6094,7 +6170,13 @@ class TableDateCell extends BaseComponent {
6094
6170
  let navLinkAttrs = (!dayMeta.isDisabled && props.colCnt > 1)
6095
6171
  ? buildNavLinkAttrs(this.context, date)
6096
6172
  : {};
6097
- let renderProps = Object.assign(Object.assign(Object.assign({ date: dateEnv.toDate(date), view: viewApi }, props.extraRenderProps), { text }), dayMeta);
6173
+ let publicDate = dateEnv.toDate(date);
6174
+ // workaround for Luxon (and maybe moment) returning prior-days when start-of-day
6175
+ // in DST gap: https://github.com/fullcalendar/fullcalendar/issues/7633
6176
+ if (dateEnv.namedTimeZoneImpl) {
6177
+ publicDate = addMs(publicDate, 3600000); // add an hour
6178
+ }
6179
+ let renderProps = Object.assign(Object.assign(Object.assign({ date: publicDate, view: viewApi }, props.extraRenderProps), { text }), dayMeta);
6098
6180
  return (preact.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) => (preact.createElement("div", { className: "fc-scrollgrid-sync-inner" }, !dayMeta.isDisabled && (preact.createElement(InnerContainer, { elTag: "a", elAttrs: navLinkAttrs, elClasses: [
6099
6181
  'fc-col-header-cell-cushion',
6100
6182
  props.isSticky && 'fc-sticky',
@@ -6133,65 +6215,6 @@ class TableDowCell extends BaseComponent {
6133
6215
  }
6134
6216
  }
6135
6217
 
6136
- class NowTimer extends preact.Component {
6137
- constructor(props, context) {
6138
- super(props, context);
6139
- this.initialNowDate = getNow(context.options.now, context.dateEnv);
6140
- this.initialNowQueriedMs = new Date().valueOf();
6141
- this.state = this.computeTiming().currentState;
6142
- }
6143
- render() {
6144
- let { props, state } = this;
6145
- return props.children(state.nowDate, state.todayRange);
6146
- }
6147
- componentDidMount() {
6148
- this.setTimeout();
6149
- }
6150
- componentDidUpdate(prevProps) {
6151
- if (prevProps.unit !== this.props.unit) {
6152
- this.clearTimeout();
6153
- this.setTimeout();
6154
- }
6155
- }
6156
- componentWillUnmount() {
6157
- this.clearTimeout();
6158
- }
6159
- computeTiming() {
6160
- let { props, context } = this;
6161
- let unroundedNow = addMs(this.initialNowDate, new Date().valueOf() - this.initialNowQueriedMs);
6162
- let currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit);
6163
- let nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit));
6164
- let waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf();
6165
- // there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342)
6166
- // ensure no longer than a day
6167
- waitMs = Math.min(1000 * 60 * 60 * 24, waitMs);
6168
- return {
6169
- currentState: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) },
6170
- nextState: { nowDate: nextUnitStart, todayRange: buildDayRange(nextUnitStart) },
6171
- waitMs,
6172
- };
6173
- }
6174
- setTimeout() {
6175
- let { nextState, waitMs } = this.computeTiming();
6176
- this.timeoutId = setTimeout(() => {
6177
- this.setState(nextState, () => {
6178
- this.setTimeout();
6179
- });
6180
- }, waitMs);
6181
- }
6182
- clearTimeout() {
6183
- if (this.timeoutId) {
6184
- clearTimeout(this.timeoutId);
6185
- }
6186
- }
6187
- }
6188
- NowTimer.contextType = ViewContextType;
6189
- function buildDayRange(date) {
6190
- let start = startOfDay(date);
6191
- let end = addDays(start, 1);
6192
- return { start, end };
6193
- }
6194
-
6195
6218
  class DayHeader extends BaseComponent {
6196
6219
  constructor() {
6197
6220
  super(...arguments);
@@ -7067,8 +7090,11 @@ function getSectionByKey(sections, key) {
7067
7090
  class EventContainer extends BaseComponent {
7068
7091
  constructor() {
7069
7092
  super(...arguments);
7093
+ // memo
7094
+ this.buildPublicEvent = memoize((context, eventDef, eventInstance) => new EventImpl(context, eventDef, eventInstance));
7070
7095
  this.handleEl = (el) => {
7071
7096
  this.el = el;
7097
+ setRef(this.props.elRef, el);
7072
7098
  if (el) {
7073
7099
  setElSeg(el, this.props.seg);
7074
7100
  }
@@ -7081,7 +7107,7 @@ class EventContainer extends BaseComponent {
7081
7107
  const { eventRange } = seg;
7082
7108
  const { ui } = eventRange;
7083
7109
  const renderProps = {
7084
- event: new EventImpl(context, eventRange.def, eventRange.instance),
7110
+ event: this.buildPublicEvent(context, eventRange.def, eventRange.instance),
7085
7111
  view: context.viewApi,
7086
7112
  timeText: props.timeText,
7087
7113
  textColor: ui.textColor,
@@ -7100,11 +7126,11 @@ class EventContainer extends BaseComponent {
7100
7126
  isDragging: Boolean(props.isDragging),
7101
7127
  isResizing: Boolean(props.isResizing),
7102
7128
  };
7103
- return (preact.createElement(ContentContainer, Object.assign({}, props /* contains children */, { elRef: this.handleEl, elClasses: [
7129
+ return (preact.createElement(ContentContainer, { elRef: this.handleEl, elTag: props.elTag, elAttrs: props.elAttrs, elClasses: [
7104
7130
  ...getEventClassNames(renderProps),
7105
7131
  ...seg.eventRange.ui.classNames,
7106
7132
  ...(props.elClasses || []),
7107
- ], renderProps: renderProps, generatorName: "eventContent", customGenerator: options.eventContent, defaultGenerator: props.defaultGenerator, classNameGenerator: options.eventClassNames, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount })));
7133
+ ], elStyle: props.elStyle, renderProps: renderProps, generatorName: "eventContent", customGenerator: options.eventContent, defaultGenerator: props.defaultGenerator, classNameGenerator: options.eventClassNames, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount }, props.children));
7108
7134
  }
7109
7135
  componentDidUpdate(prevProps) {
7110
7136
  if (this.el && this.props.seg !== prevProps.seg) {
@@ -7131,6 +7157,9 @@ class StandardEvent extends BaseComponent {
7131
7157
  Boolean(eventContentArg.isEndResizable) && (preact.createElement("div", { className: "fc-event-resizer fc-event-resizer-end" }))))));
7132
7158
  }
7133
7159
  }
7160
+ StandardEvent.addPropsEquality({
7161
+ seg: isPropsEqual,
7162
+ });
7134
7163
  function renderInnerContent$1(innerProps) {
7135
7164
  return (preact.createElement("div", { className: "fc-event-main-frame" },
7136
7165
  innerProps.timeText && (preact.createElement("div", { className: "fc-event-time" }, innerProps.timeText)),
@@ -7145,7 +7174,7 @@ const NowIndicatorContainer = (props) => (preact.createElement(ViewContextType.C
7145
7174
  date: context.dateEnv.toDate(props.date),
7146
7175
  view: context.viewApi,
7147
7176
  };
7148
- return (preact.createElement(ContentContainer, Object.assign({}, props /* includes children */, { elTag: props.elTag || 'div', renderProps: renderProps, generatorName: "nowIndicatorContent", customGenerator: options.nowIndicatorContent, classNameGenerator: options.nowIndicatorClassNames, didMount: options.nowIndicatorDidMount, willUnmount: options.nowIndicatorWillUnmount })));
7177
+ return (preact.createElement(ContentContainer, { elRef: props.elRef, elTag: props.elTag || 'div', elAttrs: props.elAttrs, elClasses: props.elClasses, elStyle: props.elStyle, renderProps: renderProps, generatorName: "nowIndicatorContent", customGenerator: options.nowIndicatorContent, classNameGenerator: options.nowIndicatorClassNames, didMount: options.nowIndicatorDidMount, willUnmount: options.nowIndicatorWillUnmount }, props.children));
7149
7178
  }));
7150
7179
 
7151
7180
  const DAY_NUM_FORMAT = createFormatter({ day: 'numeric' });
@@ -7168,12 +7197,12 @@ class DayCellContainer extends BaseComponent {
7168
7197
  dateEnv: context.dateEnv,
7169
7198
  monthStartFormat: options.monthStartFormat,
7170
7199
  });
7171
- return (preact.createElement(ContentContainer, Object.assign({}, props /* includes children */, { elClasses: [
7200
+ return (preact.createElement(ContentContainer, { elRef: props.elRef, elTag: props.elTag, elAttrs: Object.assign(Object.assign({}, props.elAttrs), (renderProps.isDisabled ? {} : { 'data-date': formatDayString(props.date) })), elClasses: [
7172
7201
  ...getDayClassNames(renderProps, context.theme),
7173
7202
  ...(props.elClasses || []),
7174
- ], elAttrs: Object.assign(Object.assign({}, props.elAttrs), (renderProps.isDisabled ? {} : { 'data-date': formatDayString(props.date) })), renderProps: renderProps, generatorName: "dayCellContent", customGenerator: options.dayCellContent, defaultGenerator: props.defaultGenerator, classNameGenerator:
7203
+ ], elStyle: props.elStyle, renderProps: renderProps, generatorName: "dayCellContent", customGenerator: options.dayCellContent, defaultGenerator: props.defaultGenerator, classNameGenerator:
7175
7204
  // don't use custom classNames if disabled
7176
- renderProps.isDisabled ? undefined : options.dayCellClassNames, didMount: options.dayCellDidMount, willUnmount: options.dayCellWillUnmount })));
7205
+ renderProps.isDisabled ? undefined : options.dayCellClassNames, didMount: options.dayCellDidMount, willUnmount: options.dayCellWillUnmount }, props.children));
7177
7206
  }
7178
7207
  }
7179
7208
  function hasCustomDayCellContent(options) {
@@ -7210,7 +7239,7 @@ const WeekNumberContainer = (props) => (preact.createElement(ViewContextType.Con
7210
7239
  let text = dateEnv.format(date, format);
7211
7240
  let renderProps = { num, text, date };
7212
7241
  return (preact.createElement(ContentContainer // why isn't WeekNumberContentArg being auto-detected?
7213
- , Object.assign({}, props /* includes children */, { renderProps: renderProps, generatorName: "weekNumberContent", customGenerator: options.weekNumberContent, defaultGenerator: renderInner, classNameGenerator: options.weekNumberClassNames, didMount: options.weekNumberDidMount, willUnmount: options.weekNumberWillUnmount })));
7242
+ , { elRef: props.elRef, elTag: props.elTag, elAttrs: props.elAttrs, elClasses: props.elClasses, elStyle: props.elStyle, renderProps: renderProps, generatorName: "weekNumberContent", customGenerator: options.weekNumberContent, defaultGenerator: renderInner, classNameGenerator: options.weekNumberClassNames, didMount: options.weekNumberDidMount, willUnmount: options.weekNumberWillUnmount }, props.children));
7214
7243
  }));
7215
7244
  function renderInner(innerProps) {
7216
7245
  return innerProps.text;
@@ -7632,9 +7661,7 @@ exports.getDefaultEventEnd = getDefaultEventEnd;
7632
7661
  exports.getElSeg = getElSeg;
7633
7662
  exports.getEntrySpanEnd = getEntrySpanEnd;
7634
7663
  exports.getEventTargetViaRoot = getEventTargetViaRoot;
7635
- exports.getInitialDate = getInitialDate;
7636
7664
  exports.getIsRtlScrollbarOnLeft = getIsRtlScrollbarOnLeft;
7637
- exports.getNow = getNow;
7638
7665
  exports.getRectCenter = getRectCenter;
7639
7666
  exports.getRelevantEvents = getRelevantEvents;
7640
7667
  exports.getScrollGridClassNames = getScrollGridClassNames;
@@ -7699,7 +7726,6 @@ exports.rangeContainsMarker = rangeContainsMarker;
7699
7726
  exports.rangeContainsRange = rangeContainsRange;
7700
7727
  exports.rangesEqual = rangesEqual;
7701
7728
  exports.rangesIntersect = rangesIntersect;
7702
- exports.reduceCurrentDate = reduceCurrentDate;
7703
7729
  exports.reduceEventStore = reduceEventStore;
7704
7730
  exports.refineEventDef = refineEventDef;
7705
7731
  exports.refineProps = refineProps;
@@ -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;
@@ -929,7 +943,6 @@ declare abstract class PureComponent<Props = Dictionary, State = Dictionary> ext
929
943
  context: ViewContext;
930
944
  propEquality: EqualityFuncs<Props>;
931
945
  stateEquality: EqualityFuncs<State>;
932
- debug: boolean;
933
946
  shouldComponentUpdate(nextProps: Props, nextState: State): boolean;
934
947
  safeSetState(newState: Partial<State>): void;
935
948
  }
@@ -1312,6 +1325,7 @@ interface ViewPropsTransformer {
1312
1325
  type ViewContainerAppend = (context: CalendarContext) => ComponentChildren;
1313
1326
 
1314
1327
  interface CalendarContext {
1328
+ nowManager: CalendarNowManager;
1315
1329
  dateEnv: DateEnv;
1316
1330
  options: BaseOptionsRefined;
1317
1331
  pluginHooks: PluginHooks;
@@ -2740,8 +2754,6 @@ interface NowTimerState {
2740
2754
  declare class NowTimer extends Component<NowTimerProps, NowTimerState> {
2741
2755
  static contextType: any;
2742
2756
  context: ViewContext;
2743
- initialNowDate: DateMarker;
2744
- initialNowQueriedMs: number;
2745
2757
  timeoutId: any;
2746
2758
  constructor(props: NowTimerProps, context: ViewContext);
2747
2759
  render(): ComponentChildren;
@@ -2751,6 +2763,8 @@ declare class NowTimer extends Component<NowTimerProps, NowTimerState> {
2751
2763
  private computeTiming;
2752
2764
  private setTimeout;
2753
2765
  private clearTimeout;
2766
+ private handleRefresh;
2767
+ private handleVisibilityChange;
2754
2768
  }
2755
2769
 
2756
2770
  interface StandardEventProps {
@@ -2792,6 +2806,7 @@ type EventContainerProps = ElProps & MinimalEventProps & {
2792
2806
  children?: InnerContainerFunc<EventContentArg>;
2793
2807
  };
2794
2808
  declare class EventContainer extends BaseComponent<EventContainerProps> {
2809
+ private buildPublicEvent;
2795
2810
  el: HTMLElement;
2796
2811
  render(): createElement.JSX.Element;
2797
2812
  handleEl: (el: HTMLElement | null) => void;