fullcalendar 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.
- package/index.global.js +243 -141
- package/index.global.min.js +2 -2
- package/package.json +7 -7
package/index.global.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
FullCalendar Standard Bundle v6.1.
|
|
2
|
+
FullCalendar Standard Bundle v6.1.18
|
|
3
3
|
Docs & License: https://fullcalendar.io/docs/initialize-globals
|
|
4
4
|
(c) 2024 Adam Shaw
|
|
5
5
|
*/
|
|
@@ -92,7 +92,7 @@ var FullCalendar = (function (exports) {
|
|
|
92
92
|
registerStylesRoot(document);
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
var css_248z$4 = ":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,AAEAAAALAIAAAwAwT1MvMg8SBfAAAAC8AAAAYGNtYXAXVtKNAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5ZgYydxIAAAF4AAAFNGhlYWQUJ7cIAAAGrAAAADZoaGVhB20DzAAABuQAAAAkaG10eCIABhQAAAcIAAAALGxvY2ED4AU6AAAHNAAAABhtYXhwAA8AjAAAB0wAAAAgbmFtZXsr690AAAdsAAABhnBvc3QAAwAAAAAI9AAAACAAAwPAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpBgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6Qb//f//AAAAAAAg6QD//f//AAH/4xcEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAWIAjQKeAskAEwAAJSc3NjQnJiIHAQYUFwEWMjc2NCcCnuLiDQ0MJAz/AA0NAQAMJAwNDcni4gwjDQwM/wANIwz/AA0NDCMNAAAAAQFiAI0CngLJABMAACUBNjQnASYiBwYUHwEHBhQXFjI3AZ4BAA0N/wAMJAwNDeLiDQ0MJAyNAQAMIw0BAAwMDSMM4uINIwwNDQAAAAIA4gC3Ax4CngATACcAACUnNzY0JyYiDwEGFB8BFjI3NjQnISc3NjQnJiIPAQYUHwEWMjc2NCcB87e3DQ0MIw3VDQ3VDSMMDQ0BK7e3DQ0MJAzVDQ3VDCQMDQ3zuLcMJAwNDdUNIwzWDAwNIwy4twwkDA0N1Q0jDNYMDA0jDAAAAgDiALcDHgKeABMAJwAAJTc2NC8BJiIHBhQfAQcGFBcWMjchNzY0LwEmIgcGFB8BBwYUFxYyNwJJ1Q0N1Q0jDA0Nt7cNDQwjDf7V1Q0N1QwkDA0Nt7cNDQwkDLfWDCMN1Q0NDCQMt7gMIw0MDNYMIw3VDQ0MJAy3uAwjDQwMAAADAFUAAAOrA1UAMwBoAHcAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMhMjY1NCYjISIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAAVYRGRkR/qoRGRkRA1UFBAUOCQkVDAsZDf2rDRkLDBUJCA4FBQUFBQUOCQgVDAsZDQJVDRkLDBUJCQ4FBAVVAgECBQMCBwQECAX9qwQJAwQHAwMFAQICAgIBBQMDBwQDCQQCVQUIBAQHAgMFAgEC/oAZEhEZGRESGQAAAAADAFUAAAOrA1UAMwBoAIkAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMzFRQWMzI2PQEzMjY1NCYrATU0JiMiBh0BIyIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAgBkSEhmAERkZEYAZEhIZgBEZGREDVQUEBQ4JCRUMCxkN/asNGQsMFQkIDgUFBQUFBQ4JCBUMCxkNAlUNGQsMFQkJDgUEBVUCAQIFAwIHBAQIBf2rBAkDBAcDAwUBAgICAgEFAwMHBAMJBAJVBQgEBAcCAwUCAQL+gIASGRkSgBkSERmAEhkZEoAZERIZAAABAOIAjQMeAskAIAAAExcHBhQXFjI/ARcWMjc2NC8BNzY0JyYiDwEnJiIHBhQX4uLiDQ0MJAzi4gwkDA0N4uINDQwkDOLiDCQMDQ0CjeLiDSMMDQ3h4Q0NDCMN4uIMIw0MDOLiDAwNIwwAAAABAAAAAQAAa5n0y18PPPUACwQAAAAAANivOVsAAAAA2K85WwAAAAADqwNVAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAOrAAEAAAAAAAAAAAAAAAAAAAALBAAAAAAAAAAAAAAAAgAAAAQAAWIEAAFiBAAA4gQAAOIEAABVBAAAVQQAAOIAAAAAAAoAFAAeAEQAagCqAOoBngJkApoAAQAAAAsAigADAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGZjaWNvbnMAZgBjAGkAYwBvAG4Ac1ZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGZjaWNvbnMAZgBjAGkAYwBvAG4Ac2ZjaWNvbnMAZgBjAGkAYwBvAG4Ac1JlZ3VsYXIAUgBlAGcAdQBsAGEAcmZjaWNvbnMAZgBjAGkAYwBvAG4Ac0ZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\") 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)}";
|
|
95
|
+
var css_248z$4 = ":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)}";
|
|
96
96
|
injectStyles(css_248z$4);
|
|
97
97
|
|
|
98
98
|
class DelayedRunner {
|
|
@@ -973,10 +973,10 @@ var FullCalendar = (function (exports) {
|
|
|
973
973
|
|
|
974
974
|
const EXTENDED_SETTINGS_AND_SEVERITIES = {
|
|
975
975
|
week: 3,
|
|
976
|
-
separator:
|
|
977
|
-
omitZeroMinute:
|
|
978
|
-
meridiem:
|
|
979
|
-
omitCommas:
|
|
976
|
+
separator: 9,
|
|
977
|
+
omitZeroMinute: 9,
|
|
978
|
+
meridiem: 9,
|
|
979
|
+
omitCommas: 9,
|
|
980
980
|
};
|
|
981
981
|
const STANDARD_DATE_PROP_SEVERITIES = {
|
|
982
982
|
timeZoneName: 7,
|
|
@@ -998,22 +998,25 @@ var FullCalendar = (function (exports) {
|
|
|
998
998
|
constructor(formatSettings) {
|
|
999
999
|
let standardDateProps = {};
|
|
1000
1000
|
let extendedSettings = {};
|
|
1001
|
-
let
|
|
1001
|
+
let smallestUnitNum = 9; // the smallest unit in the formatter (9 is a sentinel, beyond max)
|
|
1002
1002
|
for (let name in formatSettings) {
|
|
1003
1003
|
if (name in EXTENDED_SETTINGS_AND_SEVERITIES) {
|
|
1004
1004
|
extendedSettings[name] = formatSettings[name];
|
|
1005
|
-
severity =
|
|
1005
|
+
const severity = EXTENDED_SETTINGS_AND_SEVERITIES[name];
|
|
1006
|
+
if (severity < 9) {
|
|
1007
|
+
smallestUnitNum = Math.min(EXTENDED_SETTINGS_AND_SEVERITIES[name], smallestUnitNum);
|
|
1008
|
+
}
|
|
1006
1009
|
}
|
|
1007
1010
|
else {
|
|
1008
1011
|
standardDateProps[name] = formatSettings[name];
|
|
1009
1012
|
if (name in STANDARD_DATE_PROP_SEVERITIES) { // TODO: what about hour12? no severity
|
|
1010
|
-
|
|
1013
|
+
smallestUnitNum = Math.min(STANDARD_DATE_PROP_SEVERITIES[name], smallestUnitNum);
|
|
1011
1014
|
}
|
|
1012
1015
|
}
|
|
1013
1016
|
}
|
|
1014
1017
|
this.standardDateProps = standardDateProps;
|
|
1015
1018
|
this.extendedSettings = extendedSettings;
|
|
1016
|
-
this.
|
|
1019
|
+
this.smallestUnitNum = smallestUnitNum;
|
|
1017
1020
|
this.buildFormattingFunc = memoize(buildFormattingFunc);
|
|
1018
1021
|
}
|
|
1019
1022
|
format(date, context) {
|
|
@@ -1048,8 +1051,8 @@ var FullCalendar = (function (exports) {
|
|
|
1048
1051
|
}
|
|
1049
1052
|
return full0 + separator + full1;
|
|
1050
1053
|
}
|
|
1051
|
-
|
|
1052
|
-
switch (this.
|
|
1054
|
+
getSmallestUnit() {
|
|
1055
|
+
switch (this.smallestUnitNum) {
|
|
1053
1056
|
case 7:
|
|
1054
1057
|
case 6:
|
|
1055
1058
|
case 5:
|
|
@@ -1762,6 +1765,25 @@ var FullCalendar = (function (exports) {
|
|
|
1762
1765
|
if (oldProps === newProps) {
|
|
1763
1766
|
return true;
|
|
1764
1767
|
}
|
|
1768
|
+
// if (debug) {
|
|
1769
|
+
// for (let key in newProps) {
|
|
1770
|
+
// if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) {
|
|
1771
|
+
// // equal
|
|
1772
|
+
// } else {
|
|
1773
|
+
// if (debug) {
|
|
1774
|
+
// console.log('prop difference', key, oldProps[key], newProps[key])
|
|
1775
|
+
// }
|
|
1776
|
+
// }
|
|
1777
|
+
// }
|
|
1778
|
+
// // check for props that were omitted in the new
|
|
1779
|
+
// for (let key in oldProps) {
|
|
1780
|
+
// if (!(key in newProps)) {
|
|
1781
|
+
// if (debug) {
|
|
1782
|
+
// console.log('prop absent', key)
|
|
1783
|
+
// }
|
|
1784
|
+
// }
|
|
1785
|
+
// }
|
|
1786
|
+
// }
|
|
1765
1787
|
for (let key in newProps) {
|
|
1766
1788
|
if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) ;
|
|
1767
1789
|
else {
|
|
@@ -2321,9 +2343,10 @@ var FullCalendar = (function (exports) {
|
|
|
2321
2343
|
}
|
|
2322
2344
|
|
|
2323
2345
|
const ViewContextType = createContext({}); // for Components
|
|
2324
|
-
function buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {
|
|
2346
|
+
function buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, nowManager, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {
|
|
2325
2347
|
return {
|
|
2326
2348
|
dateEnv,
|
|
2349
|
+
nowManager,
|
|
2327
2350
|
options: viewOptions,
|
|
2328
2351
|
pluginHooks,
|
|
2329
2352
|
emitter,
|
|
@@ -2351,13 +2374,14 @@ var FullCalendar = (function (exports) {
|
|
|
2351
2374
|
|
|
2352
2375
|
/* eslint max-classes-per-file: off */
|
|
2353
2376
|
class PureComponent extends x$1 {
|
|
2377
|
+
// debug: boolean
|
|
2354
2378
|
shouldComponentUpdate(nextProps, nextState) {
|
|
2355
|
-
|
|
2356
|
-
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2379
|
+
const shouldUpdate = !compareObjs(this.props, nextProps, this.propEquality /*, this.debug */) ||
|
|
2380
|
+
!compareObjs(this.state, nextState, this.stateEquality /*, this.debug */);
|
|
2381
|
+
// if (this.debug && shouldUpdate) {
|
|
2382
|
+
// console.log('shouldUpdate!')
|
|
2383
|
+
// }
|
|
2384
|
+
return shouldUpdate;
|
|
2361
2385
|
}
|
|
2362
2386
|
// HACK for freakin' React StrictMode
|
|
2363
2387
|
safeSetState(newState) {
|
|
@@ -2597,10 +2621,10 @@ var FullCalendar = (function (exports) {
|
|
|
2597
2621
|
let { props, context } = this;
|
|
2598
2622
|
let { options } = context;
|
|
2599
2623
|
let renderProps = { view: context.viewApi };
|
|
2600
|
-
return (y(ContentContainer,
|
|
2624
|
+
return (y(ContentContainer, { elRef: props.elRef, elTag: props.elTag || 'div', elAttrs: props.elAttrs, elClasses: [
|
|
2601
2625
|
...buildViewClassNames(props.viewSpec),
|
|
2602
2626
|
...(props.elClasses || []),
|
|
2603
|
-
], renderProps: renderProps, classNameGenerator: options.viewClassNames, generatorName: undefined, didMount: options.viewDidMount, willUnmount: options.viewWillUnmount }
|
|
2627
|
+
], elStyle: props.elStyle, renderProps: renderProps, classNameGenerator: options.viewClassNames, generatorName: undefined, didMount: options.viewDidMount, willUnmount: options.viewWillUnmount }, () => props.children));
|
|
2604
2628
|
}
|
|
2605
2629
|
}
|
|
2606
2630
|
function buildViewClassNames(viewSpec) {
|
|
@@ -2756,36 +2780,9 @@ var FullCalendar = (function (exports) {
|
|
|
2756
2780
|
return diffDayAndTime(date0, date1); // returns a duration
|
|
2757
2781
|
}
|
|
2758
2782
|
|
|
2759
|
-
function reduceCurrentDate(currentDate, action) {
|
|
2760
|
-
switch (action.type) {
|
|
2761
|
-
case 'CHANGE_DATE':
|
|
2762
|
-
return action.dateMarker;
|
|
2763
|
-
default:
|
|
2764
|
-
return currentDate;
|
|
2765
|
-
}
|
|
2766
|
-
}
|
|
2767
|
-
function getInitialDate(options, dateEnv) {
|
|
2768
|
-
let initialDateInput = options.initialDate;
|
|
2769
|
-
// compute the initial ambig-timezone date
|
|
2770
|
-
if (initialDateInput != null) {
|
|
2771
|
-
return dateEnv.createMarker(initialDateInput);
|
|
2772
|
-
}
|
|
2773
|
-
return getNow(options.now, dateEnv); // getNow already returns unzoned
|
|
2774
|
-
}
|
|
2775
|
-
function getNow(nowInput, dateEnv) {
|
|
2776
|
-
if (typeof nowInput === 'function') {
|
|
2777
|
-
nowInput = nowInput();
|
|
2778
|
-
}
|
|
2779
|
-
if (nowInput == null) {
|
|
2780
|
-
return dateEnv.createNowMarker();
|
|
2781
|
-
}
|
|
2782
|
-
return dateEnv.createMarker(nowInput);
|
|
2783
|
-
}
|
|
2784
|
-
|
|
2785
2783
|
class DateProfileGenerator {
|
|
2786
2784
|
constructor(props) {
|
|
2787
2785
|
this.props = props;
|
|
2788
|
-
this.nowDate = getNow(props.nowInput, props.dateEnv);
|
|
2789
2786
|
this.initHiddenDays();
|
|
2790
2787
|
}
|
|
2791
2788
|
/* Date Range Computation
|
|
@@ -2870,7 +2867,7 @@ var FullCalendar = (function (exports) {
|
|
|
2870
2867
|
buildValidRange() {
|
|
2871
2868
|
let input = this.props.validRangeInput;
|
|
2872
2869
|
let simpleInput = typeof input === 'function'
|
|
2873
|
-
? input.call(this.props.calendarApi, this.
|
|
2870
|
+
? input.call(this.props.calendarApi, this.props.dateEnv.toDate(this.props.nowManager.getDateMarker()))
|
|
2874
2871
|
: input;
|
|
2875
2872
|
return this.refineRange(simpleInput) ||
|
|
2876
2873
|
{ start: null, end: null }; // completely open-ended
|
|
@@ -4762,6 +4759,85 @@ var FullCalendar = (function (exports) {
|
|
|
4762
4759
|
// global state
|
|
4763
4760
|
const interactionSettingsStore = {};
|
|
4764
4761
|
|
|
4762
|
+
class NowTimer extends x$1 {
|
|
4763
|
+
constructor(props, context) {
|
|
4764
|
+
super(props, context);
|
|
4765
|
+
this.handleRefresh = () => {
|
|
4766
|
+
let timing = this.computeTiming();
|
|
4767
|
+
if (timing.state.nowDate.valueOf() !== this.state.nowDate.valueOf()) {
|
|
4768
|
+
this.setState(timing.state);
|
|
4769
|
+
}
|
|
4770
|
+
this.clearTimeout();
|
|
4771
|
+
this.setTimeout(timing.waitMs);
|
|
4772
|
+
};
|
|
4773
|
+
this.handleVisibilityChange = () => {
|
|
4774
|
+
if (!document.hidden) {
|
|
4775
|
+
this.handleRefresh();
|
|
4776
|
+
}
|
|
4777
|
+
};
|
|
4778
|
+
this.state = this.computeTiming().state;
|
|
4779
|
+
}
|
|
4780
|
+
render() {
|
|
4781
|
+
let { props, state } = this;
|
|
4782
|
+
return props.children(state.nowDate, state.todayRange);
|
|
4783
|
+
}
|
|
4784
|
+
componentDidMount() {
|
|
4785
|
+
this.setTimeout();
|
|
4786
|
+
this.context.nowManager.addResetListener(this.handleRefresh);
|
|
4787
|
+
// fired tab becomes visible after being hidden
|
|
4788
|
+
document.addEventListener('visibilitychange', this.handleVisibilityChange);
|
|
4789
|
+
}
|
|
4790
|
+
componentDidUpdate(prevProps) {
|
|
4791
|
+
if (prevProps.unit !== this.props.unit) {
|
|
4792
|
+
this.clearTimeout();
|
|
4793
|
+
this.setTimeout();
|
|
4794
|
+
}
|
|
4795
|
+
}
|
|
4796
|
+
componentWillUnmount() {
|
|
4797
|
+
this.clearTimeout();
|
|
4798
|
+
this.context.nowManager.removeResetListener(this.handleRefresh);
|
|
4799
|
+
document.removeEventListener('visibilitychange', this.handleVisibilityChange);
|
|
4800
|
+
}
|
|
4801
|
+
computeTiming() {
|
|
4802
|
+
let { props, context } = this;
|
|
4803
|
+
let unroundedNow = context.nowManager.getDateMarker();
|
|
4804
|
+
let currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit);
|
|
4805
|
+
let nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit));
|
|
4806
|
+
let waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf();
|
|
4807
|
+
// there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342)
|
|
4808
|
+
// ensure no longer than a day
|
|
4809
|
+
waitMs = Math.min(1000 * 60 * 60 * 24, waitMs);
|
|
4810
|
+
return {
|
|
4811
|
+
state: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) },
|
|
4812
|
+
waitMs,
|
|
4813
|
+
};
|
|
4814
|
+
}
|
|
4815
|
+
setTimeout(waitMs = this.computeTiming().waitMs) {
|
|
4816
|
+
// NOTE: timeout could take longer than expected if tab sleeps,
|
|
4817
|
+
// which is why we listen to 'visibilitychange'
|
|
4818
|
+
this.timeoutId = setTimeout(() => {
|
|
4819
|
+
// NOTE: timeout could also return *earlier* than expected, and we need to wait 2 ms more
|
|
4820
|
+
// This is why use use same waitMs from computeTiming, so we don't skip an interval while
|
|
4821
|
+
// .setState() is executing
|
|
4822
|
+
const timing = this.computeTiming();
|
|
4823
|
+
this.setState(timing.state, () => {
|
|
4824
|
+
this.setTimeout(timing.waitMs);
|
|
4825
|
+
});
|
|
4826
|
+
}, waitMs);
|
|
4827
|
+
}
|
|
4828
|
+
clearTimeout() {
|
|
4829
|
+
if (this.timeoutId) {
|
|
4830
|
+
clearTimeout(this.timeoutId);
|
|
4831
|
+
}
|
|
4832
|
+
}
|
|
4833
|
+
}
|
|
4834
|
+
NowTimer.contextType = ViewContextType;
|
|
4835
|
+
function buildDayRange(date) {
|
|
4836
|
+
let start = startOfDay(date);
|
|
4837
|
+
let end = addDays(start, 1);
|
|
4838
|
+
return { start, end };
|
|
4839
|
+
}
|
|
4840
|
+
|
|
4765
4841
|
class CalendarImpl {
|
|
4766
4842
|
getCurrentData() {
|
|
4767
4843
|
return this.currentDataManager.getCurrentData();
|
|
@@ -4917,7 +4993,7 @@ var FullCalendar = (function (exports) {
|
|
|
4917
4993
|
this.unselect();
|
|
4918
4994
|
this.dispatch({
|
|
4919
4995
|
type: 'CHANGE_DATE',
|
|
4920
|
-
dateMarker:
|
|
4996
|
+
dateMarker: state.nowManager.getDateMarker(),
|
|
4921
4997
|
});
|
|
4922
4998
|
}
|
|
4923
4999
|
gotoDate(zonedDateInput) {
|
|
@@ -5318,7 +5394,7 @@ var FullCalendar = (function (exports) {
|
|
|
5318
5394
|
function getDateMeta(date, todayRange, nowDate, dateProfile) {
|
|
5319
5395
|
return {
|
|
5320
5396
|
dow: date.getUTCDay(),
|
|
5321
|
-
isDisabled: Boolean(dateProfile && !rangeContainsMarker(dateProfile.activeRange, date)),
|
|
5397
|
+
isDisabled: Boolean(dateProfile && (!dateProfile.activeRange || !rangeContainsMarker(dateProfile.activeRange, date))),
|
|
5322
5398
|
isOther: Boolean(dateProfile && !rangeContainsMarker(dateProfile.currentRange, date)),
|
|
5323
5399
|
isToday: Boolean(todayRange && rangeContainsMarker(todayRange, date)),
|
|
5324
5400
|
isPast: Boolean(nowDate ? (date < nowDate) : todayRange ? (date < todayRange.start) : false),
|
|
@@ -6083,7 +6159,13 @@ var FullCalendar = (function (exports) {
|
|
|
6083
6159
|
let navLinkAttrs = (!dayMeta.isDisabled && props.colCnt > 1)
|
|
6084
6160
|
? buildNavLinkAttrs(this.context, date)
|
|
6085
6161
|
: {};
|
|
6086
|
-
let
|
|
6162
|
+
let publicDate = dateEnv.toDate(date);
|
|
6163
|
+
// workaround for Luxon (and maybe moment) returning prior-days when start-of-day
|
|
6164
|
+
// in DST gap: https://github.com/fullcalendar/fullcalendar/issues/7633
|
|
6165
|
+
if (dateEnv.namedTimeZoneImpl) {
|
|
6166
|
+
publicDate = addMs(publicDate, 3600000); // add an hour
|
|
6167
|
+
}
|
|
6168
|
+
let renderProps = Object.assign(Object.assign(Object.assign({ date: publicDate, view: viewApi }, props.extraRenderProps), { text }), dayMeta);
|
|
6087
6169
|
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: [
|
|
6088
6170
|
'fc-col-header-cell-cushion',
|
|
6089
6171
|
props.isSticky && 'fc-sticky',
|
|
@@ -6122,65 +6204,6 @@ var FullCalendar = (function (exports) {
|
|
|
6122
6204
|
}
|
|
6123
6205
|
}
|
|
6124
6206
|
|
|
6125
|
-
class NowTimer extends x$1 {
|
|
6126
|
-
constructor(props, context) {
|
|
6127
|
-
super(props, context);
|
|
6128
|
-
this.initialNowDate = getNow(context.options.now, context.dateEnv);
|
|
6129
|
-
this.initialNowQueriedMs = new Date().valueOf();
|
|
6130
|
-
this.state = this.computeTiming().currentState;
|
|
6131
|
-
}
|
|
6132
|
-
render() {
|
|
6133
|
-
let { props, state } = this;
|
|
6134
|
-
return props.children(state.nowDate, state.todayRange);
|
|
6135
|
-
}
|
|
6136
|
-
componentDidMount() {
|
|
6137
|
-
this.setTimeout();
|
|
6138
|
-
}
|
|
6139
|
-
componentDidUpdate(prevProps) {
|
|
6140
|
-
if (prevProps.unit !== this.props.unit) {
|
|
6141
|
-
this.clearTimeout();
|
|
6142
|
-
this.setTimeout();
|
|
6143
|
-
}
|
|
6144
|
-
}
|
|
6145
|
-
componentWillUnmount() {
|
|
6146
|
-
this.clearTimeout();
|
|
6147
|
-
}
|
|
6148
|
-
computeTiming() {
|
|
6149
|
-
let { props, context } = this;
|
|
6150
|
-
let unroundedNow = addMs(this.initialNowDate, new Date().valueOf() - this.initialNowQueriedMs);
|
|
6151
|
-
let currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit);
|
|
6152
|
-
let nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit));
|
|
6153
|
-
let waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf();
|
|
6154
|
-
// there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342)
|
|
6155
|
-
// ensure no longer than a day
|
|
6156
|
-
waitMs = Math.min(1000 * 60 * 60 * 24, waitMs);
|
|
6157
|
-
return {
|
|
6158
|
-
currentState: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) },
|
|
6159
|
-
nextState: { nowDate: nextUnitStart, todayRange: buildDayRange(nextUnitStart) },
|
|
6160
|
-
waitMs,
|
|
6161
|
-
};
|
|
6162
|
-
}
|
|
6163
|
-
setTimeout() {
|
|
6164
|
-
let { nextState, waitMs } = this.computeTiming();
|
|
6165
|
-
this.timeoutId = setTimeout(() => {
|
|
6166
|
-
this.setState(nextState, () => {
|
|
6167
|
-
this.setTimeout();
|
|
6168
|
-
});
|
|
6169
|
-
}, waitMs);
|
|
6170
|
-
}
|
|
6171
|
-
clearTimeout() {
|
|
6172
|
-
if (this.timeoutId) {
|
|
6173
|
-
clearTimeout(this.timeoutId);
|
|
6174
|
-
}
|
|
6175
|
-
}
|
|
6176
|
-
}
|
|
6177
|
-
NowTimer.contextType = ViewContextType;
|
|
6178
|
-
function buildDayRange(date) {
|
|
6179
|
-
let start = startOfDay(date);
|
|
6180
|
-
let end = addDays(start, 1);
|
|
6181
|
-
return { start, end };
|
|
6182
|
-
}
|
|
6183
|
-
|
|
6184
6207
|
class DayHeader extends BaseComponent {
|
|
6185
6208
|
constructor() {
|
|
6186
6209
|
super(...arguments);
|
|
@@ -7056,8 +7079,11 @@ var FullCalendar = (function (exports) {
|
|
|
7056
7079
|
class EventContainer extends BaseComponent {
|
|
7057
7080
|
constructor() {
|
|
7058
7081
|
super(...arguments);
|
|
7082
|
+
// memo
|
|
7083
|
+
this.buildPublicEvent = memoize((context, eventDef, eventInstance) => new EventImpl(context, eventDef, eventInstance));
|
|
7059
7084
|
this.handleEl = (el) => {
|
|
7060
7085
|
this.el = el;
|
|
7086
|
+
setRef(this.props.elRef, el);
|
|
7061
7087
|
if (el) {
|
|
7062
7088
|
setElSeg(el, this.props.seg);
|
|
7063
7089
|
}
|
|
@@ -7070,7 +7096,7 @@ var FullCalendar = (function (exports) {
|
|
|
7070
7096
|
const { eventRange } = seg;
|
|
7071
7097
|
const { ui } = eventRange;
|
|
7072
7098
|
const renderProps = {
|
|
7073
|
-
event:
|
|
7099
|
+
event: this.buildPublicEvent(context, eventRange.def, eventRange.instance),
|
|
7074
7100
|
view: context.viewApi,
|
|
7075
7101
|
timeText: props.timeText,
|
|
7076
7102
|
textColor: ui.textColor,
|
|
@@ -7089,11 +7115,11 @@ var FullCalendar = (function (exports) {
|
|
|
7089
7115
|
isDragging: Boolean(props.isDragging),
|
|
7090
7116
|
isResizing: Boolean(props.isResizing),
|
|
7091
7117
|
};
|
|
7092
|
-
return (y(ContentContainer,
|
|
7118
|
+
return (y(ContentContainer, { elRef: this.handleEl, elTag: props.elTag, elAttrs: props.elAttrs, elClasses: [
|
|
7093
7119
|
...getEventClassNames(renderProps),
|
|
7094
7120
|
...seg.eventRange.ui.classNames,
|
|
7095
7121
|
...(props.elClasses || []),
|
|
7096
|
-
], renderProps: renderProps, generatorName: "eventContent", customGenerator: options.eventContent, defaultGenerator: props.defaultGenerator, classNameGenerator: options.eventClassNames, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount }))
|
|
7122
|
+
], elStyle: props.elStyle, renderProps: renderProps, generatorName: "eventContent", customGenerator: options.eventContent, defaultGenerator: props.defaultGenerator, classNameGenerator: options.eventClassNames, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount }, props.children));
|
|
7097
7123
|
}
|
|
7098
7124
|
componentDidUpdate(prevProps) {
|
|
7099
7125
|
if (this.el && this.props.seg !== prevProps.seg) {
|
|
@@ -7120,6 +7146,9 @@ var FullCalendar = (function (exports) {
|
|
|
7120
7146
|
Boolean(eventContentArg.isEndResizable) && (y("div", { className: "fc-event-resizer fc-event-resizer-end" }))))));
|
|
7121
7147
|
}
|
|
7122
7148
|
}
|
|
7149
|
+
StandardEvent.addPropsEquality({
|
|
7150
|
+
seg: isPropsEqual,
|
|
7151
|
+
});
|
|
7123
7152
|
function renderInnerContent$1$1(innerProps) {
|
|
7124
7153
|
return (y("div", { className: "fc-event-main-frame" },
|
|
7125
7154
|
innerProps.timeText && (y("div", { className: "fc-event-time" }, innerProps.timeText)),
|
|
@@ -7134,7 +7163,7 @@ var FullCalendar = (function (exports) {
|
|
|
7134
7163
|
date: context.dateEnv.toDate(props.date),
|
|
7135
7164
|
view: context.viewApi,
|
|
7136
7165
|
};
|
|
7137
|
-
return (y(ContentContainer,
|
|
7166
|
+
return (y(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));
|
|
7138
7167
|
}));
|
|
7139
7168
|
|
|
7140
7169
|
const DAY_NUM_FORMAT = createFormatter({ day: 'numeric' });
|
|
@@ -7157,12 +7186,12 @@ var FullCalendar = (function (exports) {
|
|
|
7157
7186
|
dateEnv: context.dateEnv,
|
|
7158
7187
|
monthStartFormat: options.monthStartFormat,
|
|
7159
7188
|
});
|
|
7160
|
-
return (y(ContentContainer, Object.assign({}, props
|
|
7189
|
+
return (y(ContentContainer, { elRef: props.elRef, elTag: props.elTag, elAttrs: Object.assign(Object.assign({}, props.elAttrs), (renderProps.isDisabled ? {} : { 'data-date': formatDayString(props.date) })), elClasses: [
|
|
7161
7190
|
...getDayClassNames(renderProps, context.theme),
|
|
7162
7191
|
...(props.elClasses || []),
|
|
7163
|
-
],
|
|
7192
|
+
], elStyle: props.elStyle, renderProps: renderProps, generatorName: "dayCellContent", customGenerator: options.dayCellContent, defaultGenerator: props.defaultGenerator, classNameGenerator:
|
|
7164
7193
|
// don't use custom classNames if disabled
|
|
7165
|
-
renderProps.isDisabled ? undefined : options.dayCellClassNames, didMount: options.dayCellDidMount, willUnmount: options.dayCellWillUnmount }))
|
|
7194
|
+
renderProps.isDisabled ? undefined : options.dayCellClassNames, didMount: options.dayCellDidMount, willUnmount: options.dayCellWillUnmount }, props.children));
|
|
7166
7195
|
}
|
|
7167
7196
|
}
|
|
7168
7197
|
function hasCustomDayCellContent(options) {
|
|
@@ -7199,7 +7228,7 @@ var FullCalendar = (function (exports) {
|
|
|
7199
7228
|
let text = dateEnv.format(date, format);
|
|
7200
7229
|
let renderProps = { num, text, date };
|
|
7201
7230
|
return (y(ContentContainer // why isn't WeekNumberContentArg being auto-detected?
|
|
7202
|
-
,
|
|
7231
|
+
, { 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));
|
|
7203
7232
|
}));
|
|
7204
7233
|
function renderInner(innerProps) {
|
|
7205
7234
|
return innerProps.text;
|
|
@@ -8158,6 +8187,25 @@ var FullCalendar = (function (exports) {
|
|
|
8158
8187
|
return viewType;
|
|
8159
8188
|
}
|
|
8160
8189
|
|
|
8190
|
+
function reduceCurrentDate(currentDate, action) {
|
|
8191
|
+
switch (action.type) {
|
|
8192
|
+
case 'CHANGE_DATE':
|
|
8193
|
+
return action.dateMarker;
|
|
8194
|
+
default:
|
|
8195
|
+
return currentDate;
|
|
8196
|
+
}
|
|
8197
|
+
}
|
|
8198
|
+
// should be initialized once and stay constant
|
|
8199
|
+
// this will change too
|
|
8200
|
+
function getInitialDate(options, dateEnv, nowManager) {
|
|
8201
|
+
let initialDateInput = options.initialDate;
|
|
8202
|
+
// compute the initial ambig-timezone date
|
|
8203
|
+
if (initialDateInput != null) {
|
|
8204
|
+
return dateEnv.createMarker(initialDateInput);
|
|
8205
|
+
}
|
|
8206
|
+
return nowManager.getDateMarker();
|
|
8207
|
+
}
|
|
8208
|
+
|
|
8161
8209
|
function reduceDynamicOptionOverrides(dynamicOptionOverrides, action) {
|
|
8162
8210
|
switch (action.type) {
|
|
8163
8211
|
case 'SET_OPTION':
|
|
@@ -8667,6 +8715,7 @@ var FullCalendar = (function (exports) {
|
|
|
8667
8715
|
endTime: refined.endTime || null,
|
|
8668
8716
|
startRecur: refined.startRecur ? dateEnv.createMarker(refined.startRecur) : null,
|
|
8669
8717
|
endRecur: refined.endRecur ? dateEnv.createMarker(refined.endRecur) : null,
|
|
8718
|
+
dateEnv,
|
|
8670
8719
|
};
|
|
8671
8720
|
let duration;
|
|
8672
8721
|
if (refined.duration) {
|
|
@@ -8686,7 +8735,7 @@ var FullCalendar = (function (exports) {
|
|
|
8686
8735
|
expand(typeData, framingRange, dateEnv) {
|
|
8687
8736
|
let clippedFramingRange = intersectRanges(framingRange, { start: typeData.startRecur, end: typeData.endRecur });
|
|
8688
8737
|
if (clippedFramingRange) {
|
|
8689
|
-
return expandRanges(typeData.daysOfWeek, typeData.startTime,
|
|
8738
|
+
return expandRanges(typeData.daysOfWeek, typeData.startTime, typeData.dateEnv, dateEnv, clippedFramingRange);
|
|
8690
8739
|
}
|
|
8691
8740
|
return [];
|
|
8692
8741
|
},
|
|
@@ -8696,7 +8745,7 @@ var FullCalendar = (function (exports) {
|
|
|
8696
8745
|
recurringTypes: [recurring],
|
|
8697
8746
|
eventRefiners: SIMPLE_RECURRING_REFINERS,
|
|
8698
8747
|
});
|
|
8699
|
-
function expandRanges(daysOfWeek, startTime,
|
|
8748
|
+
function expandRanges(daysOfWeek, startTime, eventDateEnv, calendarDateEnv, framingRange) {
|
|
8700
8749
|
let dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null;
|
|
8701
8750
|
let dayMarker = startOfDay(framingRange.start);
|
|
8702
8751
|
let endMarker = framingRange.end;
|
|
@@ -8706,12 +8755,12 @@ var FullCalendar = (function (exports) {
|
|
|
8706
8755
|
// if everyday, or this particular day-of-week
|
|
8707
8756
|
if (!dowHash || dowHash[dayMarker.getUTCDay()]) {
|
|
8708
8757
|
if (startTime) {
|
|
8709
|
-
instanceStart =
|
|
8758
|
+
instanceStart = calendarDateEnv.add(dayMarker, startTime);
|
|
8710
8759
|
}
|
|
8711
8760
|
else {
|
|
8712
8761
|
instanceStart = dayMarker;
|
|
8713
8762
|
}
|
|
8714
|
-
instanceStarts.push(instanceStart);
|
|
8763
|
+
instanceStarts.push(calendarDateEnv.createMarker(eventDateEnv.toDate(instanceStart)));
|
|
8715
8764
|
}
|
|
8716
8765
|
dayMarker = addDays(dayMarker, 1);
|
|
8717
8766
|
}
|
|
@@ -8876,6 +8925,49 @@ var FullCalendar = (function (exports) {
|
|
|
8876
8925
|
return { year: 'numeric', month: 'long', day: 'numeric' };
|
|
8877
8926
|
}
|
|
8878
8927
|
|
|
8928
|
+
/*
|
|
8929
|
+
TODO: test switching timezones when NO timezone plugin
|
|
8930
|
+
*/
|
|
8931
|
+
class CalendarNowManager {
|
|
8932
|
+
constructor() {
|
|
8933
|
+
this.resetListeners = new Set();
|
|
8934
|
+
}
|
|
8935
|
+
handleInput(dateEnv, // will change if timezone setup changed
|
|
8936
|
+
nowInput) {
|
|
8937
|
+
const oldDateEnv = this.dateEnv;
|
|
8938
|
+
if (dateEnv !== oldDateEnv) {
|
|
8939
|
+
if (typeof nowInput === 'function') {
|
|
8940
|
+
this.nowFn = nowInput;
|
|
8941
|
+
}
|
|
8942
|
+
else if (!oldDateEnv) { // first time?
|
|
8943
|
+
this.nowAnchorDate = dateEnv.toDate(nowInput
|
|
8944
|
+
? dateEnv.createMarker(nowInput)
|
|
8945
|
+
: dateEnv.createNowMarker());
|
|
8946
|
+
this.nowAnchorQueried = Date.now();
|
|
8947
|
+
}
|
|
8948
|
+
this.dateEnv = dateEnv;
|
|
8949
|
+
// not first time? fire reset handlers
|
|
8950
|
+
if (oldDateEnv) {
|
|
8951
|
+
for (const resetListener of this.resetListeners.values()) {
|
|
8952
|
+
resetListener();
|
|
8953
|
+
}
|
|
8954
|
+
}
|
|
8955
|
+
}
|
|
8956
|
+
}
|
|
8957
|
+
getDateMarker() {
|
|
8958
|
+
return this.nowAnchorDate
|
|
8959
|
+
? this.dateEnv.timestampToMarker(this.nowAnchorDate.valueOf() +
|
|
8960
|
+
(Date.now() - this.nowAnchorQueried))
|
|
8961
|
+
: this.dateEnv.createMarker(this.nowFn());
|
|
8962
|
+
}
|
|
8963
|
+
addResetListener(handler) {
|
|
8964
|
+
this.resetListeners.add(handler);
|
|
8965
|
+
}
|
|
8966
|
+
removeResetListener(handler) {
|
|
8967
|
+
this.resetListeners.delete(handler);
|
|
8968
|
+
}
|
|
8969
|
+
}
|
|
8970
|
+
|
|
8879
8971
|
// in future refactor, do the redux-style function(state=initial) for initial-state
|
|
8880
8972
|
// also, whatever is happening in constructor, have it happen in action queue too
|
|
8881
8973
|
class CalendarDataManager {
|
|
@@ -8895,6 +8987,7 @@ var FullCalendar = (function (exports) {
|
|
|
8895
8987
|
this.buildEventUiBases = memoize(buildEventUiBases);
|
|
8896
8988
|
this.parseContextBusinessHours = memoizeObjArg(parseContextBusinessHours);
|
|
8897
8989
|
this.buildTitle = memoize(buildTitle);
|
|
8990
|
+
this.nowManager = new CalendarNowManager();
|
|
8898
8991
|
this.emitter = new Emitter();
|
|
8899
8992
|
this.actionRunner = new TaskRunner(this._handleAction.bind(this), this.updateData.bind(this));
|
|
8900
8993
|
this.currentCalendarOptionsInput = {};
|
|
@@ -8910,6 +9003,7 @@ var FullCalendar = (function (exports) {
|
|
|
8910
9003
|
};
|
|
8911
9004
|
this.props = props;
|
|
8912
9005
|
this.actionRunner.pause();
|
|
9006
|
+
this.nowManager = new CalendarNowManager();
|
|
8913
9007
|
let dynamicOptionOverrides = {};
|
|
8914
9008
|
let optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);
|
|
8915
9009
|
let currentViewType = optionsData.calendarOptions.initialView || optionsData.pluginHooks.initialView;
|
|
@@ -8919,12 +9013,8 @@ var FullCalendar = (function (exports) {
|
|
|
8919
9013
|
props.calendarApi.currentDataManager = this;
|
|
8920
9014
|
this.emitter.setThisContext(props.calendarApi);
|
|
8921
9015
|
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
9016
|
let calendarContext = {
|
|
9017
|
+
nowManager: this.nowManager,
|
|
8928
9018
|
dateEnv: optionsData.dateEnv,
|
|
8929
9019
|
options: optionsData.calendarOptions,
|
|
8930
9020
|
pluginHooks: optionsData.pluginHooks,
|
|
@@ -8933,6 +9023,11 @@ var FullCalendar = (function (exports) {
|
|
|
8933
9023
|
emitter: this.emitter,
|
|
8934
9024
|
getCurrentData: this.getCurrentData,
|
|
8935
9025
|
};
|
|
9026
|
+
let currentDate = getInitialDate(optionsData.calendarOptions, optionsData.dateEnv, this.nowManager);
|
|
9027
|
+
let dateProfile = currentViewData.dateProfileGenerator.build(currentDate);
|
|
9028
|
+
if (!rangeContainsMarker(dateProfile.activeRange, currentDate)) {
|
|
9029
|
+
currentDate = dateProfile.currentRange.start;
|
|
9030
|
+
}
|
|
8936
9031
|
// needs to be after setThisContext
|
|
8937
9032
|
for (let callback of optionsData.pluginHooks.contextInit) {
|
|
8938
9033
|
callback(calendarContext);
|
|
@@ -8993,6 +9088,7 @@ var FullCalendar = (function (exports) {
|
|
|
8993
9088
|
emitter.setThisContext(props.calendarApi);
|
|
8994
9089
|
emitter.setOptions(currentViewData.options);
|
|
8995
9090
|
let calendarContext = {
|
|
9091
|
+
nowManager: this.nowManager,
|
|
8996
9092
|
dateEnv: optionsData.dateEnv,
|
|
8997
9093
|
options: optionsData.calendarOptions,
|
|
8998
9094
|
pluginHooks: optionsData.pluginHooks,
|
|
@@ -9060,7 +9156,7 @@ var FullCalendar = (function (exports) {
|
|
|
9060
9156
|
let oldData = this.data;
|
|
9061
9157
|
let optionsData = this.computeOptionsData(props.optionOverrides, state.dynamicOptionOverrides, props.calendarApi);
|
|
9062
9158
|
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);
|
|
9159
|
+
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
9160
|
let changeHandlers = optionsData.pluginHooks.optionChangeHandlers;
|
|
9065
9161
|
let oldCalendarOptions = oldData && oldData.calendarOptions;
|
|
9066
9162
|
let newCalendarOptions = optionsData.calendarOptions;
|
|
@@ -9168,8 +9264,10 @@ var FullCalendar = (function (exports) {
|
|
|
9168
9264
|
}
|
|
9169
9265
|
let { refinedOptions, extra } = this.processRawViewOptions(viewSpec, optionsData.pluginHooks, optionsData.localeDefaults, optionOverrides, dynamicOptionOverrides);
|
|
9170
9266
|
warnUnknownOptions(extra);
|
|
9267
|
+
this.nowManager.handleInput(optionsData.dateEnv, refinedOptions.now);
|
|
9171
9268
|
let dateProfileGenerator = this.buildDateProfileGenerator({
|
|
9172
9269
|
dateProfileGeneratorClass: viewSpec.optionDefaults.dateProfileGeneratorClass,
|
|
9270
|
+
nowManager: this.nowManager,
|
|
9173
9271
|
duration: viewSpec.duration,
|
|
9174
9272
|
durationUnit: viewSpec.durationUnit,
|
|
9175
9273
|
usesMinMaxTime: viewSpec.optionDefaults.usesMinMaxTime,
|
|
@@ -9183,7 +9281,6 @@ var FullCalendar = (function (exports) {
|
|
|
9183
9281
|
dateIncrement: refinedOptions.dateIncrement,
|
|
9184
9282
|
hiddenDays: refinedOptions.hiddenDays,
|
|
9185
9283
|
weekends: refinedOptions.weekends,
|
|
9186
|
-
nowInput: refinedOptions.now,
|
|
9187
9284
|
validRangeInput: refinedOptions.validRange,
|
|
9188
9285
|
visibleRangeInput: refinedOptions.visibleRange,
|
|
9189
9286
|
fixedWeekCount: refinedOptions.fixedWeekCount,
|
|
@@ -9587,8 +9684,6 @@ var FullCalendar = (function (exports) {
|
|
|
9587
9684
|
render() {
|
|
9588
9685
|
let { props } = this;
|
|
9589
9686
|
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
9687
|
let viewVGrow = false;
|
|
9593
9688
|
let viewHeight = '';
|
|
9594
9689
|
let viewAspectRatio;
|
|
@@ -9604,16 +9699,20 @@ var FullCalendar = (function (exports) {
|
|
|
9604
9699
|
else {
|
|
9605
9700
|
viewAspectRatio = Math.max(options.aspectRatio, 0.5); // prevent from getting too tall
|
|
9606
9701
|
}
|
|
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);
|
|
9702
|
+
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
9703
|
let viewLabelId = (toolbarConfig.header && toolbarConfig.header.hasTitle)
|
|
9609
9704
|
? this.state.viewLabelId
|
|
9610
9705
|
: undefined;
|
|
9611
9706
|
return (y(ViewContextType.Provider, { value: viewContext },
|
|
9612
|
-
|
|
9613
|
-
|
|
9614
|
-
|
|
9615
|
-
|
|
9616
|
-
|
|
9707
|
+
y(NowTimer, { unit: "day" }, (nowDate) => {
|
|
9708
|
+
let toolbarProps = this.buildToolbarProps(props.viewSpec, props.dateProfile, props.dateProfileGenerator, props.currentDate, nowDate, props.viewTitle);
|
|
9709
|
+
return (y(_, null,
|
|
9710
|
+
toolbarConfig.header && (y(Toolbar, Object.assign({ ref: this.headerRef, extraClassName: "fc-header-toolbar", model: toolbarConfig.header, titleId: viewLabelId }, toolbarProps))),
|
|
9711
|
+
y(ViewHarness, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, labeledById: viewLabelId },
|
|
9712
|
+
this.renderView(props),
|
|
9713
|
+
this.buildAppendContent()),
|
|
9714
|
+
toolbarConfig.footer && (y(Toolbar, Object.assign({ ref: this.footerRef, extraClassName: "fc-footer-toolbar", model: toolbarConfig.footer, titleId: "" }, toolbarProps)))));
|
|
9715
|
+
})));
|
|
9617
9716
|
}
|
|
9618
9717
|
componentDidMount() {
|
|
9619
9718
|
let { props } = this;
|
|
@@ -9835,7 +9934,7 @@ var FullCalendar = (function (exports) {
|
|
|
9835
9934
|
return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;
|
|
9836
9935
|
}
|
|
9837
9936
|
|
|
9838
|
-
const version = '6.1.
|
|
9937
|
+
const version = '6.1.18';
|
|
9839
9938
|
|
|
9840
9939
|
config.touchMouseIgnoreWait = 500;
|
|
9841
9940
|
let ignoreMouseDepth = 0;
|
|
@@ -12675,7 +12774,7 @@ var FullCalendar = (function (exports) {
|
|
|
12675
12774
|
constructor() {
|
|
12676
12775
|
super(...arguments);
|
|
12677
12776
|
this.splitBusinessHourSegs = memoize(splitSegsByRow);
|
|
12678
|
-
this.splitBgEventSegs = memoize(
|
|
12777
|
+
this.splitBgEventSegs = memoize(splitAllDaySegsByRow);
|
|
12679
12778
|
this.splitFgEventSegs = memoize(splitSegsByRow);
|
|
12680
12779
|
this.splitDateSelectionSegs = memoize(splitSegsByRow);
|
|
12681
12780
|
this.splitEventDrag = memoize(splitInteractionByRow);
|
|
@@ -12699,7 +12798,7 @@ var FullCalendar = (function (exports) {
|
|
|
12699
12798
|
return (y(NowTimer, { unit: "day" }, (nowDate, todayRange) => (y(_, null, props.cells.map((cells, row) => (y(TableRow, { ref: this.rowRefs.createRef(row), key: cells.length
|
|
12700
12799
|
? cells[0].date.toISOString() /* best? or put key on cell? or use diff formatter? */
|
|
12701
12800
|
: row // in case there are no cells (like when resource view is loading)
|
|
12702
|
-
, showDayNumbers: rowCnt > 1, showWeekNumbers: props.showWeekNumbers, todayRange: todayRange, dateProfile: props.dateProfile, cells: cells, renderIntro: props.renderRowIntro, businessHourSegs: businessHourSegsByRow[row], eventSelection: props.eventSelection, bgEventSegs: bgEventSegsByRow[row]
|
|
12801
|
+
, showDayNumbers: rowCnt > 1, showWeekNumbers: props.showWeekNumbers, todayRange: todayRange, dateProfile: props.dateProfile, cells: cells, renderIntro: props.renderRowIntro, businessHourSegs: businessHourSegsByRow[row], eventSelection: props.eventSelection, bgEventSegs: bgEventSegsByRow[row], fgEventSegs: fgEventSegsByRow[row], dateSelectionSegs: dateSelectionSegsByRow[row], eventDrag: eventDragByRow[row], eventResize: eventResizeByRow[row], dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, clientWidth: props.clientWidth, clientHeight: props.clientHeight, cellMinHeight: cellMinHeight, forPrint: props.forPrint })))))));
|
|
12703
12802
|
}
|
|
12704
12803
|
componentDidMount() {
|
|
12705
12804
|
this.registerInteractiveComponent();
|
|
@@ -12768,6 +12867,9 @@ var FullCalendar = (function (exports) {
|
|
|
12768
12867
|
return { start, end };
|
|
12769
12868
|
}
|
|
12770
12869
|
}
|
|
12870
|
+
function splitAllDaySegsByRow(segs, rowCnt) {
|
|
12871
|
+
return splitSegsByRow(segs.filter(isSegAllDay), rowCnt);
|
|
12872
|
+
}
|
|
12771
12873
|
function isSegAllDay(seg) {
|
|
12772
12874
|
return seg.eventRange.def.allDay;
|
|
12773
12875
|
}
|