@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/internal-common.cjs
CHANGED
|
@@ -103,7 +103,7 @@ if (typeof document !== 'undefined') {
|
|
|
103
103
|
registerStylesRoot(document);
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
-
var css_248z = ":root{--fc-small-font-size:.85em;--fc-page-bg-color:#fff;--fc-neutral-bg-color:hsla(0,0%,82%,.3);--fc-neutral-text-color:grey;--fc-border-color:#ddd;--fc-button-text-color:#fff;--fc-button-bg-color:#2c3e50;--fc-button-border-color:#2c3e50;--fc-button-hover-bg-color:#1e2b37;--fc-button-hover-border-color:#1a252f;--fc-button-active-bg-color:#1a252f;--fc-button-active-border-color:#151e27;--fc-event-bg-color:#3788d8;--fc-event-border-color:#3788d8;--fc-event-text-color:#fff;--fc-event-selected-overlay-color:rgba(0,0,0,.25);--fc-more-link-bg-color:#d0d0d0;--fc-more-link-text-color:inherit;--fc-event-resizer-thickness:8px;--fc-event-resizer-dot-total-width:8px;--fc-event-resizer-dot-border-width:1px;--fc-non-business-color:hsla(0,0%,84%,.3);--fc-bg-event-color:#8fdf82;--fc-bg-event-opacity:0.3;--fc-highlight-color:rgba(188,232,241,.3);--fc-today-bg-color:rgba(255,220,40,.15);--fc-now-indicator-color:red}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc{display:flex;flex-direction:column;font-size:1em}.fc,.fc *,.fc :after,.fc :before{box-sizing:border-box}.fc table{border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{padding:0;vertical-align:top}.fc a[data-navlink]{cursor:pointer}.fc a[data-navlink]:hover{text-decoration:underline}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-theme-standard td,.fc-theme-standard th{border:1px solid var(--fc-border-color)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:fcicons;font-style:normal;font-weight:400;src:url(\"data:application/x-font-ttf;charset=utf-8;base64,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)}";
|
|
106
|
+
var css_248z = ":root{--fc-small-font-size:.85em;--fc-page-bg-color:#fff;--fc-neutral-bg-color:hsla(0,0%,82%,.3);--fc-neutral-text-color:grey;--fc-border-color:#ddd;--fc-button-text-color:#fff;--fc-button-bg-color:#2c3e50;--fc-button-border-color:#2c3e50;--fc-button-hover-bg-color:#1e2b37;--fc-button-hover-border-color:#1a252f;--fc-button-active-bg-color:#1a252f;--fc-button-active-border-color:#151e27;--fc-event-bg-color:#3788d8;--fc-event-border-color:#3788d8;--fc-event-text-color:#fff;--fc-event-selected-overlay-color:rgba(0,0,0,.25);--fc-more-link-bg-color:#d0d0d0;--fc-more-link-text-color:inherit;--fc-event-resizer-thickness:8px;--fc-event-resizer-dot-total-width:8px;--fc-event-resizer-dot-border-width:1px;--fc-non-business-color:hsla(0,0%,84%,.3);--fc-bg-event-color:#8fdf82;--fc-bg-event-opacity:0.3;--fc-highlight-color:rgba(188,232,241,.3);--fc-today-bg-color:rgba(255,220,40,.15);--fc-now-indicator-color:red}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc{display:flex;flex-direction:column;font-size:1em}.fc,.fc *,.fc :after,.fc :before{box-sizing:border-box}.fc table{border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{padding:0;vertical-align:top}.fc a[data-navlink]{cursor:pointer}.fc a[data-navlink]:hover{text-decoration:underline}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-theme-standard td,.fc-theme-standard th{border:1px solid var(--fc-border-color)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:fcicons;font-style:normal;font-weight:400;src:url(\"data:application/x-font-ttf;charset=utf-8;base64,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\") format(\"truetype\")}.fc-icon{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-family:fcicons!important;font-style:normal;font-variant:normal;font-weight:400;height:1em;line-height:1;text-align:center;text-transform:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:1em}.fc-icon-chevron-left:before{content:\"\\e900\"}.fc-icon-chevron-right:before{content:\"\\e901\"}.fc-icon-chevrons-left:before{content:\"\\e902\"}.fc-icon-chevrons-right:before{content:\"\\e903\"}.fc-icon-minus-square:before{content:\"\\e904\"}.fc-icon-plus-square:before{content:\"\\e905\"}.fc-icon-x:before{content:\"\\e906\"}.fc .fc-button{border-radius:0;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible;text-transform:none}.fc .fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc .fc-button{-webkit-appearance:button}.fc .fc-button:not(:disabled){cursor:pointer}.fc .fc-button{background-color:transparent;border:1px solid transparent;border-radius:.25em;display:inline-block;font-size:1em;font-weight:400;line-height:1.5;padding:.4em .65em;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle}.fc .fc-button:hover{text-decoration:none}.fc .fc-button:focus{box-shadow:0 0 0 .2rem rgba(44,62,80,.25);outline:0}.fc .fc-button:disabled{opacity:.65}.fc .fc-button-primary{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:hover{background-color:var(--fc-button-hover-bg-color);border-color:var(--fc-button-hover-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:disabled{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{background-color:var(--fc-button-active-bg-color);border-color:var(--fc-button-active-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:not(:disabled).fc-button-active:focus,.fc .fc-button-primary:not(:disabled):active:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button .fc-icon{font-size:1.5em;vertical-align:middle}.fc .fc-button-group{display:inline-flex;position:relative;vertical-align:middle}.fc .fc-button-group>.fc-button{flex:1 1 auto;position:relative}.fc .fc-button-group>.fc-button.fc-button-active,.fc .fc-button-group>.fc-button:active,.fc .fc-button-group>.fc-button:focus,.fc .fc-button-group>.fc-button:hover{z-index:1}.fc-direction-ltr .fc-button-group>.fc-button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-bottom-left-radius:0;border-top-left-radius:0}.fc .fc-toolbar{align-items:center;display:flex;justify-content:space-between}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:1.5em}.fc .fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc .fc-toolbar-title{font-size:1.75em;margin:0}.fc-direction-ltr .fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-direction-rtl .fc-toolbar>*>:not(:first-child){margin-right:.75em}.fc-direction-rtl .fc-toolbar-ltr{flex-direction:row-reverse}.fc .fc-scroller{-webkit-overflow-scrolling:touch;position:relative}.fc .fc-scroller-liquid{height:100%}.fc .fc-scroller-liquid-absolute{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-scroller-harness{direction:ltr;overflow:hidden;position:relative}.fc .fc-scroller-harness-liquid{height:100%}.fc-direction-rtl .fc-scroller-harness>.fc-scroller{direction:rtl}.fc-theme-standard .fc-scrollgrid{border:1px solid var(--fc-border-color)}.fc .fc-scrollgrid,.fc .fc-scrollgrid table{table-layout:fixed;width:100%}.fc .fc-scrollgrid table{border-left-style:hidden;border-right-style:hidden;border-top-style:hidden}.fc .fc-scrollgrid{border-bottom-width:0;border-collapse:separate;border-right-width:0}.fc .fc-scrollgrid-liquid{height:100%}.fc .fc-scrollgrid-section,.fc .fc-scrollgrid-section table,.fc .fc-scrollgrid-section>td{height:1px}.fc .fc-scrollgrid-section-liquid>td{height:100%}.fc .fc-scrollgrid-section>*{border-left-width:0;border-top-width:0}.fc .fc-scrollgrid-section-footer>*,.fc .fc-scrollgrid-section-header>*{border-bottom-width:0}.fc .fc-scrollgrid-section-body table,.fc .fc-scrollgrid-section-footer table{border-bottom-style:hidden}.fc .fc-scrollgrid-section-sticky>*{background:var(--fc-page-bg-color);position:sticky;z-index:3}.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky>*{top:0}.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky>*{bottom:0}.fc .fc-scrollgrid-sticky-shim{height:1px;margin-bottom:-1px}.fc-sticky{position:sticky}.fc .fc-view-harness{flex-grow:1;position:relative}.fc .fc-view-harness-active>.fc-view{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-col-header-cell-cushion{display:inline-block;padding:2px 4px}.fc .fc-bg-event,.fc .fc-highlight,.fc .fc-non-business{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-non-business{background:var(--fc-non-business-color)}.fc .fc-bg-event{background:var(--fc-bg-event-color);opacity:var(--fc-bg-event-opacity)}.fc .fc-bg-event .fc-event-title{font-size:var(--fc-small-font-size);font-style:italic;margin:.5em}.fc .fc-highlight{background:var(--fc-highlight-color)}.fc .fc-cell-shaded,.fc .fc-day-disabled{background:var(--fc-neutral-bg-color)}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event.fc-event-draggable,.fc-event[href]{cursor:pointer}.fc-event .fc-event-main{position:relative;z-index:2}.fc-event-dragging:not(.fc-event-selected){opacity:.75}.fc-event-dragging.fc-event-selected{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-event .fc-event-resizer{display:none;position:absolute;z-index:4}.fc-event-selected .fc-event-resizer,.fc-event:hover .fc-event-resizer{display:block}.fc-event-selected .fc-event-resizer{background:var(--fc-page-bg-color);border-color:inherit;border-radius:calc(var(--fc-event-resizer-dot-total-width)/2);border-style:solid;border-width:var(--fc-event-resizer-dot-border-width);height:var(--fc-event-resizer-dot-total-width);width:var(--fc-event-resizer-dot-total-width)}.fc-event-selected .fc-event-resizer:before{bottom:-20px;content:\"\";left:-20px;position:absolute;right:-20px;top:-20px}.fc-event-selected,.fc-event:focus{box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event-selected:before,.fc-event:focus:before{bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;z-index:3}.fc-event-selected:after,.fc-event:focus:after{background:var(--fc-event-selected-overlay-color);bottom:-1px;content:\"\";left:-1px;position:absolute;right:-1px;top:-1px;z-index:1}.fc-h-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-h-event .fc-event-main{color:var(--fc-event-text-color)}.fc-h-event .fc-event-main-frame{display:flex}.fc-h-event .fc-event-time{max-width:100%;overflow:hidden}.fc-h-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-width:0}.fc-h-event .fc-event-title{display:inline-block;left:0;max-width:100%;overflow:hidden;right:0;vertical-align:top}.fc-h-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-bottom-left-radius:0;border-left-width:0;border-top-left-radius:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{bottom:0;top:0;width:var(--fc-event-resizer-thickness)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end{cursor:w-resize;left:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start{cursor:e-resize;right:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-h-event.fc-event-selected .fc-event-resizer{margin-top:calc(var(--fc-event-resizer-dot-total-width)*-.5);top:50%}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end{left:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start{right:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc .fc-popover{box-shadow:0 2px 6px rgba(0,0,0,.15);position:absolute;z-index:9999}.fc .fc-popover-header{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:3px 4px}.fc .fc-popover-title{margin:0 2px}.fc .fc-popover-close{cursor:pointer;font-size:1.1em;opacity:.65}.fc-theme-standard .fc-popover{background:var(--fc-page-bg-color);border:1px solid var(--fc-border-color)}.fc-theme-standard .fc-popover-header{background:var(--fc-neutral-bg-color)}";
|
|
107
107
|
injectStyles(css_248z);
|
|
108
108
|
|
|
109
109
|
class DelayedRunner {
|
|
@@ -984,10 +984,10 @@ function memoizeHashlike(workerFunc, resEquality, teardownFunc) {
|
|
|
984
984
|
|
|
985
985
|
const EXTENDED_SETTINGS_AND_SEVERITIES = {
|
|
986
986
|
week: 3,
|
|
987
|
-
separator:
|
|
988
|
-
omitZeroMinute:
|
|
989
|
-
meridiem:
|
|
990
|
-
omitCommas:
|
|
987
|
+
separator: 9,
|
|
988
|
+
omitZeroMinute: 9,
|
|
989
|
+
meridiem: 9,
|
|
990
|
+
omitCommas: 9,
|
|
991
991
|
};
|
|
992
992
|
const STANDARD_DATE_PROP_SEVERITIES = {
|
|
993
993
|
timeZoneName: 7,
|
|
@@ -1009,22 +1009,25 @@ class NativeFormatter {
|
|
|
1009
1009
|
constructor(formatSettings) {
|
|
1010
1010
|
let standardDateProps = {};
|
|
1011
1011
|
let extendedSettings = {};
|
|
1012
|
-
let
|
|
1012
|
+
let smallestUnitNum = 9; // the smallest unit in the formatter (9 is a sentinel, beyond max)
|
|
1013
1013
|
for (let name in formatSettings) {
|
|
1014
1014
|
if (name in EXTENDED_SETTINGS_AND_SEVERITIES) {
|
|
1015
1015
|
extendedSettings[name] = formatSettings[name];
|
|
1016
|
-
severity =
|
|
1016
|
+
const severity = EXTENDED_SETTINGS_AND_SEVERITIES[name];
|
|
1017
|
+
if (severity < 9) {
|
|
1018
|
+
smallestUnitNum = Math.min(EXTENDED_SETTINGS_AND_SEVERITIES[name], smallestUnitNum);
|
|
1019
|
+
}
|
|
1017
1020
|
}
|
|
1018
1021
|
else {
|
|
1019
1022
|
standardDateProps[name] = formatSettings[name];
|
|
1020
1023
|
if (name in STANDARD_DATE_PROP_SEVERITIES) { // TODO: what about hour12? no severity
|
|
1021
|
-
|
|
1024
|
+
smallestUnitNum = Math.min(STANDARD_DATE_PROP_SEVERITIES[name], smallestUnitNum);
|
|
1022
1025
|
}
|
|
1023
1026
|
}
|
|
1024
1027
|
}
|
|
1025
1028
|
this.standardDateProps = standardDateProps;
|
|
1026
1029
|
this.extendedSettings = extendedSettings;
|
|
1027
|
-
this.
|
|
1030
|
+
this.smallestUnitNum = smallestUnitNum;
|
|
1028
1031
|
this.buildFormattingFunc = memoize(buildFormattingFunc);
|
|
1029
1032
|
}
|
|
1030
1033
|
format(date, context) {
|
|
@@ -1059,8 +1062,8 @@ class NativeFormatter {
|
|
|
1059
1062
|
}
|
|
1060
1063
|
return full0 + separator + full1;
|
|
1061
1064
|
}
|
|
1062
|
-
|
|
1063
|
-
switch (this.
|
|
1065
|
+
getSmallestUnit() {
|
|
1066
|
+
switch (this.smallestUnitNum) {
|
|
1064
1067
|
case 7:
|
|
1065
1068
|
case 6:
|
|
1066
1069
|
case 5:
|
|
@@ -1773,6 +1776,25 @@ function compareObjs(oldProps, newProps, equalityFuncs = {}) {
|
|
|
1773
1776
|
if (oldProps === newProps) {
|
|
1774
1777
|
return true;
|
|
1775
1778
|
}
|
|
1779
|
+
// if (debug) {
|
|
1780
|
+
// for (let key in newProps) {
|
|
1781
|
+
// if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) {
|
|
1782
|
+
// // equal
|
|
1783
|
+
// } else {
|
|
1784
|
+
// if (debug) {
|
|
1785
|
+
// console.log('prop difference', key, oldProps[key], newProps[key])
|
|
1786
|
+
// }
|
|
1787
|
+
// }
|
|
1788
|
+
// }
|
|
1789
|
+
// // check for props that were omitted in the new
|
|
1790
|
+
// for (let key in oldProps) {
|
|
1791
|
+
// if (!(key in newProps)) {
|
|
1792
|
+
// if (debug) {
|
|
1793
|
+
// console.log('prop absent', key)
|
|
1794
|
+
// }
|
|
1795
|
+
// }
|
|
1796
|
+
// }
|
|
1797
|
+
// }
|
|
1776
1798
|
for (let key in newProps) {
|
|
1777
1799
|
if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) ;
|
|
1778
1800
|
else {
|
|
@@ -2332,9 +2354,10 @@ class ScrollResponder {
|
|
|
2332
2354
|
}
|
|
2333
2355
|
|
|
2334
2356
|
const ViewContextType = createContext({}); // for Components
|
|
2335
|
-
function buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {
|
|
2357
|
+
function buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, nowManager, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {
|
|
2336
2358
|
return {
|
|
2337
2359
|
dateEnv,
|
|
2360
|
+
nowManager,
|
|
2338
2361
|
options: viewOptions,
|
|
2339
2362
|
pluginHooks,
|
|
2340
2363
|
emitter,
|
|
@@ -2362,13 +2385,14 @@ function buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator,
|
|
|
2362
2385
|
|
|
2363
2386
|
/* eslint max-classes-per-file: off */
|
|
2364
2387
|
class PureComponent extends preact.Component {
|
|
2388
|
+
// debug: boolean
|
|
2365
2389
|
shouldComponentUpdate(nextProps, nextState) {
|
|
2366
|
-
|
|
2367
|
-
|
|
2368
|
-
|
|
2369
|
-
|
|
2370
|
-
|
|
2371
|
-
|
|
2390
|
+
const shouldUpdate = !compareObjs(this.props, nextProps, this.propEquality /*, this.debug */) ||
|
|
2391
|
+
!compareObjs(this.state, nextState, this.stateEquality /*, this.debug */);
|
|
2392
|
+
// if (this.debug && shouldUpdate) {
|
|
2393
|
+
// console.log('shouldUpdate!')
|
|
2394
|
+
// }
|
|
2395
|
+
return shouldUpdate;
|
|
2372
2396
|
}
|
|
2373
2397
|
// HACK for freakin' React StrictMode
|
|
2374
2398
|
safeSetState(newState) {
|
|
@@ -2608,10 +2632,10 @@ class ViewContainer extends BaseComponent {
|
|
|
2608
2632
|
let { props, context } = this;
|
|
2609
2633
|
let { options } = context;
|
|
2610
2634
|
let renderProps = { view: context.viewApi };
|
|
2611
|
-
return (preact.createElement(ContentContainer,
|
|
2635
|
+
return (preact.createElement(ContentContainer, { elRef: props.elRef, elTag: props.elTag || 'div', elAttrs: props.elAttrs, elClasses: [
|
|
2612
2636
|
...buildViewClassNames(props.viewSpec),
|
|
2613
2637
|
...(props.elClasses || []),
|
|
2614
|
-
], renderProps: renderProps, classNameGenerator: options.viewClassNames, generatorName: undefined, didMount: options.viewDidMount, willUnmount: options.viewWillUnmount }
|
|
2638
|
+
], elStyle: props.elStyle, renderProps: renderProps, classNameGenerator: options.viewClassNames, generatorName: undefined, didMount: options.viewDidMount, willUnmount: options.viewWillUnmount }, () => props.children));
|
|
2615
2639
|
}
|
|
2616
2640
|
}
|
|
2617
2641
|
function buildViewClassNames(viewSpec) {
|
|
@@ -2767,36 +2791,9 @@ function diffDates(date0, date1, dateEnv, largeUnit) {
|
|
|
2767
2791
|
return diffDayAndTime(date0, date1); // returns a duration
|
|
2768
2792
|
}
|
|
2769
2793
|
|
|
2770
|
-
function reduceCurrentDate(currentDate, action) {
|
|
2771
|
-
switch (action.type) {
|
|
2772
|
-
case 'CHANGE_DATE':
|
|
2773
|
-
return action.dateMarker;
|
|
2774
|
-
default:
|
|
2775
|
-
return currentDate;
|
|
2776
|
-
}
|
|
2777
|
-
}
|
|
2778
|
-
function getInitialDate(options, dateEnv) {
|
|
2779
|
-
let initialDateInput = options.initialDate;
|
|
2780
|
-
// compute the initial ambig-timezone date
|
|
2781
|
-
if (initialDateInput != null) {
|
|
2782
|
-
return dateEnv.createMarker(initialDateInput);
|
|
2783
|
-
}
|
|
2784
|
-
return getNow(options.now, dateEnv); // getNow already returns unzoned
|
|
2785
|
-
}
|
|
2786
|
-
function getNow(nowInput, dateEnv) {
|
|
2787
|
-
if (typeof nowInput === 'function') {
|
|
2788
|
-
nowInput = nowInput();
|
|
2789
|
-
}
|
|
2790
|
-
if (nowInput == null) {
|
|
2791
|
-
return dateEnv.createNowMarker();
|
|
2792
|
-
}
|
|
2793
|
-
return dateEnv.createMarker(nowInput);
|
|
2794
|
-
}
|
|
2795
|
-
|
|
2796
2794
|
class DateProfileGenerator {
|
|
2797
2795
|
constructor(props) {
|
|
2798
2796
|
this.props = props;
|
|
2799
|
-
this.nowDate = getNow(props.nowInput, props.dateEnv);
|
|
2800
2797
|
this.initHiddenDays();
|
|
2801
2798
|
}
|
|
2802
2799
|
/* Date Range Computation
|
|
@@ -2881,7 +2878,7 @@ class DateProfileGenerator {
|
|
|
2881
2878
|
buildValidRange() {
|
|
2882
2879
|
let input = this.props.validRangeInput;
|
|
2883
2880
|
let simpleInput = typeof input === 'function'
|
|
2884
|
-
? input.call(this.props.calendarApi, this.
|
|
2881
|
+
? input.call(this.props.calendarApi, this.props.dateEnv.toDate(this.props.nowManager.getDateMarker()))
|
|
2885
2882
|
: input;
|
|
2886
2883
|
return this.refineRange(simpleInput) ||
|
|
2887
2884
|
{ start: null, end: null }; // completely open-ended
|
|
@@ -4773,6 +4770,85 @@ function interactionSettingsToStore(settings) {
|
|
|
4773
4770
|
// global state
|
|
4774
4771
|
const interactionSettingsStore = {};
|
|
4775
4772
|
|
|
4773
|
+
class NowTimer extends preact.Component {
|
|
4774
|
+
constructor(props, context) {
|
|
4775
|
+
super(props, context);
|
|
4776
|
+
this.handleRefresh = () => {
|
|
4777
|
+
let timing = this.computeTiming();
|
|
4778
|
+
if (timing.state.nowDate.valueOf() !== this.state.nowDate.valueOf()) {
|
|
4779
|
+
this.setState(timing.state);
|
|
4780
|
+
}
|
|
4781
|
+
this.clearTimeout();
|
|
4782
|
+
this.setTimeout(timing.waitMs);
|
|
4783
|
+
};
|
|
4784
|
+
this.handleVisibilityChange = () => {
|
|
4785
|
+
if (!document.hidden) {
|
|
4786
|
+
this.handleRefresh();
|
|
4787
|
+
}
|
|
4788
|
+
};
|
|
4789
|
+
this.state = this.computeTiming().state;
|
|
4790
|
+
}
|
|
4791
|
+
render() {
|
|
4792
|
+
let { props, state } = this;
|
|
4793
|
+
return props.children(state.nowDate, state.todayRange);
|
|
4794
|
+
}
|
|
4795
|
+
componentDidMount() {
|
|
4796
|
+
this.setTimeout();
|
|
4797
|
+
this.context.nowManager.addResetListener(this.handleRefresh);
|
|
4798
|
+
// fired tab becomes visible after being hidden
|
|
4799
|
+
document.addEventListener('visibilitychange', this.handleVisibilityChange);
|
|
4800
|
+
}
|
|
4801
|
+
componentDidUpdate(prevProps) {
|
|
4802
|
+
if (prevProps.unit !== this.props.unit) {
|
|
4803
|
+
this.clearTimeout();
|
|
4804
|
+
this.setTimeout();
|
|
4805
|
+
}
|
|
4806
|
+
}
|
|
4807
|
+
componentWillUnmount() {
|
|
4808
|
+
this.clearTimeout();
|
|
4809
|
+
this.context.nowManager.removeResetListener(this.handleRefresh);
|
|
4810
|
+
document.removeEventListener('visibilitychange', this.handleVisibilityChange);
|
|
4811
|
+
}
|
|
4812
|
+
computeTiming() {
|
|
4813
|
+
let { props, context } = this;
|
|
4814
|
+
let unroundedNow = context.nowManager.getDateMarker();
|
|
4815
|
+
let currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit);
|
|
4816
|
+
let nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit));
|
|
4817
|
+
let waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf();
|
|
4818
|
+
// there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342)
|
|
4819
|
+
// ensure no longer than a day
|
|
4820
|
+
waitMs = Math.min(1000 * 60 * 60 * 24, waitMs);
|
|
4821
|
+
return {
|
|
4822
|
+
state: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) },
|
|
4823
|
+
waitMs,
|
|
4824
|
+
};
|
|
4825
|
+
}
|
|
4826
|
+
setTimeout(waitMs = this.computeTiming().waitMs) {
|
|
4827
|
+
// NOTE: timeout could take longer than expected if tab sleeps,
|
|
4828
|
+
// which is why we listen to 'visibilitychange'
|
|
4829
|
+
this.timeoutId = setTimeout(() => {
|
|
4830
|
+
// NOTE: timeout could also return *earlier* than expected, and we need to wait 2 ms more
|
|
4831
|
+
// This is why use use same waitMs from computeTiming, so we don't skip an interval while
|
|
4832
|
+
// .setState() is executing
|
|
4833
|
+
const timing = this.computeTiming();
|
|
4834
|
+
this.setState(timing.state, () => {
|
|
4835
|
+
this.setTimeout(timing.waitMs);
|
|
4836
|
+
});
|
|
4837
|
+
}, waitMs);
|
|
4838
|
+
}
|
|
4839
|
+
clearTimeout() {
|
|
4840
|
+
if (this.timeoutId) {
|
|
4841
|
+
clearTimeout(this.timeoutId);
|
|
4842
|
+
}
|
|
4843
|
+
}
|
|
4844
|
+
}
|
|
4845
|
+
NowTimer.contextType = ViewContextType;
|
|
4846
|
+
function buildDayRange(date) {
|
|
4847
|
+
let start = startOfDay(date);
|
|
4848
|
+
let end = addDays(start, 1);
|
|
4849
|
+
return { start, end };
|
|
4850
|
+
}
|
|
4851
|
+
|
|
4776
4852
|
class CalendarImpl {
|
|
4777
4853
|
getCurrentData() {
|
|
4778
4854
|
return this.currentDataManager.getCurrentData();
|
|
@@ -4928,7 +5004,7 @@ class CalendarImpl {
|
|
|
4928
5004
|
this.unselect();
|
|
4929
5005
|
this.dispatch({
|
|
4930
5006
|
type: 'CHANGE_DATE',
|
|
4931
|
-
dateMarker:
|
|
5007
|
+
dateMarker: state.nowManager.getDateMarker(),
|
|
4932
5008
|
});
|
|
4933
5009
|
}
|
|
4934
5010
|
gotoDate(zonedDateInput) {
|
|
@@ -5329,7 +5405,7 @@ function buildEventUiForKey(allUi, eventUiForKey, individualUi) {
|
|
|
5329
5405
|
function getDateMeta(date, todayRange, nowDate, dateProfile) {
|
|
5330
5406
|
return {
|
|
5331
5407
|
dow: date.getUTCDay(),
|
|
5332
|
-
isDisabled: Boolean(dateProfile && !rangeContainsMarker(dateProfile.activeRange, date)),
|
|
5408
|
+
isDisabled: Boolean(dateProfile && (!dateProfile.activeRange || !rangeContainsMarker(dateProfile.activeRange, date))),
|
|
5333
5409
|
isOther: Boolean(dateProfile && !rangeContainsMarker(dateProfile.currentRange, date)),
|
|
5334
5410
|
isToday: Boolean(todayRange && rangeContainsMarker(todayRange, date)),
|
|
5335
5411
|
isPast: Boolean(nowDate ? (date < nowDate) : todayRange ? (date < todayRange.start) : false),
|
|
@@ -6094,7 +6170,13 @@ class TableDateCell extends BaseComponent {
|
|
|
6094
6170
|
let navLinkAttrs = (!dayMeta.isDisabled && props.colCnt > 1)
|
|
6095
6171
|
? buildNavLinkAttrs(this.context, date)
|
|
6096
6172
|
: {};
|
|
6097
|
-
let
|
|
6173
|
+
let publicDate = dateEnv.toDate(date);
|
|
6174
|
+
// workaround for Luxon (and maybe moment) returning prior-days when start-of-day
|
|
6175
|
+
// in DST gap: https://github.com/fullcalendar/fullcalendar/issues/7633
|
|
6176
|
+
if (dateEnv.namedTimeZoneImpl) {
|
|
6177
|
+
publicDate = addMs(publicDate, 3600000); // add an hour
|
|
6178
|
+
}
|
|
6179
|
+
let renderProps = Object.assign(Object.assign(Object.assign({ date: publicDate, view: viewApi }, props.extraRenderProps), { text }), dayMeta);
|
|
6098
6180
|
return (preact.createElement(ContentContainer, { elTag: "th", elClasses: classNames, elAttrs: Object.assign({ role: 'columnheader', colSpan: props.colSpan, 'data-date': !dayMeta.isDisabled ? formatDayString(date) : undefined }, props.extraDataAttrs), renderProps: renderProps, generatorName: "dayHeaderContent", customGenerator: options.dayHeaderContent, defaultGenerator: renderInner$1, classNameGenerator: options.dayHeaderClassNames, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, (InnerContainer) => (preact.createElement("div", { className: "fc-scrollgrid-sync-inner" }, !dayMeta.isDisabled && (preact.createElement(InnerContainer, { elTag: "a", elAttrs: navLinkAttrs, elClasses: [
|
|
6099
6181
|
'fc-col-header-cell-cushion',
|
|
6100
6182
|
props.isSticky && 'fc-sticky',
|
|
@@ -6133,65 +6215,6 @@ class TableDowCell extends BaseComponent {
|
|
|
6133
6215
|
}
|
|
6134
6216
|
}
|
|
6135
6217
|
|
|
6136
|
-
class NowTimer extends preact.Component {
|
|
6137
|
-
constructor(props, context) {
|
|
6138
|
-
super(props, context);
|
|
6139
|
-
this.initialNowDate = getNow(context.options.now, context.dateEnv);
|
|
6140
|
-
this.initialNowQueriedMs = new Date().valueOf();
|
|
6141
|
-
this.state = this.computeTiming().currentState;
|
|
6142
|
-
}
|
|
6143
|
-
render() {
|
|
6144
|
-
let { props, state } = this;
|
|
6145
|
-
return props.children(state.nowDate, state.todayRange);
|
|
6146
|
-
}
|
|
6147
|
-
componentDidMount() {
|
|
6148
|
-
this.setTimeout();
|
|
6149
|
-
}
|
|
6150
|
-
componentDidUpdate(prevProps) {
|
|
6151
|
-
if (prevProps.unit !== this.props.unit) {
|
|
6152
|
-
this.clearTimeout();
|
|
6153
|
-
this.setTimeout();
|
|
6154
|
-
}
|
|
6155
|
-
}
|
|
6156
|
-
componentWillUnmount() {
|
|
6157
|
-
this.clearTimeout();
|
|
6158
|
-
}
|
|
6159
|
-
computeTiming() {
|
|
6160
|
-
let { props, context } = this;
|
|
6161
|
-
let unroundedNow = addMs(this.initialNowDate, new Date().valueOf() - this.initialNowQueriedMs);
|
|
6162
|
-
let currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit);
|
|
6163
|
-
let nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit));
|
|
6164
|
-
let waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf();
|
|
6165
|
-
// there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342)
|
|
6166
|
-
// ensure no longer than a day
|
|
6167
|
-
waitMs = Math.min(1000 * 60 * 60 * 24, waitMs);
|
|
6168
|
-
return {
|
|
6169
|
-
currentState: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) },
|
|
6170
|
-
nextState: { nowDate: nextUnitStart, todayRange: buildDayRange(nextUnitStart) },
|
|
6171
|
-
waitMs,
|
|
6172
|
-
};
|
|
6173
|
-
}
|
|
6174
|
-
setTimeout() {
|
|
6175
|
-
let { nextState, waitMs } = this.computeTiming();
|
|
6176
|
-
this.timeoutId = setTimeout(() => {
|
|
6177
|
-
this.setState(nextState, () => {
|
|
6178
|
-
this.setTimeout();
|
|
6179
|
-
});
|
|
6180
|
-
}, waitMs);
|
|
6181
|
-
}
|
|
6182
|
-
clearTimeout() {
|
|
6183
|
-
if (this.timeoutId) {
|
|
6184
|
-
clearTimeout(this.timeoutId);
|
|
6185
|
-
}
|
|
6186
|
-
}
|
|
6187
|
-
}
|
|
6188
|
-
NowTimer.contextType = ViewContextType;
|
|
6189
|
-
function buildDayRange(date) {
|
|
6190
|
-
let start = startOfDay(date);
|
|
6191
|
-
let end = addDays(start, 1);
|
|
6192
|
-
return { start, end };
|
|
6193
|
-
}
|
|
6194
|
-
|
|
6195
6218
|
class DayHeader extends BaseComponent {
|
|
6196
6219
|
constructor() {
|
|
6197
6220
|
super(...arguments);
|
|
@@ -7067,8 +7090,11 @@ function getSectionByKey(sections, key) {
|
|
|
7067
7090
|
class EventContainer extends BaseComponent {
|
|
7068
7091
|
constructor() {
|
|
7069
7092
|
super(...arguments);
|
|
7093
|
+
// memo
|
|
7094
|
+
this.buildPublicEvent = memoize((context, eventDef, eventInstance) => new EventImpl(context, eventDef, eventInstance));
|
|
7070
7095
|
this.handleEl = (el) => {
|
|
7071
7096
|
this.el = el;
|
|
7097
|
+
setRef(this.props.elRef, el);
|
|
7072
7098
|
if (el) {
|
|
7073
7099
|
setElSeg(el, this.props.seg);
|
|
7074
7100
|
}
|
|
@@ -7081,7 +7107,7 @@ class EventContainer extends BaseComponent {
|
|
|
7081
7107
|
const { eventRange } = seg;
|
|
7082
7108
|
const { ui } = eventRange;
|
|
7083
7109
|
const renderProps = {
|
|
7084
|
-
event:
|
|
7110
|
+
event: this.buildPublicEvent(context, eventRange.def, eventRange.instance),
|
|
7085
7111
|
view: context.viewApi,
|
|
7086
7112
|
timeText: props.timeText,
|
|
7087
7113
|
textColor: ui.textColor,
|
|
@@ -7100,11 +7126,11 @@ class EventContainer extends BaseComponent {
|
|
|
7100
7126
|
isDragging: Boolean(props.isDragging),
|
|
7101
7127
|
isResizing: Boolean(props.isResizing),
|
|
7102
7128
|
};
|
|
7103
|
-
return (preact.createElement(ContentContainer,
|
|
7129
|
+
return (preact.createElement(ContentContainer, { elRef: this.handleEl, elTag: props.elTag, elAttrs: props.elAttrs, elClasses: [
|
|
7104
7130
|
...getEventClassNames(renderProps),
|
|
7105
7131
|
...seg.eventRange.ui.classNames,
|
|
7106
7132
|
...(props.elClasses || []),
|
|
7107
|
-
], renderProps: renderProps, generatorName: "eventContent", customGenerator: options.eventContent, defaultGenerator: props.defaultGenerator, classNameGenerator: options.eventClassNames, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount }))
|
|
7133
|
+
], elStyle: props.elStyle, renderProps: renderProps, generatorName: "eventContent", customGenerator: options.eventContent, defaultGenerator: props.defaultGenerator, classNameGenerator: options.eventClassNames, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount }, props.children));
|
|
7108
7134
|
}
|
|
7109
7135
|
componentDidUpdate(prevProps) {
|
|
7110
7136
|
if (this.el && this.props.seg !== prevProps.seg) {
|
|
@@ -7131,6 +7157,9 @@ class StandardEvent extends BaseComponent {
|
|
|
7131
7157
|
Boolean(eventContentArg.isEndResizable) && (preact.createElement("div", { className: "fc-event-resizer fc-event-resizer-end" }))))));
|
|
7132
7158
|
}
|
|
7133
7159
|
}
|
|
7160
|
+
StandardEvent.addPropsEquality({
|
|
7161
|
+
seg: isPropsEqual,
|
|
7162
|
+
});
|
|
7134
7163
|
function renderInnerContent$1(innerProps) {
|
|
7135
7164
|
return (preact.createElement("div", { className: "fc-event-main-frame" },
|
|
7136
7165
|
innerProps.timeText && (preact.createElement("div", { className: "fc-event-time" }, innerProps.timeText)),
|
|
@@ -7145,7 +7174,7 @@ const NowIndicatorContainer = (props) => (preact.createElement(ViewContextType.C
|
|
|
7145
7174
|
date: context.dateEnv.toDate(props.date),
|
|
7146
7175
|
view: context.viewApi,
|
|
7147
7176
|
};
|
|
7148
|
-
return (preact.createElement(ContentContainer,
|
|
7177
|
+
return (preact.createElement(ContentContainer, { elRef: props.elRef, elTag: props.elTag || 'div', elAttrs: props.elAttrs, elClasses: props.elClasses, elStyle: props.elStyle, renderProps: renderProps, generatorName: "nowIndicatorContent", customGenerator: options.nowIndicatorContent, classNameGenerator: options.nowIndicatorClassNames, didMount: options.nowIndicatorDidMount, willUnmount: options.nowIndicatorWillUnmount }, props.children));
|
|
7149
7178
|
}));
|
|
7150
7179
|
|
|
7151
7180
|
const DAY_NUM_FORMAT = createFormatter({ day: 'numeric' });
|
|
@@ -7168,12 +7197,12 @@ class DayCellContainer extends BaseComponent {
|
|
|
7168
7197
|
dateEnv: context.dateEnv,
|
|
7169
7198
|
monthStartFormat: options.monthStartFormat,
|
|
7170
7199
|
});
|
|
7171
|
-
return (preact.createElement(ContentContainer, Object.assign({}, props
|
|
7200
|
+
return (preact.createElement(ContentContainer, { elRef: props.elRef, elTag: props.elTag, elAttrs: Object.assign(Object.assign({}, props.elAttrs), (renderProps.isDisabled ? {} : { 'data-date': formatDayString(props.date) })), elClasses: [
|
|
7172
7201
|
...getDayClassNames(renderProps, context.theme),
|
|
7173
7202
|
...(props.elClasses || []),
|
|
7174
|
-
],
|
|
7203
|
+
], elStyle: props.elStyle, renderProps: renderProps, generatorName: "dayCellContent", customGenerator: options.dayCellContent, defaultGenerator: props.defaultGenerator, classNameGenerator:
|
|
7175
7204
|
// don't use custom classNames if disabled
|
|
7176
|
-
renderProps.isDisabled ? undefined : options.dayCellClassNames, didMount: options.dayCellDidMount, willUnmount: options.dayCellWillUnmount }))
|
|
7205
|
+
renderProps.isDisabled ? undefined : options.dayCellClassNames, didMount: options.dayCellDidMount, willUnmount: options.dayCellWillUnmount }, props.children));
|
|
7177
7206
|
}
|
|
7178
7207
|
}
|
|
7179
7208
|
function hasCustomDayCellContent(options) {
|
|
@@ -7210,7 +7239,7 @@ const WeekNumberContainer = (props) => (preact.createElement(ViewContextType.Con
|
|
|
7210
7239
|
let text = dateEnv.format(date, format);
|
|
7211
7240
|
let renderProps = { num, text, date };
|
|
7212
7241
|
return (preact.createElement(ContentContainer // why isn't WeekNumberContentArg being auto-detected?
|
|
7213
|
-
,
|
|
7242
|
+
, { elRef: props.elRef, elTag: props.elTag, elAttrs: props.elAttrs, elClasses: props.elClasses, elStyle: props.elStyle, renderProps: renderProps, generatorName: "weekNumberContent", customGenerator: options.weekNumberContent, defaultGenerator: renderInner, classNameGenerator: options.weekNumberClassNames, didMount: options.weekNumberDidMount, willUnmount: options.weekNumberWillUnmount }, props.children));
|
|
7214
7243
|
}));
|
|
7215
7244
|
function renderInner(innerProps) {
|
|
7216
7245
|
return innerProps.text;
|
|
@@ -7632,9 +7661,7 @@ exports.getDefaultEventEnd = getDefaultEventEnd;
|
|
|
7632
7661
|
exports.getElSeg = getElSeg;
|
|
7633
7662
|
exports.getEntrySpanEnd = getEntrySpanEnd;
|
|
7634
7663
|
exports.getEventTargetViaRoot = getEventTargetViaRoot;
|
|
7635
|
-
exports.getInitialDate = getInitialDate;
|
|
7636
7664
|
exports.getIsRtlScrollbarOnLeft = getIsRtlScrollbarOnLeft;
|
|
7637
|
-
exports.getNow = getNow;
|
|
7638
7665
|
exports.getRectCenter = getRectCenter;
|
|
7639
7666
|
exports.getRelevantEvents = getRelevantEvents;
|
|
7640
7667
|
exports.getScrollGridClassNames = getScrollGridClassNames;
|
|
@@ -7699,7 +7726,6 @@ exports.rangeContainsMarker = rangeContainsMarker;
|
|
|
7699
7726
|
exports.rangeContainsRange = rangeContainsRange;
|
|
7700
7727
|
exports.rangesEqual = rangesEqual;
|
|
7701
7728
|
exports.rangesIntersect = rangesIntersect;
|
|
7702
|
-
exports.reduceCurrentDate = reduceCurrentDate;
|
|
7703
7729
|
exports.reduceEventStore = reduceEventStore;
|
|
7704
7730
|
exports.refineEventDef = refineEventDef;
|
|
7705
7731
|
exports.refineProps = refineProps;
|
package/internal-common.d.ts
CHANGED
|
@@ -389,6 +389,19 @@ declare class EventImpl implements EventApi {
|
|
|
389
389
|
}
|
|
390
390
|
declare function buildEventApis(eventStore: EventStore, context: CalendarContext, excludeInstance?: EventInstance): EventImpl[];
|
|
391
391
|
|
|
392
|
+
declare class CalendarNowManager {
|
|
393
|
+
private dateEnv?;
|
|
394
|
+
private resetListeners;
|
|
395
|
+
private nowAnchorDate?;
|
|
396
|
+
private nowAnchorQueried?;
|
|
397
|
+
private nowFn?;
|
|
398
|
+
handleInput(dateEnv: DateEnv, // will change if timezone setup changed
|
|
399
|
+
nowInput: DateInput | (() => DateInput)): void;
|
|
400
|
+
getDateMarker(): DateMarker;
|
|
401
|
+
addResetListener(handler: () => void): void;
|
|
402
|
+
removeResetListener(handler: () => void): void;
|
|
403
|
+
}
|
|
404
|
+
|
|
392
405
|
interface DateProfile {
|
|
393
406
|
currentDate: DateMarker;
|
|
394
407
|
isValid: boolean;
|
|
@@ -404,6 +417,7 @@ interface DateProfile {
|
|
|
404
417
|
}
|
|
405
418
|
interface DateProfileGeneratorProps extends DateProfileOptions {
|
|
406
419
|
dateProfileGeneratorClass: DateProfileGeneratorClass;
|
|
420
|
+
nowManager: CalendarNowManager;
|
|
407
421
|
duration: Duration;
|
|
408
422
|
durationUnit: string;
|
|
409
423
|
usesMinMaxTime: boolean;
|
|
@@ -419,7 +433,6 @@ interface DateProfileOptions {
|
|
|
419
433
|
dateIncrement?: Duration;
|
|
420
434
|
hiddenDays?: number[];
|
|
421
435
|
weekends?: boolean;
|
|
422
|
-
nowInput?: DateInput | (() => DateInput);
|
|
423
436
|
validRangeInput?: DateRangeInput | ((this: CalendarImpl, nowDate: Date) => DateRangeInput);
|
|
424
437
|
visibleRangeInput?: DateRangeInput | ((this: CalendarImpl, nowDate: Date) => DateRangeInput);
|
|
425
438
|
fixedWeekCount?: boolean;
|
|
@@ -429,7 +442,6 @@ type DateProfileGeneratorClass = {
|
|
|
429
442
|
};
|
|
430
443
|
declare class DateProfileGenerator {
|
|
431
444
|
protected props: DateProfileGeneratorProps;
|
|
432
|
-
nowDate: DateMarker;
|
|
433
445
|
isHiddenDayHash: boolean[];
|
|
434
446
|
constructor(props: DateProfileGeneratorProps);
|
|
435
447
|
buildPrev(currentDateProfile: DateProfile, currentDate: DateMarker, forceToValid?: boolean): DateProfile;
|
|
@@ -613,6 +625,7 @@ interface CalendarCurrentViewData {
|
|
|
613
625
|
}
|
|
614
626
|
type CalendarDataBase = CalendarOptionsData & CalendarCurrentViewData & CalendarDataManagerState;
|
|
615
627
|
interface CalendarData extends CalendarDataBase {
|
|
628
|
+
nowManager: CalendarNowManager;
|
|
616
629
|
viewTitle: string;
|
|
617
630
|
calendarApi: CalendarImpl;
|
|
618
631
|
dispatch: (action: Action) => void;
|
|
@@ -803,6 +816,7 @@ declare class CalendarDataManager {
|
|
|
803
816
|
private buildEventUiBases;
|
|
804
817
|
private parseContextBusinessHours;
|
|
805
818
|
private buildTitle;
|
|
819
|
+
private nowManager;
|
|
806
820
|
emitter: Emitter<Required<RefinedOptionsFromRefiners<Required<CalendarListenerRefiners>>>>;
|
|
807
821
|
private actionRunner;
|
|
808
822
|
private props;
|
|
@@ -929,7 +943,6 @@ declare abstract class PureComponent<Props = Dictionary, State = Dictionary> ext
|
|
|
929
943
|
context: ViewContext;
|
|
930
944
|
propEquality: EqualityFuncs<Props>;
|
|
931
945
|
stateEquality: EqualityFuncs<State>;
|
|
932
|
-
debug: boolean;
|
|
933
946
|
shouldComponentUpdate(nextProps: Props, nextState: State): boolean;
|
|
934
947
|
safeSetState(newState: Partial<State>): void;
|
|
935
948
|
}
|
|
@@ -1312,6 +1325,7 @@ interface ViewPropsTransformer {
|
|
|
1312
1325
|
type ViewContainerAppend = (context: CalendarContext) => ComponentChildren;
|
|
1313
1326
|
|
|
1314
1327
|
interface CalendarContext {
|
|
1328
|
+
nowManager: CalendarNowManager;
|
|
1315
1329
|
dateEnv: DateEnv;
|
|
1316
1330
|
options: BaseOptionsRefined;
|
|
1317
1331
|
pluginHooks: PluginHooks;
|
|
@@ -2740,8 +2754,6 @@ interface NowTimerState {
|
|
|
2740
2754
|
declare class NowTimer extends Component<NowTimerProps, NowTimerState> {
|
|
2741
2755
|
static contextType: any;
|
|
2742
2756
|
context: ViewContext;
|
|
2743
|
-
initialNowDate: DateMarker;
|
|
2744
|
-
initialNowQueriedMs: number;
|
|
2745
2757
|
timeoutId: any;
|
|
2746
2758
|
constructor(props: NowTimerProps, context: ViewContext);
|
|
2747
2759
|
render(): ComponentChildren;
|
|
@@ -2751,6 +2763,8 @@ declare class NowTimer extends Component<NowTimerProps, NowTimerState> {
|
|
|
2751
2763
|
private computeTiming;
|
|
2752
2764
|
private setTimeout;
|
|
2753
2765
|
private clearTimeout;
|
|
2766
|
+
private handleRefresh;
|
|
2767
|
+
private handleVisibilityChange;
|
|
2754
2768
|
}
|
|
2755
2769
|
|
|
2756
2770
|
interface StandardEventProps {
|
|
@@ -2792,6 +2806,7 @@ type EventContainerProps = ElProps & MinimalEventProps & {
|
|
|
2792
2806
|
children?: InnerContainerFunc<EventContentArg>;
|
|
2793
2807
|
};
|
|
2794
2808
|
declare class EventContainer extends BaseComponent<EventContainerProps> {
|
|
2809
|
+
private buildPublicEvent;
|
|
2795
2810
|
el: HTMLElement;
|
|
2796
2811
|
render(): createElement.JSX.Element;
|
|
2797
2812
|
handleEl: (el: HTMLElement | null) => void;
|