@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.
- package/index.cjs +91 -21
- package/index.global.js +189 -90
- package/index.global.min.js +2 -2
- package/index.js +92 -22
- package/internal-common.cjs +147 -121
- package/internal-common.d.ts +20 -5
- package/internal-common.js +148 -119
- package/internal.js +1 -1
- package/locales/af.global.js +1 -1
- package/locales/af.global.min.js +1 -1
- package/locales/ar-dz.global.js +1 -1
- package/locales/ar-dz.global.min.js +1 -1
- package/locales/ar-kw.global.js +1 -1
- package/locales/ar-kw.global.min.js +1 -1
- package/locales/ar-ly.global.js +1 -1
- package/locales/ar-ly.global.min.js +1 -1
- package/locales/ar-ma.global.js +1 -1
- package/locales/ar-ma.global.min.js +1 -1
- package/locales/ar-sa.global.js +1 -1
- package/locales/ar-sa.global.min.js +1 -1
- package/locales/ar-tn.global.js +1 -1
- package/locales/ar-tn.global.min.js +1 -1
- package/locales/ar.global.js +1 -1
- package/locales/ar.global.min.js +1 -1
- package/locales/az.global.js +1 -1
- package/locales/az.global.min.js +1 -1
- package/locales/bg.global.js +1 -1
- package/locales/bg.global.min.js +1 -1
- package/locales/bn.global.js +1 -1
- package/locales/bn.global.min.js +1 -1
- package/locales/bs.global.js +1 -1
- package/locales/bs.global.min.js +1 -1
- package/locales/ca.global.js +1 -1
- package/locales/ca.global.min.js +1 -1
- package/locales/cs.global.js +1 -1
- package/locales/cs.global.min.js +1 -1
- package/locales/cy.global.js +1 -1
- package/locales/cy.global.min.js +1 -1
- package/locales/da.global.js +1 -1
- package/locales/da.global.min.js +1 -1
- package/locales/de-at.global.js +1 -1
- package/locales/de-at.global.min.js +1 -1
- package/locales/de.global.js +1 -1
- package/locales/de.global.min.js +1 -1
- package/locales/el.global.js +1 -1
- package/locales/el.global.min.js +1 -1
- package/locales/en-au.global.js +1 -1
- package/locales/en-au.global.min.js +1 -1
- package/locales/en-gb.global.js +1 -1
- package/locales/en-gb.global.min.js +1 -1
- package/locales/en-nz.global.js +1 -1
- package/locales/en-nz.global.min.js +1 -1
- package/locales/eo.global.js +1 -1
- package/locales/eo.global.min.js +1 -1
- package/locales/es-us.global.js +1 -1
- package/locales/es-us.global.min.js +1 -1
- package/locales/es.global.js +1 -1
- package/locales/es.global.min.js +1 -1
- package/locales/et.global.js +1 -1
- package/locales/et.global.min.js +1 -1
- package/locales/eu.global.js +1 -1
- package/locales/eu.global.min.js +1 -1
- package/locales/fa.global.js +1 -1
- package/locales/fa.global.min.js +1 -1
- package/locales/fi.global.js +1 -1
- package/locales/fi.global.min.js +1 -1
- package/locales/fr-ca.global.js +1 -1
- package/locales/fr-ca.global.min.js +1 -1
- package/locales/fr-ch.global.js +1 -1
- package/locales/fr-ch.global.min.js +1 -1
- package/locales/fr.global.js +1 -1
- package/locales/fr.global.min.js +1 -1
- package/locales/gl.global.js +1 -1
- package/locales/gl.global.min.js +1 -1
- package/locales/he.global.js +1 -1
- package/locales/he.global.min.js +1 -1
- package/locales/hi.global.js +1 -1
- package/locales/hi.global.min.js +1 -1
- package/locales/hr.global.js +1 -1
- package/locales/hr.global.min.js +1 -1
- package/locales/hu.global.js +1 -1
- package/locales/hu.global.min.js +1 -1
- package/locales/hy-am.global.js +1 -1
- package/locales/hy-am.global.min.js +1 -1
- package/locales/id.global.js +1 -1
- package/locales/id.global.min.js +1 -1
- package/locales/is.global.js +1 -1
- package/locales/is.global.min.js +1 -1
- package/locales/it.global.js +1 -1
- package/locales/it.global.min.js +1 -1
- package/locales/ja.global.js +1 -1
- package/locales/ja.global.min.js +1 -1
- package/locales/ka.global.js +1 -1
- package/locales/ka.global.min.js +1 -1
- package/locales/kk.global.js +1 -1
- package/locales/kk.global.min.js +1 -1
- package/locales/km.global.js +1 -1
- package/locales/km.global.min.js +1 -1
- package/locales/ko.global.js +1 -1
- package/locales/ko.global.min.js +1 -1
- package/locales/ku.global.js +1 -1
- package/locales/ku.global.min.js +1 -1
- package/locales/lb.global.js +1 -1
- package/locales/lb.global.min.js +1 -1
- package/locales/lt.global.js +1 -1
- package/locales/lt.global.min.js +1 -1
- package/locales/lv.global.js +1 -1
- package/locales/lv.global.min.js +1 -1
- package/locales/mk.global.js +1 -1
- package/locales/mk.global.min.js +1 -1
- package/locales/ms.global.js +1 -1
- package/locales/ms.global.min.js +1 -1
- package/locales/nb.global.js +1 -1
- package/locales/nb.global.min.js +1 -1
- package/locales/ne.global.js +1 -1
- package/locales/ne.global.min.js +1 -1
- package/locales/nl.global.js +1 -1
- package/locales/nl.global.min.js +1 -1
- package/locales/nn.global.js +1 -1
- package/locales/nn.global.min.js +1 -1
- package/locales/pl.global.js +1 -1
- package/locales/pl.global.min.js +1 -1
- package/locales/pt-br.global.js +1 -1
- package/locales/pt-br.global.min.js +1 -1
- package/locales/pt.global.js +1 -1
- package/locales/pt.global.min.js +1 -1
- package/locales/ro.global.js +1 -1
- package/locales/ro.global.min.js +1 -1
- package/locales/ru.global.js +1 -1
- package/locales/ru.global.min.js +1 -1
- package/locales/si-lk.global.js +1 -1
- package/locales/si-lk.global.min.js +1 -1
- package/locales/sk.global.js +1 -1
- package/locales/sk.global.min.js +1 -1
- package/locales/sl.global.js +1 -1
- package/locales/sl.global.min.js +1 -1
- package/locales/sm.global.js +1 -1
- package/locales/sm.global.min.js +1 -1
- package/locales/sq.global.js +1 -1
- package/locales/sq.global.min.js +1 -1
- package/locales/sr-cyrl.global.js +1 -1
- package/locales/sr-cyrl.global.min.js +1 -1
- package/locales/sr.global.js +1 -1
- package/locales/sr.global.min.js +1 -1
- package/locales/sv.global.js +1 -1
- package/locales/sv.global.min.js +1 -1
- package/locales/ta-in.global.js +1 -1
- package/locales/ta-in.global.min.js +1 -1
- package/locales/th.global.js +1 -1
- package/locales/th.global.min.js +1 -1
- package/locales/tr.global.js +1 -1
- package/locales/tr.global.min.js +1 -1
- package/locales/ug.global.js +1 -1
- package/locales/ug.global.min.js +1 -1
- package/locales/uk.global.js +1 -1
- package/locales/uk.global.min.js +1 -1
- package/locales/uz-cy.global.js +1 -1
- package/locales/uz-cy.global.min.js +1 -1
- package/locales/uz.global.js +1 -1
- package/locales/uz.global.min.js +1 -1
- package/locales/vi.global.js +1 -1
- package/locales/vi.global.min.js +1 -1
- package/locales/zh-cn.global.js +1 -1
- package/locales/zh-cn.global.min.js +1 -1
- package/locales/zh-tw.global.js +1 -1
- package/locales/zh-tw.global.min.js +1 -1
- package/locales-all.global.js +1 -1
- package/locales-all.global.min.js +1 -1
- package/package.json +1 -1
- package/preact.js +1 -1
package/index.global.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
FullCalendar Core v6.1.
|
|
2
|
+
FullCalendar Core v6.1.18
|
|
3
3
|
Docs & License: https://fullcalendar.io
|
|
4
4
|
(c) 2024 Adam Shaw
|
|
5
5
|
*/
|
|
@@ -86,7 +86,7 @@ var FullCalendar = (function (exports) {
|
|
|
86
86
|
registerStylesRoot(document);
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
var css_248z = ":root{--fc-small-font-size:.85em;--fc-page-bg-color:#fff;--fc-neutral-bg-color:hsla(0,0%,82%,.3);--fc-neutral-text-color:grey;--fc-border-color:#ddd;--fc-button-text-color:#fff;--fc-button-bg-color:#2c3e50;--fc-button-border-color:#2c3e50;--fc-button-hover-bg-color:#1e2b37;--fc-button-hover-border-color:#1a252f;--fc-button-active-bg-color:#1a252f;--fc-button-active-border-color:#151e27;--fc-event-bg-color:#3788d8;--fc-event-border-color:#3788d8;--fc-event-text-color:#fff;--fc-event-selected-overlay-color:rgba(0,0,0,.25);--fc-more-link-bg-color:#d0d0d0;--fc-more-link-text-color:inherit;--fc-event-resizer-thickness:8px;--fc-event-resizer-dot-total-width:8px;--fc-event-resizer-dot-border-width:1px;--fc-non-business-color:hsla(0,0%,84%,.3);--fc-bg-event-color:#8fdf82;--fc-bg-event-opacity:0.3;--fc-highlight-color:rgba(188,232,241,.3);--fc-today-bg-color:rgba(255,220,40,.15);--fc-now-indicator-color:red}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc{display:flex;flex-direction:column;font-size:1em}.fc,.fc *,.fc :after,.fc :before{box-sizing:border-box}.fc table{border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{padding:0;vertical-align:top}.fc a[data-navlink]{cursor:pointer}.fc a[data-navlink]:hover{text-decoration:underline}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-theme-standard td,.fc-theme-standard th{border:1px solid var(--fc-border-color)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:fcicons;font-style:normal;font-weight:400;src:url(\"data:application/x-font-ttf;charset=utf-8;base64,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)}";
|
|
89
|
+
var css_248z = ":root{--fc-small-font-size:.85em;--fc-page-bg-color:#fff;--fc-neutral-bg-color:hsla(0,0%,82%,.3);--fc-neutral-text-color:grey;--fc-border-color:#ddd;--fc-button-text-color:#fff;--fc-button-bg-color:#2c3e50;--fc-button-border-color:#2c3e50;--fc-button-hover-bg-color:#1e2b37;--fc-button-hover-border-color:#1a252f;--fc-button-active-bg-color:#1a252f;--fc-button-active-border-color:#151e27;--fc-event-bg-color:#3788d8;--fc-event-border-color:#3788d8;--fc-event-text-color:#fff;--fc-event-selected-overlay-color:rgba(0,0,0,.25);--fc-more-link-bg-color:#d0d0d0;--fc-more-link-text-color:inherit;--fc-event-resizer-thickness:8px;--fc-event-resizer-dot-total-width:8px;--fc-event-resizer-dot-border-width:1px;--fc-non-business-color:hsla(0,0%,84%,.3);--fc-bg-event-color:#8fdf82;--fc-bg-event-opacity:0.3;--fc-highlight-color:rgba(188,232,241,.3);--fc-today-bg-color:rgba(255,220,40,.15);--fc-now-indicator-color:red}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc{display:flex;flex-direction:column;font-size:1em}.fc,.fc *,.fc :after,.fc :before{box-sizing:border-box}.fc table{border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{padding:0;vertical-align:top}.fc a[data-navlink]{cursor:pointer}.fc a[data-navlink]:hover{text-decoration:underline}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-theme-standard td,.fc-theme-standard th{border:1px solid var(--fc-border-color)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:fcicons;font-style:normal;font-weight:400;src:url(\"data:application/x-font-ttf;charset=utf-8;base64,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\") format(\"truetype\")}.fc-icon{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-family:fcicons!important;font-style:normal;font-variant:normal;font-weight:400;height:1em;line-height:1;text-align:center;text-transform:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:1em}.fc-icon-chevron-left:before{content:\"\\e900\"}.fc-icon-chevron-right:before{content:\"\\e901\"}.fc-icon-chevrons-left:before{content:\"\\e902\"}.fc-icon-chevrons-right:before{content:\"\\e903\"}.fc-icon-minus-square:before{content:\"\\e904\"}.fc-icon-plus-square:before{content:\"\\e905\"}.fc-icon-x:before{content:\"\\e906\"}.fc .fc-button{border-radius:0;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible;text-transform:none}.fc .fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc .fc-button{-webkit-appearance:button}.fc .fc-button:not(:disabled){cursor:pointer}.fc .fc-button{background-color:transparent;border:1px solid transparent;border-radius:.25em;display:inline-block;font-size:1em;font-weight:400;line-height:1.5;padding:.4em .65em;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle}.fc .fc-button:hover{text-decoration:none}.fc .fc-button:focus{box-shadow:0 0 0 .2rem rgba(44,62,80,.25);outline:0}.fc .fc-button:disabled{opacity:.65}.fc .fc-button-primary{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:hover{background-color:var(--fc-button-hover-bg-color);border-color:var(--fc-button-hover-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:disabled{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{background-color:var(--fc-button-active-bg-color);border-color:var(--fc-button-active-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:not(:disabled).fc-button-active:focus,.fc .fc-button-primary:not(:disabled):active:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button .fc-icon{font-size:1.5em;vertical-align:middle}.fc .fc-button-group{display:inline-flex;position:relative;vertical-align:middle}.fc .fc-button-group>.fc-button{flex:1 1 auto;position:relative}.fc .fc-button-group>.fc-button.fc-button-active,.fc .fc-button-group>.fc-button:active,.fc .fc-button-group>.fc-button:focus,.fc .fc-button-group>.fc-button:hover{z-index:1}.fc-direction-ltr .fc-button-group>.fc-button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-bottom-left-radius:0;border-top-left-radius:0}.fc .fc-toolbar{align-items:center;display:flex;justify-content:space-between}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:1.5em}.fc .fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc .fc-toolbar-title{font-size:1.75em;margin:0}.fc-direction-ltr .fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-direction-rtl .fc-toolbar>*>:not(:first-child){margin-right:.75em}.fc-direction-rtl .fc-toolbar-ltr{flex-direction:row-reverse}.fc .fc-scroller{-webkit-overflow-scrolling:touch;position:relative}.fc .fc-scroller-liquid{height:100%}.fc .fc-scroller-liquid-absolute{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-scroller-harness{direction:ltr;overflow:hidden;position:relative}.fc .fc-scroller-harness-liquid{height:100%}.fc-direction-rtl .fc-scroller-harness>.fc-scroller{direction:rtl}.fc-theme-standard .fc-scrollgrid{border:1px solid var(--fc-border-color)}.fc .fc-scrollgrid,.fc .fc-scrollgrid table{table-layout:fixed;width:100%}.fc .fc-scrollgrid table{border-left-style:hidden;border-right-style:hidden;border-top-style:hidden}.fc .fc-scrollgrid{border-bottom-width:0;border-collapse:separate;border-right-width:0}.fc .fc-scrollgrid-liquid{height:100%}.fc .fc-scrollgrid-section,.fc .fc-scrollgrid-section table,.fc .fc-scrollgrid-section>td{height:1px}.fc .fc-scrollgrid-section-liquid>td{height:100%}.fc .fc-scrollgrid-section>*{border-left-width:0;border-top-width:0}.fc .fc-scrollgrid-section-footer>*,.fc .fc-scrollgrid-section-header>*{border-bottom-width:0}.fc .fc-scrollgrid-section-body table,.fc .fc-scrollgrid-section-footer table{border-bottom-style:hidden}.fc .fc-scrollgrid-section-sticky>*{background:var(--fc-page-bg-color);position:sticky;z-index:3}.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky>*{top:0}.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky>*{bottom:0}.fc .fc-scrollgrid-sticky-shim{height:1px;margin-bottom:-1px}.fc-sticky{position:sticky}.fc .fc-view-harness{flex-grow:1;position:relative}.fc .fc-view-harness-active>.fc-view{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-col-header-cell-cushion{display:inline-block;padding:2px 4px}.fc .fc-bg-event,.fc .fc-highlight,.fc .fc-non-business{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-non-business{background:var(--fc-non-business-color)}.fc .fc-bg-event{background:var(--fc-bg-event-color);opacity:var(--fc-bg-event-opacity)}.fc .fc-bg-event .fc-event-title{font-size:var(--fc-small-font-size);font-style:italic;margin:.5em}.fc .fc-highlight{background:var(--fc-highlight-color)}.fc .fc-cell-shaded,.fc .fc-day-disabled{background:var(--fc-neutral-bg-color)}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event.fc-event-draggable,.fc-event[href]{cursor:pointer}.fc-event .fc-event-main{position:relative;z-index:2}.fc-event-dragging:not(.fc-event-selected){opacity:.75}.fc-event-dragging.fc-event-selected{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-event .fc-event-resizer{display:none;position:absolute;z-index:4}.fc-event-selected .fc-event-resizer,.fc-event:hover .fc-event-resizer{display:block}.fc-event-selected .fc-event-resizer{background:var(--fc-page-bg-color);border-color:inherit;border-radius:calc(var(--fc-event-resizer-dot-total-width)/2);border-style:solid;border-width:var(--fc-event-resizer-dot-border-width);height:var(--fc-event-resizer-dot-total-width);width:var(--fc-event-resizer-dot-total-width)}.fc-event-selected .fc-event-resizer:before{bottom:-20px;content:\"\";left:-20px;position:absolute;right:-20px;top:-20px}.fc-event-selected,.fc-event:focus{box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event-selected:before,.fc-event:focus:before{bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;z-index:3}.fc-event-selected:after,.fc-event:focus:after{background:var(--fc-event-selected-overlay-color);bottom:-1px;content:\"\";left:-1px;position:absolute;right:-1px;top:-1px;z-index:1}.fc-h-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-h-event .fc-event-main{color:var(--fc-event-text-color)}.fc-h-event .fc-event-main-frame{display:flex}.fc-h-event .fc-event-time{max-width:100%;overflow:hidden}.fc-h-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-width:0}.fc-h-event .fc-event-title{display:inline-block;left:0;max-width:100%;overflow:hidden;right:0;vertical-align:top}.fc-h-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-bottom-left-radius:0;border-left-width:0;border-top-left-radius:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{bottom:0;top:0;width:var(--fc-event-resizer-thickness)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end{cursor:w-resize;left:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start{cursor:e-resize;right:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-h-event.fc-event-selected .fc-event-resizer{margin-top:calc(var(--fc-event-resizer-dot-total-width)*-.5);top:50%}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end{left:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start{right:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc .fc-popover{box-shadow:0 2px 6px rgba(0,0,0,.15);position:absolute;z-index:9999}.fc .fc-popover-header{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:3px 4px}.fc .fc-popover-title{margin:0 2px}.fc .fc-popover-close{cursor:pointer;font-size:1.1em;opacity:.65}.fc-theme-standard .fc-popover{background:var(--fc-page-bg-color);border:1px solid var(--fc-border-color)}.fc-theme-standard .fc-popover-header{background:var(--fc-neutral-bg-color)}";
|
|
90
90
|
injectStyles(css_248z);
|
|
91
91
|
|
|
92
92
|
function removeElement(el) {
|
|
@@ -672,6 +672,25 @@ var FullCalendar = (function (exports) {
|
|
|
672
672
|
if (oldProps === newProps) {
|
|
673
673
|
return true;
|
|
674
674
|
}
|
|
675
|
+
// if (debug) {
|
|
676
|
+
// for (let key in newProps) {
|
|
677
|
+
// if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) {
|
|
678
|
+
// // equal
|
|
679
|
+
// } else {
|
|
680
|
+
// if (debug) {
|
|
681
|
+
// console.log('prop difference', key, oldProps[key], newProps[key])
|
|
682
|
+
// }
|
|
683
|
+
// }
|
|
684
|
+
// }
|
|
685
|
+
// // check for props that were omitted in the new
|
|
686
|
+
// for (let key in oldProps) {
|
|
687
|
+
// if (!(key in newProps)) {
|
|
688
|
+
// if (debug) {
|
|
689
|
+
// console.log('prop absent', key)
|
|
690
|
+
// }
|
|
691
|
+
// }
|
|
692
|
+
// }
|
|
693
|
+
// }
|
|
675
694
|
for (let key in newProps) {
|
|
676
695
|
if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) ;
|
|
677
696
|
else {
|
|
@@ -1056,10 +1075,10 @@ var FullCalendar = (function (exports) {
|
|
|
1056
1075
|
|
|
1057
1076
|
const EXTENDED_SETTINGS_AND_SEVERITIES = {
|
|
1058
1077
|
week: 3,
|
|
1059
|
-
separator:
|
|
1060
|
-
omitZeroMinute:
|
|
1061
|
-
meridiem:
|
|
1062
|
-
omitCommas:
|
|
1078
|
+
separator: 9,
|
|
1079
|
+
omitZeroMinute: 9,
|
|
1080
|
+
meridiem: 9,
|
|
1081
|
+
omitCommas: 9,
|
|
1063
1082
|
};
|
|
1064
1083
|
const STANDARD_DATE_PROP_SEVERITIES = {
|
|
1065
1084
|
timeZoneName: 7,
|
|
@@ -1081,22 +1100,25 @@ var FullCalendar = (function (exports) {
|
|
|
1081
1100
|
constructor(formatSettings) {
|
|
1082
1101
|
let standardDateProps = {};
|
|
1083
1102
|
let extendedSettings = {};
|
|
1084
|
-
let
|
|
1103
|
+
let smallestUnitNum = 9; // the smallest unit in the formatter (9 is a sentinel, beyond max)
|
|
1085
1104
|
for (let name in formatSettings) {
|
|
1086
1105
|
if (name in EXTENDED_SETTINGS_AND_SEVERITIES) {
|
|
1087
1106
|
extendedSettings[name] = formatSettings[name];
|
|
1088
|
-
severity =
|
|
1107
|
+
const severity = EXTENDED_SETTINGS_AND_SEVERITIES[name];
|
|
1108
|
+
if (severity < 9) {
|
|
1109
|
+
smallestUnitNum = Math.min(EXTENDED_SETTINGS_AND_SEVERITIES[name], smallestUnitNum);
|
|
1110
|
+
}
|
|
1089
1111
|
}
|
|
1090
1112
|
else {
|
|
1091
1113
|
standardDateProps[name] = formatSettings[name];
|
|
1092
1114
|
if (name in STANDARD_DATE_PROP_SEVERITIES) { // TODO: what about hour12? no severity
|
|
1093
|
-
|
|
1115
|
+
smallestUnitNum = Math.min(STANDARD_DATE_PROP_SEVERITIES[name], smallestUnitNum);
|
|
1094
1116
|
}
|
|
1095
1117
|
}
|
|
1096
1118
|
}
|
|
1097
1119
|
this.standardDateProps = standardDateProps;
|
|
1098
1120
|
this.extendedSettings = extendedSettings;
|
|
1099
|
-
this.
|
|
1121
|
+
this.smallestUnitNum = smallestUnitNum;
|
|
1100
1122
|
this.buildFormattingFunc = memoize(buildFormattingFunc);
|
|
1101
1123
|
}
|
|
1102
1124
|
format(date, context) {
|
|
@@ -1131,8 +1153,8 @@ var FullCalendar = (function (exports) {
|
|
|
1131
1153
|
}
|
|
1132
1154
|
return full0 + separator + full1;
|
|
1133
1155
|
}
|
|
1134
|
-
|
|
1135
|
-
switch (this.
|
|
1156
|
+
getSmallestUnit() {
|
|
1157
|
+
switch (this.smallestUnitNum) {
|
|
1136
1158
|
case 7:
|
|
1137
1159
|
case 6:
|
|
1138
1160
|
case 5:
|
|
@@ -2487,7 +2509,7 @@ var FullCalendar = (function (exports) {
|
|
|
2487
2509
|
function getDateMeta(date, todayRange, nowDate, dateProfile) {
|
|
2488
2510
|
return {
|
|
2489
2511
|
dow: date.getUTCDay(),
|
|
2490
|
-
isDisabled: Boolean(dateProfile && !rangeContainsMarker(dateProfile.activeRange, date)),
|
|
2512
|
+
isDisabled: Boolean(dateProfile && (!dateProfile.activeRange || !rangeContainsMarker(dateProfile.activeRange, date))),
|
|
2491
2513
|
isOther: Boolean(dateProfile && !rangeContainsMarker(dateProfile.currentRange, date)),
|
|
2492
2514
|
isToday: Boolean(todayRange && rangeContainsMarker(todayRange, date)),
|
|
2493
2515
|
isPast: Boolean(nowDate ? (date < nowDate) : todayRange ? (date < todayRange.start) : false),
|
|
@@ -3138,9 +3160,10 @@ var FullCalendar = (function (exports) {
|
|
|
3138
3160
|
}
|
|
3139
3161
|
|
|
3140
3162
|
const ViewContextType = createContext({}); // for Components
|
|
3141
|
-
function buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {
|
|
3163
|
+
function buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, nowManager, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {
|
|
3142
3164
|
return {
|
|
3143
3165
|
dateEnv,
|
|
3166
|
+
nowManager,
|
|
3144
3167
|
options: viewOptions,
|
|
3145
3168
|
pluginHooks,
|
|
3146
3169
|
emitter,
|
|
@@ -3168,13 +3191,14 @@ var FullCalendar = (function (exports) {
|
|
|
3168
3191
|
|
|
3169
3192
|
/* eslint max-classes-per-file: off */
|
|
3170
3193
|
class PureComponent extends x$1 {
|
|
3194
|
+
// debug: boolean
|
|
3171
3195
|
shouldComponentUpdate(nextProps, nextState) {
|
|
3172
|
-
|
|
3173
|
-
|
|
3174
|
-
|
|
3175
|
-
|
|
3176
|
-
|
|
3177
|
-
|
|
3196
|
+
const shouldUpdate = !compareObjs(this.props, nextProps, this.propEquality /*, this.debug */) ||
|
|
3197
|
+
!compareObjs(this.state, nextState, this.stateEquality /*, this.debug */);
|
|
3198
|
+
// if (this.debug && shouldUpdate) {
|
|
3199
|
+
// console.log('shouldUpdate!')
|
|
3200
|
+
// }
|
|
3201
|
+
return shouldUpdate;
|
|
3178
3202
|
}
|
|
3179
3203
|
// HACK for freakin' React StrictMode
|
|
3180
3204
|
safeSetState(newState) {
|
|
@@ -3246,36 +3270,9 @@ var FullCalendar = (function (exports) {
|
|
|
3246
3270
|
}
|
|
3247
3271
|
}
|
|
3248
3272
|
|
|
3249
|
-
function reduceCurrentDate(currentDate, action) {
|
|
3250
|
-
switch (action.type) {
|
|
3251
|
-
case 'CHANGE_DATE':
|
|
3252
|
-
return action.dateMarker;
|
|
3253
|
-
default:
|
|
3254
|
-
return currentDate;
|
|
3255
|
-
}
|
|
3256
|
-
}
|
|
3257
|
-
function getInitialDate(options, dateEnv) {
|
|
3258
|
-
let initialDateInput = options.initialDate;
|
|
3259
|
-
// compute the initial ambig-timezone date
|
|
3260
|
-
if (initialDateInput != null) {
|
|
3261
|
-
return dateEnv.createMarker(initialDateInput);
|
|
3262
|
-
}
|
|
3263
|
-
return getNow(options.now, dateEnv); // getNow already returns unzoned
|
|
3264
|
-
}
|
|
3265
|
-
function getNow(nowInput, dateEnv) {
|
|
3266
|
-
if (typeof nowInput === 'function') {
|
|
3267
|
-
nowInput = nowInput();
|
|
3268
|
-
}
|
|
3269
|
-
if (nowInput == null) {
|
|
3270
|
-
return dateEnv.createNowMarker();
|
|
3271
|
-
}
|
|
3272
|
-
return dateEnv.createMarker(nowInput);
|
|
3273
|
-
}
|
|
3274
|
-
|
|
3275
3273
|
class DateProfileGenerator {
|
|
3276
3274
|
constructor(props) {
|
|
3277
3275
|
this.props = props;
|
|
3278
|
-
this.nowDate = getNow(props.nowInput, props.dateEnv);
|
|
3279
3276
|
this.initHiddenDays();
|
|
3280
3277
|
}
|
|
3281
3278
|
/* Date Range Computation
|
|
@@ -3360,7 +3357,7 @@ var FullCalendar = (function (exports) {
|
|
|
3360
3357
|
buildValidRange() {
|
|
3361
3358
|
let input = this.props.validRangeInput;
|
|
3362
3359
|
let simpleInput = typeof input === 'function'
|
|
3363
|
-
? input.call(this.props.calendarApi, this.
|
|
3360
|
+
? input.call(this.props.calendarApi, this.props.dateEnv.toDate(this.props.nowManager.getDateMarker()))
|
|
3364
3361
|
: input;
|
|
3365
3362
|
return this.refineRange(simpleInput) ||
|
|
3366
3363
|
{ start: null, end: null }; // completely open-ended
|
|
@@ -5405,7 +5402,13 @@ var FullCalendar = (function (exports) {
|
|
|
5405
5402
|
let navLinkAttrs = (!dayMeta.isDisabled && props.colCnt > 1)
|
|
5406
5403
|
? buildNavLinkAttrs(this.context, date)
|
|
5407
5404
|
: {};
|
|
5408
|
-
let
|
|
5405
|
+
let publicDate = dateEnv.toDate(date);
|
|
5406
|
+
// workaround for Luxon (and maybe moment) returning prior-days when start-of-day
|
|
5407
|
+
// in DST gap: https://github.com/fullcalendar/fullcalendar/issues/7633
|
|
5408
|
+
if (dateEnv.namedTimeZoneImpl) {
|
|
5409
|
+
publicDate = addMs(publicDate, 3600000); // add an hour
|
|
5410
|
+
}
|
|
5411
|
+
let renderProps = Object.assign(Object.assign(Object.assign({ date: publicDate, view: viewApi }, props.extraRenderProps), { text }), dayMeta);
|
|
5409
5412
|
return (y(ContentContainer, { elTag: "th", elClasses: classNames, elAttrs: Object.assign({ role: 'columnheader', colSpan: props.colSpan, 'data-date': !dayMeta.isDisabled ? formatDayString(date) : undefined }, props.extraDataAttrs), renderProps: renderProps, generatorName: "dayHeaderContent", customGenerator: options.dayHeaderContent, defaultGenerator: renderInner$1, classNameGenerator: options.dayHeaderClassNames, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, (InnerContainer) => (y("div", { className: "fc-scrollgrid-sync-inner" }, !dayMeta.isDisabled && (y(InnerContainer, { elTag: "a", elAttrs: navLinkAttrs, elClasses: [
|
|
5410
5413
|
'fc-col-header-cell-cushion',
|
|
5411
5414
|
props.isSticky && 'fc-sticky',
|
|
@@ -5447,9 +5450,20 @@ var FullCalendar = (function (exports) {
|
|
|
5447
5450
|
class NowTimer extends x$1 {
|
|
5448
5451
|
constructor(props, context) {
|
|
5449
5452
|
super(props, context);
|
|
5450
|
-
this.
|
|
5451
|
-
|
|
5452
|
-
|
|
5453
|
+
this.handleRefresh = () => {
|
|
5454
|
+
let timing = this.computeTiming();
|
|
5455
|
+
if (timing.state.nowDate.valueOf() !== this.state.nowDate.valueOf()) {
|
|
5456
|
+
this.setState(timing.state);
|
|
5457
|
+
}
|
|
5458
|
+
this.clearTimeout();
|
|
5459
|
+
this.setTimeout(timing.waitMs);
|
|
5460
|
+
};
|
|
5461
|
+
this.handleVisibilityChange = () => {
|
|
5462
|
+
if (!document.hidden) {
|
|
5463
|
+
this.handleRefresh();
|
|
5464
|
+
}
|
|
5465
|
+
};
|
|
5466
|
+
this.state = this.computeTiming().state;
|
|
5453
5467
|
}
|
|
5454
5468
|
render() {
|
|
5455
5469
|
let { props, state } = this;
|
|
@@ -5457,6 +5471,9 @@ var FullCalendar = (function (exports) {
|
|
|
5457
5471
|
}
|
|
5458
5472
|
componentDidMount() {
|
|
5459
5473
|
this.setTimeout();
|
|
5474
|
+
this.context.nowManager.addResetListener(this.handleRefresh);
|
|
5475
|
+
// fired tab becomes visible after being hidden
|
|
5476
|
+
document.addEventListener('visibilitychange', this.handleVisibilityChange);
|
|
5460
5477
|
}
|
|
5461
5478
|
componentDidUpdate(prevProps) {
|
|
5462
5479
|
if (prevProps.unit !== this.props.unit) {
|
|
@@ -5466,10 +5483,12 @@ var FullCalendar = (function (exports) {
|
|
|
5466
5483
|
}
|
|
5467
5484
|
componentWillUnmount() {
|
|
5468
5485
|
this.clearTimeout();
|
|
5486
|
+
this.context.nowManager.removeResetListener(this.handleRefresh);
|
|
5487
|
+
document.removeEventListener('visibilitychange', this.handleVisibilityChange);
|
|
5469
5488
|
}
|
|
5470
5489
|
computeTiming() {
|
|
5471
5490
|
let { props, context } = this;
|
|
5472
|
-
let unroundedNow =
|
|
5491
|
+
let unroundedNow = context.nowManager.getDateMarker();
|
|
5473
5492
|
let currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit);
|
|
5474
5493
|
let nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit));
|
|
5475
5494
|
let waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf();
|
|
@@ -5477,16 +5496,20 @@ var FullCalendar = (function (exports) {
|
|
|
5477
5496
|
// ensure no longer than a day
|
|
5478
5497
|
waitMs = Math.min(1000 * 60 * 60 * 24, waitMs);
|
|
5479
5498
|
return {
|
|
5480
|
-
|
|
5481
|
-
nextState: { nowDate: nextUnitStart, todayRange: buildDayRange(nextUnitStart) },
|
|
5499
|
+
state: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) },
|
|
5482
5500
|
waitMs,
|
|
5483
5501
|
};
|
|
5484
5502
|
}
|
|
5485
|
-
setTimeout() {
|
|
5486
|
-
|
|
5503
|
+
setTimeout(waitMs = this.computeTiming().waitMs) {
|
|
5504
|
+
// NOTE: timeout could take longer than expected if tab sleeps,
|
|
5505
|
+
// which is why we listen to 'visibilitychange'
|
|
5487
5506
|
this.timeoutId = setTimeout(() => {
|
|
5488
|
-
|
|
5489
|
-
|
|
5507
|
+
// NOTE: timeout could also return *earlier* than expected, and we need to wait 2 ms more
|
|
5508
|
+
// This is why use use same waitMs from computeTiming, so we don't skip an interval while
|
|
5509
|
+
// .setState() is executing
|
|
5510
|
+
const timing = this.computeTiming();
|
|
5511
|
+
this.setState(timing.state, () => {
|
|
5512
|
+
this.setTimeout(timing.waitMs);
|
|
5490
5513
|
});
|
|
5491
5514
|
}, waitMs);
|
|
5492
5515
|
}
|
|
@@ -6619,8 +6642,11 @@ var FullCalendar = (function (exports) {
|
|
|
6619
6642
|
class EventContainer extends BaseComponent {
|
|
6620
6643
|
constructor() {
|
|
6621
6644
|
super(...arguments);
|
|
6645
|
+
// memo
|
|
6646
|
+
this.buildPublicEvent = memoize((context, eventDef, eventInstance) => new EventImpl(context, eventDef, eventInstance));
|
|
6622
6647
|
this.handleEl = (el) => {
|
|
6623
6648
|
this.el = el;
|
|
6649
|
+
setRef(this.props.elRef, el);
|
|
6624
6650
|
if (el) {
|
|
6625
6651
|
setElSeg(el, this.props.seg);
|
|
6626
6652
|
}
|
|
@@ -6633,7 +6659,7 @@ var FullCalendar = (function (exports) {
|
|
|
6633
6659
|
const { eventRange } = seg;
|
|
6634
6660
|
const { ui } = eventRange;
|
|
6635
6661
|
const renderProps = {
|
|
6636
|
-
event:
|
|
6662
|
+
event: this.buildPublicEvent(context, eventRange.def, eventRange.instance),
|
|
6637
6663
|
view: context.viewApi,
|
|
6638
6664
|
timeText: props.timeText,
|
|
6639
6665
|
textColor: ui.textColor,
|
|
@@ -6652,11 +6678,11 @@ var FullCalendar = (function (exports) {
|
|
|
6652
6678
|
isDragging: Boolean(props.isDragging),
|
|
6653
6679
|
isResizing: Boolean(props.isResizing),
|
|
6654
6680
|
};
|
|
6655
|
-
return (y(ContentContainer,
|
|
6681
|
+
return (y(ContentContainer, { elRef: this.handleEl, elTag: props.elTag, elAttrs: props.elAttrs, elClasses: [
|
|
6656
6682
|
...getEventClassNames(renderProps),
|
|
6657
6683
|
...seg.eventRange.ui.classNames,
|
|
6658
6684
|
...(props.elClasses || []),
|
|
6659
|
-
], renderProps: renderProps, generatorName: "eventContent", customGenerator: options.eventContent, defaultGenerator: props.defaultGenerator, classNameGenerator: options.eventClassNames, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount }))
|
|
6685
|
+
], elStyle: props.elStyle, renderProps: renderProps, generatorName: "eventContent", customGenerator: options.eventContent, defaultGenerator: props.defaultGenerator, classNameGenerator: options.eventClassNames, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount }, props.children));
|
|
6660
6686
|
}
|
|
6661
6687
|
componentDidUpdate(prevProps) {
|
|
6662
6688
|
if (this.el && this.props.seg !== prevProps.seg) {
|
|
@@ -6683,6 +6709,9 @@ var FullCalendar = (function (exports) {
|
|
|
6683
6709
|
Boolean(eventContentArg.isEndResizable) && (y("div", { className: "fc-event-resizer fc-event-resizer-end" }))))));
|
|
6684
6710
|
}
|
|
6685
6711
|
}
|
|
6712
|
+
StandardEvent.addPropsEquality({
|
|
6713
|
+
seg: isPropsEqual,
|
|
6714
|
+
});
|
|
6686
6715
|
function renderInnerContent$1(innerProps) {
|
|
6687
6716
|
return (y("div", { className: "fc-event-main-frame" },
|
|
6688
6717
|
innerProps.timeText && (y("div", { className: "fc-event-time" }, innerProps.timeText)),
|
|
@@ -6697,7 +6726,7 @@ var FullCalendar = (function (exports) {
|
|
|
6697
6726
|
date: context.dateEnv.toDate(props.date),
|
|
6698
6727
|
view: context.viewApi,
|
|
6699
6728
|
};
|
|
6700
|
-
return (y(ContentContainer,
|
|
6729
|
+
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));
|
|
6701
6730
|
}));
|
|
6702
6731
|
|
|
6703
6732
|
const DAY_NUM_FORMAT = createFormatter({ day: 'numeric' });
|
|
@@ -6720,12 +6749,12 @@ var FullCalendar = (function (exports) {
|
|
|
6720
6749
|
dateEnv: context.dateEnv,
|
|
6721
6750
|
monthStartFormat: options.monthStartFormat,
|
|
6722
6751
|
});
|
|
6723
|
-
return (y(ContentContainer, Object.assign({}, props
|
|
6752
|
+
return (y(ContentContainer, { elRef: props.elRef, elTag: props.elTag, elAttrs: Object.assign(Object.assign({}, props.elAttrs), (renderProps.isDisabled ? {} : { 'data-date': formatDayString(props.date) })), elClasses: [
|
|
6724
6753
|
...getDayClassNames(renderProps, context.theme),
|
|
6725
6754
|
...(props.elClasses || []),
|
|
6726
|
-
],
|
|
6755
|
+
], elStyle: props.elStyle, renderProps: renderProps, generatorName: "dayCellContent", customGenerator: options.dayCellContent, defaultGenerator: props.defaultGenerator, classNameGenerator:
|
|
6727
6756
|
// don't use custom classNames if disabled
|
|
6728
|
-
renderProps.isDisabled ? undefined : options.dayCellClassNames, didMount: options.dayCellDidMount, willUnmount: options.dayCellWillUnmount }))
|
|
6757
|
+
renderProps.isDisabled ? undefined : options.dayCellClassNames, didMount: options.dayCellDidMount, willUnmount: options.dayCellWillUnmount }, props.children));
|
|
6729
6758
|
}
|
|
6730
6759
|
}
|
|
6731
6760
|
function hasCustomDayCellContent(options) {
|
|
@@ -6762,7 +6791,7 @@ var FullCalendar = (function (exports) {
|
|
|
6762
6791
|
let text = dateEnv.format(date, format);
|
|
6763
6792
|
let renderProps = { num, text, date };
|
|
6764
6793
|
return (y(ContentContainer // why isn't WeekNumberContentArg being auto-detected?
|
|
6765
|
-
,
|
|
6794
|
+
, { 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));
|
|
6766
6795
|
}));
|
|
6767
6796
|
function renderInner(innerProps) {
|
|
6768
6797
|
return innerProps.text;
|
|
@@ -7018,10 +7047,10 @@ var FullCalendar = (function (exports) {
|
|
|
7018
7047
|
let { props, context } = this;
|
|
7019
7048
|
let { options } = context;
|
|
7020
7049
|
let renderProps = { view: context.viewApi };
|
|
7021
|
-
return (y(ContentContainer,
|
|
7050
|
+
return (y(ContentContainer, { elRef: props.elRef, elTag: props.elTag || 'div', elAttrs: props.elAttrs, elClasses: [
|
|
7022
7051
|
...buildViewClassNames(props.viewSpec),
|
|
7023
7052
|
...(props.elClasses || []),
|
|
7024
|
-
], renderProps: renderProps, classNameGenerator: options.viewClassNames, generatorName: undefined, didMount: options.viewDidMount, willUnmount: options.viewWillUnmount }
|
|
7053
|
+
], elStyle: props.elStyle, renderProps: renderProps, classNameGenerator: options.viewClassNames, generatorName: undefined, didMount: options.viewDidMount, willUnmount: options.viewWillUnmount }, () => props.children));
|
|
7025
7054
|
}
|
|
7026
7055
|
}
|
|
7027
7056
|
function buildViewClassNames(viewSpec) {
|
|
@@ -7247,7 +7276,7 @@ var FullCalendar = (function (exports) {
|
|
|
7247
7276
|
this.unselect();
|
|
7248
7277
|
this.dispatch({
|
|
7249
7278
|
type: 'CHANGE_DATE',
|
|
7250
|
-
dateMarker:
|
|
7279
|
+
dateMarker: state.nowManager.getDateMarker(),
|
|
7251
7280
|
});
|
|
7252
7281
|
}
|
|
7253
7282
|
gotoDate(zonedDateInput) {
|
|
@@ -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
|
exports.Calendar = Calendar;
|
|
9841
9940
|
exports.Internal = internal;
|