@fullcalendar/core 6.0.3 → 6.1.1
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.esm.js → index.cjs} +210 -174
- package/index.d.ts +1 -1
- package/index.global.js +294 -151
- package/index.global.min.js +3 -3
- package/index.js +199 -185
- package/{internal-common.esm.js → internal-common.cjs} +5143 -4788
- package/internal-common.d.ts +45 -25
- package/internal-common.js +4918 -5036
- package/internal.cjs +196 -0
- package/internal.d.ts +1 -1
- package/internal.js +3 -196
- package/locales/{af.esm.js → af.cjs} +5 -1
- package/locales/af.global.js +2 -2
- package/locales/af.global.min.js +2 -2
- package/locales/af.js +1 -5
- package/locales/{ar-dz.esm.js → ar-dz.cjs} +6 -1
- package/locales/ar-dz.global.js +3 -2
- package/locales/ar-dz.global.min.js +3 -3
- package/locales/ar-dz.js +2 -5
- package/locales/{ar-kw.esm.js → ar-kw.cjs} +6 -1
- package/locales/ar-kw.global.js +3 -2
- package/locales/ar-kw.global.min.js +3 -3
- package/locales/ar-kw.js +2 -5
- package/locales/{ar-ly.esm.js → ar-ly.cjs} +6 -1
- package/locales/ar-ly.global.js +3 -2
- package/locales/ar-ly.global.min.js +3 -3
- package/locales/ar-ly.js +2 -5
- package/locales/{ar-ma.esm.js → ar-ma.cjs} +6 -1
- package/locales/ar-ma.global.js +3 -2
- package/locales/ar-ma.global.min.js +3 -3
- package/locales/ar-ma.js +2 -5
- package/locales/{ar-sa.esm.js → ar-sa.cjs} +6 -1
- package/locales/ar-sa.global.js +3 -2
- package/locales/ar-sa.global.min.js +3 -3
- package/locales/ar-sa.js +2 -5
- package/locales/{ar-tn.esm.js → ar-tn.cjs} +6 -1
- package/locales/ar-tn.global.js +3 -2
- package/locales/ar-tn.global.min.js +3 -3
- package/locales/ar-tn.js +2 -5
- package/locales/{ar.esm.js → ar.cjs} +6 -1
- package/locales/ar.global.js +3 -2
- package/locales/ar.global.min.js +3 -3
- package/locales/ar.js +2 -5
- package/locales/{az.esm.js → az.cjs} +6 -1
- package/locales/az.global.js +3 -2
- package/locales/az.global.min.js +3 -3
- package/locales/az.js +2 -5
- package/locales/{bg.esm.js → bg.cjs} +6 -1
- package/locales/bg.global.js +3 -2
- package/locales/bg.global.min.js +3 -3
- package/locales/bg.js +2 -5
- package/locales/{bn.esm.js → bn.cjs} +6 -1
- package/locales/bn.global.js +3 -2
- package/locales/bn.global.min.js +3 -3
- package/locales/bn.js +2 -5
- package/locales/{bs.esm.js → bs.cjs} +6 -1
- package/locales/bs.global.js +3 -2
- package/locales/bs.global.min.js +3 -3
- package/locales/bs.js +2 -5
- package/locales/{ca.esm.js → ca.cjs} +6 -1
- package/locales/ca.global.js +3 -2
- package/locales/ca.global.min.js +3 -3
- package/locales/ca.js +2 -5
- package/locales/{cs.esm.js → cs.cjs} +6 -1
- package/locales/cs.global.js +3 -2
- package/locales/cs.global.min.js +3 -3
- package/locales/cs.js +2 -5
- package/locales/{cy.esm.js → cy.cjs} +5 -1
- package/locales/cy.global.js +2 -2
- package/locales/cy.global.min.js +2 -2
- package/locales/cy.js +1 -5
- package/locales/{da.esm.js → da.cjs} +6 -1
- package/locales/da.global.js +3 -2
- package/locales/da.global.min.js +3 -3
- package/locales/da.js +2 -5
- package/locales/{de-at.esm.js → de-at.cjs} +5 -1
- package/locales/de-at.global.js +2 -2
- package/locales/de-at.global.min.js +2 -2
- package/locales/de-at.js +1 -5
- package/locales/{de.esm.js → de.cjs} +5 -1
- package/locales/de.global.js +2 -2
- package/locales/de.global.min.js +2 -2
- package/locales/de.js +1 -5
- package/locales/{el.esm.js → el.cjs} +6 -1
- package/locales/el.global.js +3 -2
- package/locales/el.global.min.js +3 -3
- package/locales/el.js +2 -5
- package/locales/{en-au.esm.js → en-au.cjs} +5 -1
- package/locales/en-au.global.js +2 -2
- package/locales/en-au.global.min.js +2 -2
- package/locales/en-au.js +1 -5
- package/locales/{en-gb.esm.js → en-gb.cjs} +5 -1
- package/locales/en-gb.global.js +2 -2
- package/locales/en-gb.global.min.js +2 -2
- package/locales/en-gb.js +1 -5
- package/locales/{en-nz.esm.js → en-nz.cjs} +5 -1
- package/locales/en-nz.global.js +2 -2
- package/locales/en-nz.global.min.js +2 -2
- package/locales/en-nz.js +1 -5
- package/locales/{eo.esm.js → eo.cjs} +6 -1
- package/locales/eo.global.js +3 -2
- package/locales/eo.global.min.js +3 -3
- package/locales/eo.js +2 -5
- package/locales/{es-us.esm.js → es-us.cjs} +6 -1
- package/locales/es-us.global.js +3 -2
- package/locales/es-us.global.min.js +3 -3
- package/locales/es-us.js +2 -5
- package/locales/{es.esm.js → es.cjs} +6 -1
- package/locales/es.global.js +3 -2
- package/locales/es.global.min.js +3 -3
- package/locales/es.js +2 -5
- package/locales/{et.esm.js → et.cjs} +6 -1
- package/locales/et.global.js +3 -2
- package/locales/et.global.min.js +3 -3
- package/locales/et.js +2 -5
- package/locales/{eu.esm.js → eu.cjs} +6 -1
- package/locales/eu.global.js +3 -2
- package/locales/eu.global.min.js +3 -3
- package/locales/eu.js +2 -5
- package/locales/{fa.esm.js → fa.cjs} +6 -1
- package/locales/fa.global.js +3 -2
- package/locales/fa.global.min.js +3 -3
- package/locales/fa.js +2 -5
- package/locales/{fi.esm.js → fi.cjs} +6 -1
- package/locales/fi.global.js +3 -2
- package/locales/fi.global.min.js +3 -3
- package/locales/fi.js +2 -5
- package/locales/{fr-ca.esm.js → fr-ca.cjs} +6 -2
- package/locales/fr-ca.global.js +3 -3
- package/locales/fr-ca.global.min.js +3 -3
- package/locales/fr-ca.js +2 -6
- package/locales/{fr-ch.esm.js → fr-ch.cjs} +6 -2
- package/locales/fr-ch.global.js +3 -3
- package/locales/fr-ch.global.min.js +3 -3
- package/locales/fr-ch.js +2 -6
- package/locales/{fr.esm.js → fr.cjs} +7 -2
- package/locales/fr.global.js +4 -3
- package/locales/fr.global.min.js +3 -3
- package/locales/fr.js +3 -6
- package/locales/gl.cjs +46 -0
- package/locales/gl.global.js +22 -2
- package/locales/gl.global.min.js +3 -3
- package/locales/gl.js +21 -5
- package/locales/{he.esm.js → he.cjs} +6 -1
- package/locales/he.global.js +3 -2
- package/locales/he.global.min.js +3 -3
- package/locales/he.js +2 -5
- package/locales/{hi.esm.js → hi.cjs} +6 -1
- package/locales/hi.global.js +3 -2
- package/locales/hi.global.min.js +3 -3
- package/locales/hi.js +2 -5
- package/locales/{hr.esm.js → hr.cjs} +6 -1
- package/locales/hr.global.js +3 -2
- package/locales/hr.global.min.js +3 -3
- package/locales/hr.js +2 -5
- package/locales/{hu.esm.js → hu.cjs} +6 -1
- package/locales/hu.global.js +3 -2
- package/locales/hu.global.min.js +3 -3
- package/locales/hu.js +2 -5
- package/locales/{hy-am.esm.js → hy-am.cjs} +6 -1
- package/locales/hy-am.global.js +3 -2
- package/locales/hy-am.global.min.js +3 -3
- package/locales/hy-am.js +2 -5
- package/locales/{id.esm.js → id.cjs} +6 -1
- package/locales/id.global.js +3 -2
- package/locales/id.global.min.js +3 -3
- package/locales/id.js +2 -5
- package/locales/{is.esm.js → is.cjs} +6 -1
- package/locales/is.global.js +3 -2
- package/locales/is.global.min.js +3 -3
- package/locales/is.js +2 -5
- package/locales/{it.esm.js → it.cjs} +6 -1
- package/locales/it.global.js +3 -2
- package/locales/it.global.min.js +3 -3
- package/locales/it.js +2 -5
- package/locales/{ja.esm.js → ja.cjs} +6 -1
- package/locales/ja.global.js +3 -2
- package/locales/ja.global.min.js +3 -3
- package/locales/ja.js +2 -5
- package/locales/{ka.esm.js → ka.cjs} +6 -1
- package/locales/ka.global.js +3 -2
- package/locales/ka.global.min.js +3 -3
- package/locales/ka.js +2 -5
- package/locales/{kk.esm.js → kk.cjs} +6 -1
- package/locales/kk.global.js +3 -2
- package/locales/kk.global.min.js +3 -3
- package/locales/kk.js +2 -5
- package/locales/{km.esm.js → km.cjs} +5 -1
- package/locales/km.global.js +2 -2
- package/locales/km.global.min.js +2 -2
- package/locales/km.js +1 -5
- package/locales/{ko.esm.js → ko.cjs} +6 -1
- package/locales/ko.global.js +3 -2
- package/locales/ko.global.min.js +3 -3
- package/locales/ko.js +2 -5
- package/locales/{ku.esm.js → ku.cjs} +6 -1
- package/locales/ku.global.js +3 -2
- package/locales/ku.global.min.js +3 -3
- package/locales/ku.js +2 -5
- package/locales/{lb.esm.js → lb.cjs} +6 -1
- package/locales/lb.global.js +3 -2
- package/locales/lb.global.min.js +3 -3
- package/locales/lb.js +2 -5
- package/locales/{lt.esm.js → lt.cjs} +6 -1
- package/locales/lt.global.js +3 -2
- package/locales/lt.global.min.js +3 -3
- package/locales/lt.js +2 -5
- package/locales/{lv.esm.js → lv.cjs} +6 -1
- package/locales/lv.global.js +3 -2
- package/locales/lv.global.min.js +3 -3
- package/locales/lv.js +2 -5
- package/locales/{mk.esm.js → mk.cjs} +6 -1
- package/locales/mk.global.js +3 -2
- package/locales/mk.global.min.js +3 -3
- package/locales/mk.js +2 -5
- package/locales/{ms.esm.js → ms.cjs} +6 -1
- package/locales/ms.global.js +3 -2
- package/locales/ms.global.min.js +3 -3
- package/locales/ms.js +2 -5
- package/locales/{nb.esm.js → nb.cjs} +6 -1
- package/locales/nb.global.js +3 -2
- package/locales/nb.global.min.js +3 -3
- package/locales/nb.js +2 -5
- package/locales/{ne.esm.js → ne.cjs} +6 -1
- package/locales/ne.global.js +3 -2
- package/locales/ne.global.min.js +3 -3
- package/locales/ne.js +2 -5
- package/locales/{nl.esm.js → nl.cjs} +5 -1
- package/locales/nl.global.js +2 -2
- package/locales/nl.global.min.js +2 -2
- package/locales/nl.js +1 -5
- package/locales/{nn.esm.js → nn.cjs} +6 -1
- package/locales/nn.global.js +3 -2
- package/locales/nn.global.min.js +3 -3
- package/locales/nn.js +2 -5
- package/locales/{pl.esm.js → pl.cjs} +6 -1
- package/locales/pl.global.js +3 -2
- package/locales/pl.global.min.js +3 -3
- package/locales/pl.js +2 -5
- package/locales/pt-br.cjs +46 -0
- package/locales/pt-br.global.js +24 -2
- package/locales/pt-br.global.min.js +3 -3
- package/locales/pt-br.js +23 -5
- package/locales/{pt.esm.js → pt.cjs} +6 -1
- package/locales/pt.global.js +3 -2
- package/locales/pt.global.min.js +3 -3
- package/locales/pt.js +2 -5
- package/locales/{ro.esm.js → ro.cjs} +6 -1
- package/locales/ro.global.js +3 -2
- package/locales/ro.global.min.js +3 -3
- package/locales/ro.js +2 -5
- package/locales/{ru.esm.js → ru.cjs} +6 -1
- package/locales/ru.global.js +3 -2
- package/locales/ru.global.min.js +3 -3
- package/locales/ru.js +2 -5
- package/locales/{si-lk.esm.js → si-lk.cjs} +6 -1
- package/locales/si-lk.global.js +3 -2
- package/locales/si-lk.global.min.js +3 -3
- package/locales/si-lk.js +2 -5
- package/locales/{sk.esm.js → sk.cjs} +6 -1
- package/locales/sk.global.js +3 -2
- package/locales/sk.global.min.js +3 -3
- package/locales/sk.js +2 -5
- package/locales/{sl.esm.js → sl.cjs} +6 -1
- package/locales/sl.global.js +3 -2
- package/locales/sl.global.min.js +3 -3
- package/locales/sl.js +2 -5
- package/locales/{sm.esm.js → sm.cjs} +6 -1
- package/locales/sm.global.js +3 -2
- package/locales/sm.global.min.js +3 -3
- package/locales/sm.js +2 -5
- package/locales/{sq.esm.js → sq.cjs} +7 -2
- package/locales/sq.global.js +4 -3
- package/locales/sq.global.min.js +3 -3
- package/locales/sq.js +3 -6
- package/locales/{sr-cyrl.esm.js → sr-cyrl.cjs} +6 -1
- package/locales/sr-cyrl.global.js +3 -2
- package/locales/sr-cyrl.global.min.js +3 -3
- package/locales/sr-cyrl.js +2 -5
- package/locales/{sr.esm.js → sr.cjs} +6 -1
- package/locales/sr.global.js +3 -2
- package/locales/sr.global.min.js +3 -3
- package/locales/sr.js +2 -5
- package/locales/{sv.esm.js → sv.cjs} +6 -1
- package/locales/sv.global.js +3 -2
- package/locales/sv.global.min.js +3 -3
- package/locales/sv.js +2 -5
- package/locales/{ta-in.esm.js → ta-in.cjs} +6 -1
- package/locales/ta-in.global.js +3 -2
- package/locales/ta-in.global.min.js +3 -3
- package/locales/ta-in.js +2 -5
- package/locales/{th.esm.js → th.cjs} +5 -1
- package/locales/th.global.js +2 -2
- package/locales/th.global.min.js +2 -2
- package/locales/th.js +1 -5
- package/locales/{tr.esm.js → tr.cjs} +6 -1
- package/locales/tr.global.js +3 -2
- package/locales/tr.global.min.js +3 -3
- package/locales/tr.js +2 -5
- package/locales/ug.cjs +20 -0
- package/locales/ug.global.js +6 -2
- package/locales/ug.global.min.js +3 -3
- package/locales/ug.js +5 -5
- package/locales/{uk.esm.js → uk.cjs} +6 -1
- package/locales/uk.global.js +3 -2
- package/locales/uk.global.min.js +3 -3
- package/locales/uk.js +2 -5
- package/locales/uz-cy.cjs +28 -0
- package/locales/uz-cy.d.ts +6 -0
- package/locales/uz-cy.global.js +34 -0
- package/locales/uz-cy.global.min.js +6 -0
- package/locales/uz-cy.js +24 -0
- package/locales/uz.cjs +28 -0
- package/locales/uz.global.js +10 -2
- package/locales/uz.global.min.js +3 -3
- package/locales/uz.js +10 -6
- package/locales/{vi.esm.js → vi.cjs} +7 -2
- package/locales/vi.global.js +3 -2
- package/locales/vi.global.min.js +3 -3
- package/locales/vi.js +3 -6
- package/locales/{zh-cn.esm.js → zh-cn.cjs} +7 -2
- package/locales/zh-cn.global.js +3 -2
- package/locales/zh-cn.global.min.js +3 -3
- package/locales/zh-cn.js +3 -6
- package/locales/{zh-tw.esm.js → zh-tw.cjs} +7 -2
- package/locales/zh-tw.global.js +3 -2
- package/locales/zh-tw.global.min.js +3 -3
- package/locales/zh-tw.js +3 -6
- package/locales-all.cjs +89 -0
- package/locales-all.global.js +149 -10
- package/locales-all.global.min.js +3 -3
- package/locales-all.js +81 -84
- package/package.json +19 -14
- package/preact.cjs +22 -0
- package/preact.js +3 -22
- package/internal.esm.js +0 -3
- package/locales/gl.esm.js +0 -22
- package/locales/pt-br.esm.js +0 -20
- package/locales/ug.esm.js +0 -12
- package/locales/uz.esm.js +0 -16
- package/locales-all.esm.js +0 -84
- package/preact.esm.js +0 -3
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var internalCommon = require('./internal-common.cjs');
|
|
6
|
+
var preact = require('preact');
|
|
7
|
+
require('preact/compat');
|
|
5
8
|
|
|
6
9
|
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-unselectable{-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-moz-user-select:none;user-select:none}.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;-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::-moz-focus-inner{border-style:none;padding:0}.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)}";
|
|
7
|
-
injectStyles(css_248z);
|
|
10
|
+
internalCommon.injectStyles(css_248z);
|
|
8
11
|
|
|
9
12
|
const globalLocales = [];
|
|
10
13
|
|
|
@@ -88,7 +91,7 @@ function queryRawLocale(codes, available) {
|
|
|
88
91
|
return null;
|
|
89
92
|
}
|
|
90
93
|
function parseLocale(codeArg, codes, raw) {
|
|
91
|
-
let merged = mergeProps([MINIMAL_RAW_EN_LOCALE, raw], ['buttonText']);
|
|
94
|
+
let merged = internalCommon.mergeProps([MINIMAL_RAW_EN_LOCALE, raw], ['buttonText']);
|
|
92
95
|
delete merged.code; // don't want this part of the options
|
|
93
96
|
let { week } = merged;
|
|
94
97
|
delete merged.week;
|
|
@@ -104,7 +107,7 @@ function parseLocale(codeArg, codes, raw) {
|
|
|
104
107
|
// TODO: easier way to add new hooks? need to update a million things
|
|
105
108
|
function createPlugin(input) {
|
|
106
109
|
return {
|
|
107
|
-
id: guid(),
|
|
110
|
+
id: internalCommon.guid(),
|
|
108
111
|
name: input.name,
|
|
109
112
|
premiumReleaseDate: input.premiumReleaseDate ? new Date(input.premiumReleaseDate) : undefined,
|
|
110
113
|
deps: input.deps || [],
|
|
@@ -205,7 +208,7 @@ function buildBuildPluginHooks() {
|
|
|
205
208
|
let currentGlobalDefs = [];
|
|
206
209
|
let currentHooks;
|
|
207
210
|
return (overrideDefs, globalDefs) => {
|
|
208
|
-
if (!currentHooks || !isArraysEqual(overrideDefs, currentOverrideDefs) || !isArraysEqual(globalDefs, currentGlobalDefs)) {
|
|
211
|
+
if (!currentHooks || !internalCommon.isArraysEqual(overrideDefs, currentOverrideDefs) || !internalCommon.isArraysEqual(globalDefs, currentGlobalDefs)) {
|
|
209
212
|
currentHooks = buildPluginHooks(overrideDefs, globalDefs);
|
|
210
213
|
}
|
|
211
214
|
currentOverrideDefs = overrideDefs;
|
|
@@ -260,7 +263,7 @@ function compareOptionalDates(date0, date1) {
|
|
|
260
263
|
return new Date(Math.max(date0.valueOf(), date1.valueOf()));
|
|
261
264
|
}
|
|
262
265
|
|
|
263
|
-
class StandardTheme extends Theme {
|
|
266
|
+
class StandardTheme extends internalCommon.Theme {
|
|
264
267
|
}
|
|
265
268
|
StandardTheme.prototype.classes = {
|
|
266
269
|
root: 'fc-theme-standard',
|
|
@@ -337,7 +340,7 @@ function buildViewDef(viewType, hash, defaultConfigs, overrideConfigs) {
|
|
|
337
340
|
}
|
|
338
341
|
|
|
339
342
|
function parseViewConfigs(inputs) {
|
|
340
|
-
return mapHash(inputs, parseViewConfig);
|
|
343
|
+
return internalCommon.mapHash(inputs, parseViewConfig);
|
|
341
344
|
}
|
|
342
345
|
function parseViewConfig(input) {
|
|
343
346
|
let rawOptions = typeof input === 'function' ?
|
|
@@ -355,14 +358,14 @@ function parseViewConfig(input) {
|
|
|
355
358
|
};
|
|
356
359
|
}
|
|
357
360
|
function createViewHookComponent(options) {
|
|
358
|
-
return (viewProps) => (createElement(ViewContextType.Consumer, null, (context) => (createElement(ContentContainer, { elTag: "div", elClasses: buildViewClassNames(context.viewSpec), renderProps: Object.assign(Object.assign({}, viewProps), { nextDayThreshold: context.options.nextDayThreshold }), generatorName: undefined,
|
|
361
|
+
return (viewProps) => (preact.createElement(internalCommon.ViewContextType.Consumer, null, (context) => (preact.createElement(internalCommon.ContentContainer, { elTag: "div", elClasses: internalCommon.buildViewClassNames(context.viewSpec), renderProps: Object.assign(Object.assign({}, viewProps), { nextDayThreshold: context.options.nextDayThreshold }), generatorName: undefined, customGenerator: options.content, classNameGenerator: options.classNames, didMount: options.didMount, willUnmount: options.willUnmount }))));
|
|
359
362
|
}
|
|
360
363
|
|
|
361
364
|
function buildViewSpecs(defaultInputs, optionOverrides, dynamicOptionOverrides, localeDefaults) {
|
|
362
365
|
let defaultConfigs = parseViewConfigs(defaultInputs);
|
|
363
366
|
let overrideConfigs = parseViewConfigs(optionOverrides.views);
|
|
364
367
|
let viewDefs = compileViewDefs(defaultConfigs, overrideConfigs);
|
|
365
|
-
return mapHash(viewDefs, (viewDef) => buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults));
|
|
368
|
+
return internalCommon.mapHash(viewDefs, (viewDef) => buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults));
|
|
366
369
|
}
|
|
367
370
|
function buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults) {
|
|
368
371
|
let durationInput = viewDef.overrides.duration ||
|
|
@@ -376,7 +379,7 @@ function buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionO
|
|
|
376
379
|
if (durationInput) {
|
|
377
380
|
duration = createDurationCached(durationInput);
|
|
378
381
|
if (duration) { // valid?
|
|
379
|
-
let denom = greatestDurationDenominator(duration);
|
|
382
|
+
let denom = internalCommon.greatestDurationDenominator(duration);
|
|
380
383
|
durationUnit = denom.unit;
|
|
381
384
|
if (denom.value === 1) {
|
|
382
385
|
singleUnit = durationUnit;
|
|
@@ -425,7 +428,7 @@ function buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionO
|
|
|
425
428
|
viewDef.overrides.buttonText,
|
|
426
429
|
buttonTextDefault: queryButtonText(localeDefaults) ||
|
|
427
430
|
viewDef.defaults.buttonText ||
|
|
428
|
-
queryButtonText(BASE_OPTION_DEFAULTS) ||
|
|
431
|
+
queryButtonText(internalCommon.BASE_OPTION_DEFAULTS) ||
|
|
429
432
|
viewDef.type,
|
|
430
433
|
// not DRY
|
|
431
434
|
buttonTitleOverride: queryButtonTitle(dynamicOptionOverrides) ||
|
|
@@ -433,7 +436,7 @@ function buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionO
|
|
|
433
436
|
viewDef.overrides.buttonHint,
|
|
434
437
|
buttonTitleDefault: queryButtonTitle(localeDefaults) ||
|
|
435
438
|
viewDef.defaults.buttonHint ||
|
|
436
|
-
queryButtonTitle(BASE_OPTION_DEFAULTS),
|
|
439
|
+
queryButtonTitle(internalCommon.BASE_OPTION_DEFAULTS),
|
|
437
440
|
// will eventually fall back to buttonText
|
|
438
441
|
};
|
|
439
442
|
}
|
|
@@ -443,7 +446,7 @@ function createDurationCached(durationInput) {
|
|
|
443
446
|
let json = JSON.stringify(durationInput);
|
|
444
447
|
let res = durationInputMap[json];
|
|
445
448
|
if (res === undefined) {
|
|
446
|
-
res = createDuration(durationInput);
|
|
449
|
+
res = internalCommon.createDuration(durationInput);
|
|
447
450
|
durationInputMap[json] = res;
|
|
448
451
|
}
|
|
449
452
|
return res;
|
|
@@ -510,7 +513,7 @@ function reduceEventSources(eventSources, action, dateProfile, context) {
|
|
|
510
513
|
return eventSources;
|
|
511
514
|
case 'FETCH_EVENT_SOURCES':
|
|
512
515
|
return fetchSourcesByIds(eventSources, action.sourceIds ? // why no type?
|
|
513
|
-
arrayToHash(action.sourceIds) :
|
|
516
|
+
internalCommon.arrayToHash(action.sourceIds) :
|
|
514
517
|
excludeStaticSources(eventSources, context), activeRange, action.isRefetch || false, context);
|
|
515
518
|
case 'RECEIVE_EVENTS':
|
|
516
519
|
case 'RECEIVE_EVENT_ERROR':
|
|
@@ -544,10 +547,10 @@ function addSources(eventSourceHash, sources, fetchRange, context) {
|
|
|
544
547
|
return Object.assign(Object.assign({}, eventSourceHash), hash);
|
|
545
548
|
}
|
|
546
549
|
function removeSource(eventSourceHash, sourceId) {
|
|
547
|
-
return filterHash(eventSourceHash, (eventSource) => eventSource.sourceId !== sourceId);
|
|
550
|
+
return internalCommon.filterHash(eventSourceHash, (eventSource) => eventSource.sourceId !== sourceId);
|
|
548
551
|
}
|
|
549
552
|
function fetchDirtySources(sourceHash, fetchRange, context) {
|
|
550
|
-
return fetchSourcesByIds(sourceHash, filterHash(sourceHash, (eventSource) => isSourceDirty(eventSource, fetchRange, context)), fetchRange, false, context);
|
|
553
|
+
return fetchSourcesByIds(sourceHash, internalCommon.filterHash(sourceHash, (eventSource) => isSourceDirty(eventSource, fetchRange, context)), fetchRange, false, context);
|
|
551
554
|
}
|
|
552
555
|
function isSourceDirty(eventSource, fetchRange, context) {
|
|
553
556
|
if (!doesSourceNeedRange(eventSource, context)) {
|
|
@@ -575,7 +578,7 @@ function fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, isRefetch, con
|
|
|
575
578
|
function fetchSource(eventSource, fetchRange, isRefetch, context) {
|
|
576
579
|
let { options, calendarApi } = context;
|
|
577
580
|
let sourceDef = context.pluginHooks.eventSourceDefs[eventSource.sourceDefId];
|
|
578
|
-
let fetchId = guid();
|
|
581
|
+
let fetchId = internalCommon.guid();
|
|
579
582
|
sourceDef.fetch({
|
|
580
583
|
eventSource,
|
|
581
584
|
range: fetchRange,
|
|
@@ -628,10 +631,10 @@ function receiveResponse(sourceHash, sourceId, fetchId, fetchRange) {
|
|
|
628
631
|
return sourceHash;
|
|
629
632
|
}
|
|
630
633
|
function excludeStaticSources(eventSources, context) {
|
|
631
|
-
return filterHash(eventSources, (eventSource) => doesSourceNeedRange(eventSource, context));
|
|
634
|
+
return internalCommon.filterHash(eventSources, (eventSource) => doesSourceNeedRange(eventSource, context));
|
|
632
635
|
}
|
|
633
636
|
function parseInitialSources(rawOptions, context) {
|
|
634
|
-
let refiners = buildEventSourceRefiners(context);
|
|
637
|
+
let refiners = internalCommon.buildEventSourceRefiners(context);
|
|
635
638
|
let rawSources = [].concat(rawOptions.eventSources || []);
|
|
636
639
|
let sources = []; // parsed
|
|
637
640
|
if (rawOptions.initialEvents) {
|
|
@@ -641,7 +644,7 @@ function parseInitialSources(rawOptions, context) {
|
|
|
641
644
|
rawSources.unshift(rawOptions.events);
|
|
642
645
|
}
|
|
643
646
|
for (let rawSource of rawSources) {
|
|
644
|
-
let source = parseEventSource(rawSource, context, refiners);
|
|
647
|
+
let source = internalCommon.parseEventSource(rawSource, context, refiners);
|
|
645
648
|
if (source) {
|
|
646
649
|
sources.push(source);
|
|
647
650
|
}
|
|
@@ -775,7 +778,7 @@ theme, viewSpecs, calendarApi) {
|
|
|
775
778
|
(buttonText = viewSpec.buttonTextDefault);
|
|
776
779
|
let textFallback = viewSpec.buttonTextOverride ||
|
|
777
780
|
viewSpec.buttonTextDefault;
|
|
778
|
-
buttonHint = formatWithOrdinals(viewSpec.buttonTitleOverride ||
|
|
781
|
+
buttonHint = internalCommon.formatWithOrdinals(viewSpec.buttonTitleOverride ||
|
|
779
782
|
viewSpec.buttonTitleDefault ||
|
|
780
783
|
calendarOptions.viewHint, [textFallback, buttonName], // view-name = buttonName
|
|
781
784
|
textFallback);
|
|
@@ -789,14 +792,14 @@ theme, viewSpecs, calendarApi) {
|
|
|
789
792
|
(buttonText = calendarButtonText[buttonName]); // everything else is considered default
|
|
790
793
|
if (buttonName === 'prevYear' || buttonName === 'nextYear') {
|
|
791
794
|
let prevOrNext = buttonName === 'prevYear' ? 'prev' : 'next';
|
|
792
|
-
buttonHint = formatWithOrdinals(calendarButtonHintOverrides[prevOrNext] ||
|
|
795
|
+
buttonHint = internalCommon.formatWithOrdinals(calendarButtonHintOverrides[prevOrNext] ||
|
|
793
796
|
calendarButtonHints[prevOrNext], [
|
|
794
797
|
calendarButtonText.year || 'year',
|
|
795
798
|
'year',
|
|
796
799
|
], calendarButtonText[buttonName]);
|
|
797
800
|
}
|
|
798
801
|
else {
|
|
799
|
-
buttonHint = (navUnit) => formatWithOrdinals(calendarButtonHintOverrides[buttonName] ||
|
|
802
|
+
buttonHint = (navUnit) => internalCommon.formatWithOrdinals(calendarButtonHintOverrides[buttonName] ||
|
|
800
803
|
calendarButtonHints[buttonName], [
|
|
801
804
|
calendarButtonText[navUnit] || navUnit,
|
|
802
805
|
navUnit,
|
|
@@ -867,7 +870,7 @@ let eventSourceDef$1 = {
|
|
|
867
870
|
fetch(arg, successCallback, errorCallback) {
|
|
868
871
|
const { dateEnv } = arg.context;
|
|
869
872
|
const func = arg.eventSource.meta;
|
|
870
|
-
unpromisify(func.bind(null, buildRangeApiWithTimeZone(arg.range, dateEnv)), (rawEvents) => successCallback({ rawEvents }), errorCallback);
|
|
873
|
+
internalCommon.unpromisify(func.bind(null, internalCommon.buildRangeApiWithTimeZone(arg.range, dateEnv)), (rawEvents) => successCallback({ rawEvents }), errorCallback);
|
|
871
874
|
},
|
|
872
875
|
};
|
|
873
876
|
const funcEventSourcePlugin = createPlugin({
|
|
@@ -877,7 +880,7 @@ const funcEventSourcePlugin = createPlugin({
|
|
|
877
880
|
|
|
878
881
|
const JSON_FEED_EVENT_SOURCE_REFINERS = {
|
|
879
882
|
method: String,
|
|
880
|
-
extraParams: identity,
|
|
883
|
+
extraParams: internalCommon.identity,
|
|
881
884
|
startParam: String,
|
|
882
885
|
endParam: String,
|
|
883
886
|
timeZoneParam: String,
|
|
@@ -901,7 +904,7 @@ let eventSourceDef = {
|
|
|
901
904
|
fetch(arg, successCallback, errorCallback) {
|
|
902
905
|
const { meta } = arg.eventSource;
|
|
903
906
|
const requestParams = buildRequestParams(meta, arg.range, arg.context);
|
|
904
|
-
requestJson(meta.method, meta.url, requestParams).then(([rawEvents, response]) => {
|
|
907
|
+
internalCommon.requestJson(meta.method, meta.url, requestParams).then(([rawEvents, response]) => {
|
|
905
908
|
successCallback({ rawEvents, response });
|
|
906
909
|
}, errorCallback);
|
|
907
910
|
},
|
|
@@ -949,12 +952,12 @@ function buildRequestParams(meta, range, context) {
|
|
|
949
952
|
}
|
|
950
953
|
|
|
951
954
|
const SIMPLE_RECURRING_REFINERS = {
|
|
952
|
-
daysOfWeek: identity,
|
|
953
|
-
startTime: createDuration,
|
|
954
|
-
endTime: createDuration,
|
|
955
|
-
duration: createDuration,
|
|
956
|
-
startRecur: identity,
|
|
957
|
-
endRecur: identity,
|
|
955
|
+
daysOfWeek: internalCommon.identity,
|
|
956
|
+
startTime: internalCommon.createDuration,
|
|
957
|
+
endTime: internalCommon.createDuration,
|
|
958
|
+
duration: internalCommon.createDuration,
|
|
959
|
+
startRecur: internalCommon.identity,
|
|
960
|
+
endRecur: internalCommon.identity,
|
|
958
961
|
};
|
|
959
962
|
|
|
960
963
|
let recurring = {
|
|
@@ -972,7 +975,7 @@ let recurring = {
|
|
|
972
975
|
duration = refined.duration;
|
|
973
976
|
}
|
|
974
977
|
if (!duration && refined.startTime && refined.endTime) {
|
|
975
|
-
duration = subtractDurations(refined.endTime, refined.startTime);
|
|
978
|
+
duration = internalCommon.subtractDurations(refined.endTime, refined.startTime);
|
|
976
979
|
}
|
|
977
980
|
return {
|
|
978
981
|
allDayGuess: Boolean(!refined.startTime && !refined.endTime),
|
|
@@ -983,7 +986,7 @@ let recurring = {
|
|
|
983
986
|
return null;
|
|
984
987
|
},
|
|
985
988
|
expand(typeData, framingRange, dateEnv) {
|
|
986
|
-
let clippedFramingRange = intersectRanges(framingRange, { start: typeData.startRecur, end: typeData.endRecur });
|
|
989
|
+
let clippedFramingRange = internalCommon.intersectRanges(framingRange, { start: typeData.startRecur, end: typeData.endRecur });
|
|
987
990
|
if (clippedFramingRange) {
|
|
988
991
|
return expandRanges(typeData.daysOfWeek, typeData.startTime, clippedFramingRange, dateEnv);
|
|
989
992
|
}
|
|
@@ -996,8 +999,8 @@ const simpleRecurringEventsPlugin = createPlugin({
|
|
|
996
999
|
eventRefiners: SIMPLE_RECURRING_REFINERS,
|
|
997
1000
|
});
|
|
998
1001
|
function expandRanges(daysOfWeek, startTime, framingRange, dateEnv) {
|
|
999
|
-
let dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null;
|
|
1000
|
-
let dayMarker = startOfDay(framingRange.start);
|
|
1002
|
+
let dowHash = daysOfWeek ? internalCommon.arrayToHash(daysOfWeek) : null;
|
|
1003
|
+
let dayMarker = internalCommon.startOfDay(framingRange.start);
|
|
1001
1004
|
let endMarker = framingRange.end;
|
|
1002
1005
|
let instanceStarts = [];
|
|
1003
1006
|
while (dayMarker < endMarker) {
|
|
@@ -1012,7 +1015,7 @@ function expandRanges(daysOfWeek, startTime, framingRange, dateEnv) {
|
|
|
1012
1015
|
}
|
|
1013
1016
|
instanceStarts.push(instanceStart);
|
|
1014
1017
|
}
|
|
1015
|
-
dayMarker = addDays(dayMarker, 1);
|
|
1018
|
+
dayMarker = internalCommon.addDays(dayMarker, 1);
|
|
1016
1019
|
}
|
|
1017
1020
|
return instanceStarts;
|
|
1018
1021
|
}
|
|
@@ -1030,7 +1033,17 @@ const changeHandlerPlugin = createPlugin({
|
|
|
1030
1033
|
BUG: if `event` was supplied, all previously-given `eventSources` will be wiped out
|
|
1031
1034
|
*/
|
|
1032
1035
|
function handleEventSources(inputs, context) {
|
|
1033
|
-
let unfoundSources = hashValuesToArray(context.getCurrentData().eventSources);
|
|
1036
|
+
let unfoundSources = internalCommon.hashValuesToArray(context.getCurrentData().eventSources);
|
|
1037
|
+
if (unfoundSources.length === 1 &&
|
|
1038
|
+
inputs.length === 1 &&
|
|
1039
|
+
Array.isArray(unfoundSources[0]._raw) &&
|
|
1040
|
+
Array.isArray(inputs[0])) {
|
|
1041
|
+
context.dispatch({
|
|
1042
|
+
type: 'RESET_RAW_EVENTS',
|
|
1043
|
+
sourceId: unfoundSources[0].sourceId,
|
|
1044
|
+
rawEvents: inputs[0],
|
|
1045
|
+
});
|
|
1046
|
+
}
|
|
1034
1047
|
let newInputs = [];
|
|
1035
1048
|
for (let input of inputs) {
|
|
1036
1049
|
let inputFound = false;
|
|
@@ -1057,13 +1070,13 @@ function handleEventSources(inputs, context) {
|
|
|
1057
1070
|
}
|
|
1058
1071
|
|
|
1059
1072
|
function handleDateProfile(dateProfile, context) {
|
|
1060
|
-
context.emitter.trigger('datesSet', Object.assign(Object.assign({}, buildRangeApiWithTimeZone(dateProfile.activeRange, context.dateEnv)), { view: context.viewApi }));
|
|
1073
|
+
context.emitter.trigger('datesSet', Object.assign(Object.assign({}, internalCommon.buildRangeApiWithTimeZone(dateProfile.activeRange, context.dateEnv)), { view: context.viewApi }));
|
|
1061
1074
|
}
|
|
1062
1075
|
|
|
1063
1076
|
function handleEventStore(eventStore, context) {
|
|
1064
1077
|
let { emitter } = context;
|
|
1065
1078
|
if (emitter.hasHandlers('eventsSet')) {
|
|
1066
|
-
emitter.trigger('eventsSet', buildEventApis(eventStore, context));
|
|
1079
|
+
emitter.trigger('eventsSet', internalCommon.buildEventApis(eventStore, context));
|
|
1067
1080
|
}
|
|
1068
1081
|
}
|
|
1069
1082
|
|
|
@@ -1094,7 +1107,7 @@ class TaskRunner {
|
|
|
1094
1107
|
this.runTaskOption = runTaskOption;
|
|
1095
1108
|
this.drainedOption = drainedOption;
|
|
1096
1109
|
this.queue = [];
|
|
1097
|
-
this.delayedRunner = new DelayedRunner(this.drain.bind(this));
|
|
1110
|
+
this.delayedRunner = new internalCommon.DelayedRunner(this.drain.bind(this));
|
|
1098
1111
|
}
|
|
1099
1112
|
request(task, delay) {
|
|
1100
1113
|
this.queue.push(task);
|
|
@@ -1140,7 +1153,7 @@ function buildTitle(dateProfile, viewOptions, dateEnv) {
|
|
|
1140
1153
|
else { // for day units or smaller, use the actual day range
|
|
1141
1154
|
range = dateProfile.activeRange;
|
|
1142
1155
|
}
|
|
1143
|
-
return dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat || buildTitleFormat(dateProfile)), {
|
|
1156
|
+
return dateEnv.formatRange(range.start, range.end, internalCommon.createFormatter(viewOptions.titleFormat || buildTitleFormat(dateProfile)), {
|
|
1144
1157
|
isEndExclusive: dateProfile.isRangeAllDay,
|
|
1145
1158
|
defaultSeparator: viewOptions.titleRangeSeparator,
|
|
1146
1159
|
});
|
|
@@ -1155,7 +1168,7 @@ function buildTitleFormat(dateProfile) {
|
|
|
1155
1168
|
if (currentRangeUnit === 'month') {
|
|
1156
1169
|
return { year: 'numeric', month: 'long' }; // like "September 2014"
|
|
1157
1170
|
}
|
|
1158
|
-
let days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end);
|
|
1171
|
+
let days = internalCommon.diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end);
|
|
1159
1172
|
if (days !== null && days > 1) {
|
|
1160
1173
|
// multi-day range. shorter, like "Sep 9 - 10 2014"
|
|
1161
1174
|
return { year: 'numeric', month: 'short', day: 'numeric' };
|
|
@@ -1168,29 +1181,30 @@ function buildTitleFormat(dateProfile) {
|
|
|
1168
1181
|
// also, whatever is happening in constructor, have it happen in action queue too
|
|
1169
1182
|
class CalendarDataManager {
|
|
1170
1183
|
constructor(props) {
|
|
1171
|
-
this.
|
|
1172
|
-
this.
|
|
1173
|
-
this.
|
|
1174
|
-
this.buildLocale = memoize(buildLocale);
|
|
1184
|
+
this.computeCurrentViewData = internalCommon.memoize(this._computeCurrentViewData);
|
|
1185
|
+
this.organizeRawLocales = internalCommon.memoize(organizeRawLocales);
|
|
1186
|
+
this.buildLocale = internalCommon.memoize(buildLocale);
|
|
1175
1187
|
this.buildPluginHooks = buildBuildPluginHooks();
|
|
1176
|
-
this.buildDateEnv = memoize(buildDateEnv$1);
|
|
1177
|
-
this.buildTheme = memoize(buildTheme);
|
|
1178
|
-
this.parseToolbars = memoize(parseToolbars);
|
|
1179
|
-
this.buildViewSpecs = memoize(buildViewSpecs);
|
|
1180
|
-
this.buildDateProfileGenerator = memoizeObjArg(buildDateProfileGenerator);
|
|
1181
|
-
this.buildViewApi = memoize(buildViewApi);
|
|
1182
|
-
this.buildViewUiProps = memoizeObjArg(buildViewUiProps);
|
|
1183
|
-
this.buildEventUiBySource = memoize(buildEventUiBySource, isPropsEqual);
|
|
1184
|
-
this.buildEventUiBases = memoize(buildEventUiBases);
|
|
1185
|
-
this.parseContextBusinessHours = memoizeObjArg(parseContextBusinessHours);
|
|
1186
|
-
this.buildTitle = memoize(buildTitle);
|
|
1187
|
-
this.emitter = new Emitter();
|
|
1188
|
+
this.buildDateEnv = internalCommon.memoize(buildDateEnv$1);
|
|
1189
|
+
this.buildTheme = internalCommon.memoize(buildTheme);
|
|
1190
|
+
this.parseToolbars = internalCommon.memoize(parseToolbars);
|
|
1191
|
+
this.buildViewSpecs = internalCommon.memoize(buildViewSpecs);
|
|
1192
|
+
this.buildDateProfileGenerator = internalCommon.memoizeObjArg(buildDateProfileGenerator);
|
|
1193
|
+
this.buildViewApi = internalCommon.memoize(buildViewApi);
|
|
1194
|
+
this.buildViewUiProps = internalCommon.memoizeObjArg(buildViewUiProps);
|
|
1195
|
+
this.buildEventUiBySource = internalCommon.memoize(buildEventUiBySource, internalCommon.isPropsEqual);
|
|
1196
|
+
this.buildEventUiBases = internalCommon.memoize(buildEventUiBases);
|
|
1197
|
+
this.parseContextBusinessHours = internalCommon.memoizeObjArg(parseContextBusinessHours);
|
|
1198
|
+
this.buildTitle = internalCommon.memoize(buildTitle);
|
|
1199
|
+
this.emitter = new internalCommon.Emitter();
|
|
1188
1200
|
this.actionRunner = new TaskRunner(this._handleAction.bind(this), this.updateData.bind(this));
|
|
1189
1201
|
this.currentCalendarOptionsInput = {};
|
|
1190
1202
|
this.currentCalendarOptionsRefined = {};
|
|
1191
1203
|
this.currentViewOptionsInput = {};
|
|
1192
1204
|
this.currentViewOptionsRefined = {};
|
|
1193
1205
|
this.currentCalendarOptionsRefiners = {};
|
|
1206
|
+
this.optionsForRefining = [];
|
|
1207
|
+
this.optionsForHandling = [];
|
|
1194
1208
|
this.getCurrentData = () => this.data;
|
|
1195
1209
|
this.dispatch = (action) => {
|
|
1196
1210
|
this.actionRunner.request(action); // protects against recursive calls to _handleAction
|
|
@@ -1206,9 +1220,9 @@ class CalendarDataManager {
|
|
|
1206
1220
|
props.calendarApi.currentDataManager = this;
|
|
1207
1221
|
this.emitter.setThisContext(props.calendarApi);
|
|
1208
1222
|
this.emitter.setOptions(currentViewData.options);
|
|
1209
|
-
let currentDate = getInitialDate(optionsData.calendarOptions, optionsData.dateEnv);
|
|
1223
|
+
let currentDate = internalCommon.getInitialDate(optionsData.calendarOptions, optionsData.dateEnv);
|
|
1210
1224
|
let dateProfile = currentViewData.dateProfileGenerator.build(currentDate);
|
|
1211
|
-
if (!rangeContainsMarker(dateProfile.activeRange, currentDate)) {
|
|
1225
|
+
if (!internalCommon.rangeContainsMarker(dateProfile.activeRange, currentDate)) {
|
|
1212
1226
|
currentDate = dateProfile.currentRange.start;
|
|
1213
1227
|
}
|
|
1214
1228
|
let calendarContext = {
|
|
@@ -1234,8 +1248,8 @@ class CalendarDataManager {
|
|
|
1234
1248
|
businessHours: this.parseContextBusinessHours(calendarContext),
|
|
1235
1249
|
eventSources,
|
|
1236
1250
|
eventUiBases: {},
|
|
1237
|
-
eventStore: createEmptyEventStore(),
|
|
1238
|
-
renderableEventStore: createEmptyEventStore(),
|
|
1251
|
+
eventStore: internalCommon.createEmptyEventStore(),
|
|
1252
|
+
renderableEventStore: internalCommon.createEmptyEventStore(),
|
|
1239
1253
|
dateSelection: null,
|
|
1240
1254
|
eventSelection: '',
|
|
1241
1255
|
eventDrag: null,
|
|
@@ -1253,13 +1267,20 @@ class CalendarDataManager {
|
|
|
1253
1267
|
this.updateData();
|
|
1254
1268
|
this.actionRunner.resume();
|
|
1255
1269
|
}
|
|
1256
|
-
resetOptions(optionOverrides,
|
|
1270
|
+
resetOptions(optionOverrides, changedOptionNames) {
|
|
1257
1271
|
let { props } = this;
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1272
|
+
if (changedOptionNames === undefined) {
|
|
1273
|
+
props.optionOverrides = optionOverrides;
|
|
1274
|
+
}
|
|
1275
|
+
else {
|
|
1276
|
+
props.optionOverrides = Object.assign(Object.assign({}, (props.optionOverrides || {})), optionOverrides);
|
|
1277
|
+
this.optionsForRefining.push(...changedOptionNames);
|
|
1278
|
+
}
|
|
1279
|
+
if (changedOptionNames === undefined || changedOptionNames.length) {
|
|
1280
|
+
this.actionRunner.request({
|
|
1281
|
+
type: 'NOTHING',
|
|
1282
|
+
});
|
|
1283
|
+
}
|
|
1263
1284
|
}
|
|
1264
1285
|
_handleAction(action) {
|
|
1265
1286
|
let { props, state, emitter } = this;
|
|
@@ -1285,15 +1306,15 @@ class CalendarDataManager {
|
|
|
1285
1306
|
if (this.data && this.data.dateProfileGenerator !== currentViewData.dateProfileGenerator) { // hack
|
|
1286
1307
|
dateProfile = currentViewData.dateProfileGenerator.build(currentDate);
|
|
1287
1308
|
}
|
|
1288
|
-
currentDate = reduceCurrentDate(currentDate, action);
|
|
1309
|
+
currentDate = internalCommon.reduceCurrentDate(currentDate, action);
|
|
1289
1310
|
dateProfile = reduceDateProfile(dateProfile, action, currentDate, currentViewData.dateProfileGenerator);
|
|
1290
1311
|
if (action.type === 'PREV' || // TODO: move this logic into DateProfileGenerator
|
|
1291
1312
|
action.type === 'NEXT' || // "
|
|
1292
|
-
!rangeContainsMarker(dateProfile.currentRange, currentDate)) {
|
|
1313
|
+
!internalCommon.rangeContainsMarker(dateProfile.currentRange, currentDate)) {
|
|
1293
1314
|
currentDate = dateProfile.currentRange.start;
|
|
1294
1315
|
}
|
|
1295
1316
|
let eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendarContext);
|
|
1296
|
-
let eventStore = reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendarContext);
|
|
1317
|
+
let eventStore = internalCommon.reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendarContext);
|
|
1297
1318
|
let isEventsLoading = computeEventSourcesLoading(eventSources); // BAD. also called in this func in computeIsLoading
|
|
1298
1319
|
let renderableEventStore = (isEventsLoading && !currentViewData.options.progressiveEventRendering) ?
|
|
1299
1320
|
(state.renderableEventStore || eventStore) : // try from previous state
|
|
@@ -1348,27 +1369,34 @@ class CalendarDataManager {
|
|
|
1348
1369
|
if (oldCalendarOptions.timeZone !== newCalendarOptions.timeZone) {
|
|
1349
1370
|
// hack
|
|
1350
1371
|
state.eventSources = data.eventSources = reduceEventSourcesNewTimeZone(data.eventSources, state.dateProfile, data);
|
|
1351
|
-
state.eventStore = data.eventStore = rezoneEventStoreDates(data.eventStore, oldData.dateEnv, data.dateEnv);
|
|
1372
|
+
state.eventStore = data.eventStore = internalCommon.rezoneEventStoreDates(data.eventStore, oldData.dateEnv, data.dateEnv);
|
|
1352
1373
|
}
|
|
1353
1374
|
for (let optionName in changeHandlers) {
|
|
1354
|
-
if (
|
|
1375
|
+
if (this.optionsForHandling.indexOf(optionName) !== -1 ||
|
|
1376
|
+
oldCalendarOptions[optionName] !== newCalendarOptions[optionName]) {
|
|
1355
1377
|
changeHandlers[optionName](newCalendarOptions[optionName], data);
|
|
1356
1378
|
}
|
|
1357
1379
|
}
|
|
1358
1380
|
}
|
|
1381
|
+
this.optionsForHandling = [];
|
|
1359
1382
|
if (props.onData) {
|
|
1360
1383
|
props.onData(data);
|
|
1361
1384
|
}
|
|
1362
1385
|
}
|
|
1363
|
-
|
|
1386
|
+
computeOptionsData(optionOverrides, dynamicOptionOverrides, calendarApi) {
|
|
1364
1387
|
// TODO: blacklist options that are handled by optionChangeHandlers
|
|
1388
|
+
if (!this.optionsForRefining.length &&
|
|
1389
|
+
optionOverrides === this.stableOptionOverrides &&
|
|
1390
|
+
dynamicOptionOverrides === this.stableDynamicOptionOverrides) {
|
|
1391
|
+
return this.stableCalendarOptionsData;
|
|
1392
|
+
}
|
|
1365
1393
|
let { refinedOptions, pluginHooks, localeDefaults, availableLocaleData, extra, } = this.processRawCalendarOptions(optionOverrides, dynamicOptionOverrides);
|
|
1366
1394
|
warnUnknownOptions(extra);
|
|
1367
1395
|
let dateEnv = this.buildDateEnv(refinedOptions.timeZone, refinedOptions.locale, refinedOptions.weekNumberCalculation, refinedOptions.firstDay, refinedOptions.weekText, pluginHooks, availableLocaleData, refinedOptions.defaultRangeSeparator);
|
|
1368
|
-
let viewSpecs = this.buildViewSpecs(pluginHooks.views,
|
|
1396
|
+
let viewSpecs = this.buildViewSpecs(pluginHooks.views, this.stableOptionOverrides, this.stableDynamicOptionOverrides, localeDefaults);
|
|
1369
1397
|
let theme = this.buildTheme(refinedOptions, pluginHooks);
|
|
1370
|
-
let toolbarConfig = this.parseToolbars(refinedOptions,
|
|
1371
|
-
return {
|
|
1398
|
+
let toolbarConfig = this.parseToolbars(refinedOptions, this.stableOptionOverrides, theme, viewSpecs, calendarApi);
|
|
1399
|
+
return this.stableCalendarOptionsData = {
|
|
1372
1400
|
calendarOptions: refinedOptions,
|
|
1373
1401
|
pluginHooks,
|
|
1374
1402
|
dateEnv,
|
|
@@ -1381,8 +1409,8 @@ class CalendarDataManager {
|
|
|
1381
1409
|
}
|
|
1382
1410
|
// always called from behind a memoizer
|
|
1383
1411
|
processRawCalendarOptions(optionOverrides, dynamicOptionOverrides) {
|
|
1384
|
-
let { locales, locale } = mergeRawOptions([
|
|
1385
|
-
BASE_OPTION_DEFAULTS,
|
|
1412
|
+
let { locales, locale } = internalCommon.mergeRawOptions([
|
|
1413
|
+
internalCommon.BASE_OPTION_DEFAULTS,
|
|
1386
1414
|
optionOverrides,
|
|
1387
1415
|
dynamicOptionOverrides,
|
|
1388
1416
|
]);
|
|
@@ -1390,10 +1418,10 @@ class CalendarDataManager {
|
|
|
1390
1418
|
let availableRawLocales = availableLocaleData.map;
|
|
1391
1419
|
let localeDefaults = this.buildLocale(locale || availableLocaleData.defaultCode, availableRawLocales).options;
|
|
1392
1420
|
let pluginHooks = this.buildPluginHooks(optionOverrides.plugins || [], globalPlugins);
|
|
1393
|
-
let refiners = this.currentCalendarOptionsRefiners = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);
|
|
1421
|
+
let refiners = this.currentCalendarOptionsRefiners = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, internalCommon.BASE_OPTION_REFINERS), internalCommon.CALENDAR_LISTENER_REFINERS), internalCommon.CALENDAR_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);
|
|
1394
1422
|
let extra = {};
|
|
1395
|
-
let raw = mergeRawOptions([
|
|
1396
|
-
BASE_OPTION_DEFAULTS,
|
|
1423
|
+
let raw = internalCommon.mergeRawOptions([
|
|
1424
|
+
internalCommon.BASE_OPTION_DEFAULTS,
|
|
1397
1425
|
localeDefaults,
|
|
1398
1426
|
optionOverrides,
|
|
1399
1427
|
dynamicOptionOverrides,
|
|
@@ -1403,26 +1431,27 @@ class CalendarDataManager {
|
|
|
1403
1431
|
let currentRefined = this.currentCalendarOptionsRefined;
|
|
1404
1432
|
let anyChanges = false;
|
|
1405
1433
|
for (let optionName in raw) {
|
|
1406
|
-
if (optionName
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
else {
|
|
1418
|
-
extra[optionName] = currentRaw[optionName];
|
|
1419
|
-
}
|
|
1434
|
+
if (this.optionsForRefining.indexOf(optionName) === -1 && (raw[optionName] === currentRaw[optionName] || (internalCommon.COMPLEX_OPTION_COMPARATORS[optionName] &&
|
|
1435
|
+
(optionName in currentRaw) &&
|
|
1436
|
+
internalCommon.COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName])))) {
|
|
1437
|
+
refined[optionName] = currentRefined[optionName];
|
|
1438
|
+
}
|
|
1439
|
+
else if (refiners[optionName]) {
|
|
1440
|
+
refined[optionName] = refiners[optionName](raw[optionName]);
|
|
1441
|
+
anyChanges = true;
|
|
1442
|
+
}
|
|
1443
|
+
else {
|
|
1444
|
+
extra[optionName] = currentRaw[optionName];
|
|
1420
1445
|
}
|
|
1421
1446
|
}
|
|
1422
1447
|
if (anyChanges) {
|
|
1423
1448
|
this.currentCalendarOptionsInput = raw;
|
|
1424
1449
|
this.currentCalendarOptionsRefined = refined;
|
|
1450
|
+
this.stableOptionOverrides = optionOverrides;
|
|
1451
|
+
this.stableDynamicOptionOverrides = dynamicOptionOverrides;
|
|
1425
1452
|
}
|
|
1453
|
+
this.optionsForHandling.push(...this.optionsForRefining);
|
|
1454
|
+
this.optionsForRefining = [];
|
|
1426
1455
|
return {
|
|
1427
1456
|
rawOptions: this.currentCalendarOptionsInput,
|
|
1428
1457
|
refinedOptions: this.currentCalendarOptionsRefined,
|
|
@@ -1457,22 +1486,21 @@ class CalendarDataManager {
|
|
|
1457
1486
|
nowInput: refinedOptions.now,
|
|
1458
1487
|
validRangeInput: refinedOptions.validRange,
|
|
1459
1488
|
visibleRangeInput: refinedOptions.visibleRange,
|
|
1460
|
-
monthMode: refinedOptions.monthMode,
|
|
1461
1489
|
fixedWeekCount: refinedOptions.fixedWeekCount,
|
|
1462
1490
|
});
|
|
1463
1491
|
let viewApi = this.buildViewApi(viewType, this.getCurrentData, optionsData.dateEnv);
|
|
1464
1492
|
return { viewSpec, options: refinedOptions, dateProfileGenerator, viewApi };
|
|
1465
1493
|
}
|
|
1466
1494
|
processRawViewOptions(viewSpec, pluginHooks, localeDefaults, optionOverrides, dynamicOptionOverrides) {
|
|
1467
|
-
let raw = mergeRawOptions([
|
|
1468
|
-
BASE_OPTION_DEFAULTS,
|
|
1495
|
+
let raw = internalCommon.mergeRawOptions([
|
|
1496
|
+
internalCommon.BASE_OPTION_DEFAULTS,
|
|
1469
1497
|
viewSpec.optionDefaults,
|
|
1470
1498
|
localeDefaults,
|
|
1471
1499
|
optionOverrides,
|
|
1472
1500
|
viewSpec.optionOverrides,
|
|
1473
1501
|
dynamicOptionOverrides,
|
|
1474
1502
|
]);
|
|
1475
|
-
let refiners = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), VIEW_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);
|
|
1503
|
+
let refiners = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, internalCommon.BASE_OPTION_REFINERS), internalCommon.CALENDAR_LISTENER_REFINERS), internalCommon.CALENDAR_OPTION_REFINERS), internalCommon.VIEW_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);
|
|
1476
1504
|
let refined = {};
|
|
1477
1505
|
let currentRaw = this.currentViewOptionsInput;
|
|
1478
1506
|
let currentRefined = this.currentViewOptionsRefined;
|
|
@@ -1480,14 +1508,14 @@ class CalendarDataManager {
|
|
|
1480
1508
|
let extra = {};
|
|
1481
1509
|
for (let optionName in raw) {
|
|
1482
1510
|
if (raw[optionName] === currentRaw[optionName] ||
|
|
1483
|
-
(COMPLEX_OPTION_COMPARATORS[optionName] &&
|
|
1484
|
-
COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], currentRaw[optionName]))) {
|
|
1511
|
+
(internalCommon.COMPLEX_OPTION_COMPARATORS[optionName] &&
|
|
1512
|
+
internalCommon.COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], currentRaw[optionName]))) {
|
|
1485
1513
|
refined[optionName] = currentRefined[optionName];
|
|
1486
1514
|
}
|
|
1487
1515
|
else {
|
|
1488
1516
|
if (raw[optionName] === this.currentCalendarOptionsInput[optionName] ||
|
|
1489
|
-
(COMPLEX_OPTION_COMPARATORS[optionName] &&
|
|
1490
|
-
COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], this.currentCalendarOptionsInput[optionName]))) {
|
|
1517
|
+
(internalCommon.COMPLEX_OPTION_COMPARATORS[optionName] &&
|
|
1518
|
+
internalCommon.COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], this.currentCalendarOptionsInput[optionName]))) {
|
|
1491
1519
|
if (optionName in this.currentCalendarOptionsRefined) { // might be an "extra" prop
|
|
1492
1520
|
refined[optionName] = this.currentCalendarOptionsRefined[optionName];
|
|
1493
1521
|
}
|
|
@@ -1514,7 +1542,7 @@ class CalendarDataManager {
|
|
|
1514
1542
|
}
|
|
1515
1543
|
function buildDateEnv$1(timeZone, explicitLocale, weekNumberCalculation, firstDay, weekText, pluginHooks, availableLocaleData, defaultSeparator) {
|
|
1516
1544
|
let locale = buildLocale(explicitLocale || availableLocaleData.defaultCode, availableLocaleData.map);
|
|
1517
|
-
return new DateEnv({
|
|
1545
|
+
return new internalCommon.DateEnv({
|
|
1518
1546
|
calendarSystem: 'gregory',
|
|
1519
1547
|
timeZone,
|
|
1520
1548
|
namedTimeZoneImpl: pluginHooks.namedTimeZonedImpl,
|
|
@@ -1531,14 +1559,14 @@ function buildTheme(options, pluginHooks) {
|
|
|
1531
1559
|
return new ThemeClass(options);
|
|
1532
1560
|
}
|
|
1533
1561
|
function buildDateProfileGenerator(props) {
|
|
1534
|
-
let DateProfileGeneratorClass = props.dateProfileGeneratorClass || DateProfileGenerator;
|
|
1562
|
+
let DateProfileGeneratorClass = props.dateProfileGeneratorClass || internalCommon.DateProfileGenerator;
|
|
1535
1563
|
return new DateProfileGeneratorClass(props);
|
|
1536
1564
|
}
|
|
1537
1565
|
function buildViewApi(type, getCurrentData, dateEnv) {
|
|
1538
1566
|
return new ViewImpl(type, getCurrentData, dateEnv);
|
|
1539
1567
|
}
|
|
1540
1568
|
function buildEventUiBySource(eventSources) {
|
|
1541
|
-
return mapHash(eventSources, (eventSource) => eventSource.ui);
|
|
1569
|
+
return internalCommon.mapHash(eventSources, (eventSource) => eventSource.ui);
|
|
1542
1570
|
}
|
|
1543
1571
|
function buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) {
|
|
1544
1572
|
let eventUiBases = { '': eventUiSingleBase };
|
|
@@ -1553,7 +1581,7 @@ function buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) {
|
|
|
1553
1581
|
function buildViewUiProps(calendarContext) {
|
|
1554
1582
|
let { options } = calendarContext;
|
|
1555
1583
|
return {
|
|
1556
|
-
eventUiSingleBase: createEventUi({
|
|
1584
|
+
eventUiSingleBase: internalCommon.createEventUi({
|
|
1557
1585
|
display: options.eventDisplay,
|
|
1558
1586
|
editable: options.editable,
|
|
1559
1587
|
startEditable: options.eventStartEditable,
|
|
@@ -1567,7 +1595,7 @@ function buildViewUiProps(calendarContext) {
|
|
|
1567
1595
|
color: options.eventColor,
|
|
1568
1596
|
// classNames: options.eventClassNames // render hook will handle this
|
|
1569
1597
|
}, calendarContext),
|
|
1570
|
-
selectionConfig: createEventUi({
|
|
1598
|
+
selectionConfig: internalCommon.createEventUi({
|
|
1571
1599
|
constraint: options.selectConstraint,
|
|
1572
1600
|
overlap: typeof options.selectOverlap === 'boolean' ? options.selectOverlap : undefined,
|
|
1573
1601
|
allow: options.selectAllow,
|
|
@@ -1583,7 +1611,7 @@ function computeIsLoading(state, context) {
|
|
|
1583
1611
|
return false;
|
|
1584
1612
|
}
|
|
1585
1613
|
function parseContextBusinessHours(calendarContext) {
|
|
1586
|
-
return parseBusinessHours(calendarContext.options.businessHours, calendarContext);
|
|
1614
|
+
return internalCommon.parseBusinessHours(calendarContext.options.businessHours, calendarContext);
|
|
1587
1615
|
}
|
|
1588
1616
|
function warnUnknownOptions(options, viewName) {
|
|
1589
1617
|
for (let optionName in options) {
|
|
@@ -1592,10 +1620,10 @@ function warnUnknownOptions(options, viewName) {
|
|
|
1592
1620
|
}
|
|
1593
1621
|
}
|
|
1594
1622
|
|
|
1595
|
-
class ToolbarSection extends BaseComponent {
|
|
1623
|
+
class ToolbarSection extends internalCommon.BaseComponent {
|
|
1596
1624
|
render() {
|
|
1597
1625
|
let children = this.props.widgetGroups.map((widgetGroup) => this.renderWidgetGroup(widgetGroup));
|
|
1598
|
-
return createElement('div', { className: 'fc-toolbar-chunk' }, ...children);
|
|
1626
|
+
return preact.createElement('div', { className: 'fc-toolbar-chunk' }, ...children);
|
|
1599
1627
|
}
|
|
1600
1628
|
renderWidgetGroup(widgetGroup) {
|
|
1601
1629
|
let { props } = this;
|
|
@@ -1606,7 +1634,7 @@ class ToolbarSection extends BaseComponent {
|
|
|
1606
1634
|
let { buttonName, buttonClick, buttonText, buttonIcon, buttonHint } = widget;
|
|
1607
1635
|
if (buttonName === 'title') {
|
|
1608
1636
|
isOnlyButtons = false;
|
|
1609
|
-
children.push(createElement("h2", { className: "fc-toolbar-title", id: props.titleId }, props.title));
|
|
1637
|
+
children.push(preact.createElement("h2", { className: "fc-toolbar-title", id: props.titleId }, props.title));
|
|
1610
1638
|
}
|
|
1611
1639
|
else {
|
|
1612
1640
|
let isPressed = buttonName === props.activeButton;
|
|
@@ -1617,18 +1645,18 @@ class ToolbarSection extends BaseComponent {
|
|
|
1617
1645
|
if (isPressed) {
|
|
1618
1646
|
buttonClasses.push(theme.getClass('buttonActive'));
|
|
1619
1647
|
}
|
|
1620
|
-
children.push(createElement("button", { type: "button", title: typeof buttonHint === 'function' ? buttonHint(props.navUnit) : buttonHint, disabled: isDisabled, "aria-pressed": isPressed, className: buttonClasses.join(' '), onClick: buttonClick }, buttonText || (buttonIcon ? createElement("span", { className: buttonIcon }) : '')));
|
|
1648
|
+
children.push(preact.createElement("button", { type: "button", title: typeof buttonHint === 'function' ? buttonHint(props.navUnit) : buttonHint, disabled: isDisabled, "aria-pressed": isPressed, className: buttonClasses.join(' '), onClick: buttonClick }, buttonText || (buttonIcon ? preact.createElement("span", { className: buttonIcon }) : '')));
|
|
1621
1649
|
}
|
|
1622
1650
|
}
|
|
1623
1651
|
if (children.length > 1) {
|
|
1624
1652
|
let groupClassName = (isOnlyButtons && theme.getClass('buttonGroup')) || '';
|
|
1625
|
-
return createElement('div', { className: groupClassName }, ...children);
|
|
1653
|
+
return preact.createElement('div', { className: groupClassName }, ...children);
|
|
1626
1654
|
}
|
|
1627
1655
|
return children[0];
|
|
1628
1656
|
}
|
|
1629
1657
|
}
|
|
1630
1658
|
|
|
1631
|
-
class Toolbar extends BaseComponent {
|
|
1659
|
+
class Toolbar extends internalCommon.BaseComponent {
|
|
1632
1660
|
render() {
|
|
1633
1661
|
let { model, extraClassName } = this.props;
|
|
1634
1662
|
let forceLtr = false;
|
|
@@ -1655,19 +1683,18 @@ class Toolbar extends BaseComponent {
|
|
|
1655
1683
|
'fc-toolbar',
|
|
1656
1684
|
forceLtr ? 'fc-toolbar-ltr' : '',
|
|
1657
1685
|
];
|
|
1658
|
-
return (createElement("div", { className: classNames.join(' ') },
|
|
1686
|
+
return (preact.createElement("div", { className: classNames.join(' ') },
|
|
1659
1687
|
this.renderSection('start', startContent || []),
|
|
1660
1688
|
this.renderSection('center', centerContent || []),
|
|
1661
1689
|
this.renderSection('end', endContent || [])));
|
|
1662
1690
|
}
|
|
1663
1691
|
renderSection(key, widgetGroups) {
|
|
1664
1692
|
let { props } = this;
|
|
1665
|
-
return (createElement(ToolbarSection, { key: key, widgetGroups: widgetGroups, title: props.title, navUnit: props.navUnit, activeButton: props.activeButton, isTodayEnabled: props.isTodayEnabled, isPrevEnabled: props.isPrevEnabled, isNextEnabled: props.isNextEnabled, titleId: props.titleId }));
|
|
1693
|
+
return (preact.createElement(ToolbarSection, { key: key, widgetGroups: widgetGroups, title: props.title, navUnit: props.navUnit, activeButton: props.activeButton, isTodayEnabled: props.isTodayEnabled, isPrevEnabled: props.isPrevEnabled, isNextEnabled: props.isNextEnabled, titleId: props.titleId }));
|
|
1666
1694
|
}
|
|
1667
1695
|
}
|
|
1668
1696
|
|
|
1669
|
-
|
|
1670
|
-
class ViewContainer extends BaseComponent {
|
|
1697
|
+
class ViewHarness extends internalCommon.BaseComponent {
|
|
1671
1698
|
constructor() {
|
|
1672
1699
|
super(...arguments);
|
|
1673
1700
|
this.state = {
|
|
@@ -1675,7 +1702,7 @@ class ViewContainer extends BaseComponent {
|
|
|
1675
1702
|
};
|
|
1676
1703
|
this.handleEl = (el) => {
|
|
1677
1704
|
this.el = el;
|
|
1678
|
-
setRef(this.props.elRef, el);
|
|
1705
|
+
internalCommon.setRef(this.props.elRef, el);
|
|
1679
1706
|
this.updateAvailableWidth();
|
|
1680
1707
|
};
|
|
1681
1708
|
this.handleResize = () => {
|
|
@@ -1708,7 +1735,7 @@ class ViewContainer extends BaseComponent {
|
|
|
1708
1735
|
else {
|
|
1709
1736
|
height = props.height || '';
|
|
1710
1737
|
}
|
|
1711
|
-
return (createElement("div", { "aria-labelledby": props.labeledById, ref: this.handleEl, className: classNames.join(' '), style: { height, paddingBottom } }, props.children));
|
|
1738
|
+
return (preact.createElement("div", { "aria-labelledby": props.labeledById, ref: this.handleEl, className: classNames.join(' '), style: { height, paddingBottom } }, props.children));
|
|
1712
1739
|
}
|
|
1713
1740
|
componentDidMount() {
|
|
1714
1741
|
this.context.addResizeHandler(this.handleResize);
|
|
@@ -1728,22 +1755,22 @@ class ViewContainer extends BaseComponent {
|
|
|
1728
1755
|
/*
|
|
1729
1756
|
Detects when the user clicks on an event within a DateComponent
|
|
1730
1757
|
*/
|
|
1731
|
-
class EventClicking extends Interaction {
|
|
1758
|
+
class EventClicking extends internalCommon.Interaction {
|
|
1732
1759
|
constructor(settings) {
|
|
1733
1760
|
super(settings);
|
|
1734
1761
|
this.handleSegClick = (ev, segEl) => {
|
|
1735
1762
|
let { component } = this;
|
|
1736
1763
|
let { context } = component;
|
|
1737
|
-
let seg = getElSeg(segEl);
|
|
1764
|
+
let seg = internalCommon.getElSeg(segEl);
|
|
1738
1765
|
if (seg && // might be the <div> surrounding the more link
|
|
1739
1766
|
component.isValidSegDownEl(ev.target)) {
|
|
1740
1767
|
// our way to simulate a link click for elements that can't be <a> tags
|
|
1741
1768
|
// grab before trigger fired in case trigger trashes DOM thru rerendering
|
|
1742
|
-
let hasUrlContainer = elementClosest(ev.target, '.fc-event-forced-url');
|
|
1769
|
+
let hasUrlContainer = internalCommon.elementClosest(ev.target, '.fc-event-forced-url');
|
|
1743
1770
|
let url = hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href : '';
|
|
1744
1771
|
context.emitter.trigger('eventClick', {
|
|
1745
1772
|
el: segEl,
|
|
1746
|
-
event: new EventImpl(component.context, seg.eventRange.def, seg.eventRange.instance),
|
|
1773
|
+
event: new internalCommon.EventImpl(component.context, seg.eventRange.def, seg.eventRange.instance),
|
|
1747
1774
|
jsEvent: ev,
|
|
1748
1775
|
view: context.viewApi,
|
|
1749
1776
|
});
|
|
@@ -1752,7 +1779,7 @@ class EventClicking extends Interaction {
|
|
|
1752
1779
|
}
|
|
1753
1780
|
}
|
|
1754
1781
|
};
|
|
1755
|
-
this.destroy = listenBySelector(settings.el, 'click', '.fc-event', // on both fg and bg events
|
|
1782
|
+
this.destroy = internalCommon.listenBySelector(settings.el, 'click', '.fc-event', // on both fg and bg events
|
|
1756
1783
|
this.handleSegClick);
|
|
1757
1784
|
}
|
|
1758
1785
|
}
|
|
@@ -1761,7 +1788,7 @@ class EventClicking extends Interaction {
|
|
|
1761
1788
|
Triggers events and adds/removes core classNames when the user's pointer
|
|
1762
1789
|
enters/leaves event-elements of a component.
|
|
1763
1790
|
*/
|
|
1764
|
-
class EventHovering extends Interaction {
|
|
1791
|
+
class EventHovering extends internalCommon.Interaction {
|
|
1765
1792
|
constructor(settings) {
|
|
1766
1793
|
super(settings);
|
|
1767
1794
|
// for simulating an eventMouseLeave when the event el is destroyed while mouse is over it
|
|
@@ -1771,7 +1798,7 @@ class EventHovering extends Interaction {
|
|
|
1771
1798
|
}
|
|
1772
1799
|
};
|
|
1773
1800
|
this.handleSegEnter = (ev, segEl) => {
|
|
1774
|
-
if (getElSeg(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper
|
|
1801
|
+
if (internalCommon.getElSeg(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper
|
|
1775
1802
|
this.currentSegEl = segEl;
|
|
1776
1803
|
this.triggerEvent('eventMouseEnter', ev, segEl);
|
|
1777
1804
|
}
|
|
@@ -1782,7 +1809,7 @@ class EventHovering extends Interaction {
|
|
|
1782
1809
|
this.triggerEvent('eventMouseLeave', ev, segEl);
|
|
1783
1810
|
}
|
|
1784
1811
|
};
|
|
1785
|
-
this.removeHoverListeners = listenToHoverBySelector(settings.el, '.fc-event', // on both fg and bg events
|
|
1812
|
+
this.removeHoverListeners = internalCommon.listenToHoverBySelector(settings.el, '.fc-event', // on both fg and bg events
|
|
1786
1813
|
this.handleSegEnter, this.handleSegLeave);
|
|
1787
1814
|
}
|
|
1788
1815
|
destroy() {
|
|
@@ -1791,11 +1818,11 @@ class EventHovering extends Interaction {
|
|
|
1791
1818
|
triggerEvent(publicEvName, ev, segEl) {
|
|
1792
1819
|
let { component } = this;
|
|
1793
1820
|
let { context } = component;
|
|
1794
|
-
let seg = getElSeg(segEl);
|
|
1821
|
+
let seg = internalCommon.getElSeg(segEl);
|
|
1795
1822
|
if (!ev || component.isValidSegDownEl(ev.target)) {
|
|
1796
1823
|
context.emitter.trigger(publicEvName, {
|
|
1797
1824
|
el: segEl,
|
|
1798
|
-
event: new EventImpl(context, seg.eventRange.def, seg.eventRange.instance),
|
|
1825
|
+
event: new internalCommon.EventImpl(context, seg.eventRange.def, seg.eventRange.instance),
|
|
1799
1826
|
jsEvent: ev,
|
|
1800
1827
|
view: context.viewApi,
|
|
1801
1828
|
});
|
|
@@ -1803,23 +1830,23 @@ class EventHovering extends Interaction {
|
|
|
1803
1830
|
}
|
|
1804
1831
|
}
|
|
1805
1832
|
|
|
1806
|
-
class CalendarContent extends PureComponent {
|
|
1833
|
+
class CalendarContent extends internalCommon.PureComponent {
|
|
1807
1834
|
constructor() {
|
|
1808
1835
|
super(...arguments);
|
|
1809
|
-
this.buildViewContext = memoize(buildViewContext);
|
|
1810
|
-
this.buildViewPropTransformers = memoize(buildViewPropTransformers);
|
|
1811
|
-
this.buildToolbarProps = memoize(buildToolbarProps);
|
|
1812
|
-
this.headerRef = createRef();
|
|
1813
|
-
this.footerRef = createRef();
|
|
1836
|
+
this.buildViewContext = internalCommon.memoize(internalCommon.buildViewContext);
|
|
1837
|
+
this.buildViewPropTransformers = internalCommon.memoize(buildViewPropTransformers);
|
|
1838
|
+
this.buildToolbarProps = internalCommon.memoize(buildToolbarProps);
|
|
1839
|
+
this.headerRef = preact.createRef();
|
|
1840
|
+
this.footerRef = preact.createRef();
|
|
1814
1841
|
this.interactionsStore = {};
|
|
1815
1842
|
// eslint-disable-next-line
|
|
1816
1843
|
this.state = {
|
|
1817
|
-
viewLabelId: getUniqueDomId(),
|
|
1844
|
+
viewLabelId: internalCommon.getUniqueDomId(),
|
|
1818
1845
|
};
|
|
1819
1846
|
// Component Registration
|
|
1820
1847
|
// -----------------------------------------------------------------------------------------------------------------
|
|
1821
1848
|
this.registerInteractiveComponent = (component, settingsInput) => {
|
|
1822
|
-
let settings = parseInteractionSettings(component, settingsInput);
|
|
1849
|
+
let settings = internalCommon.parseInteractionSettings(component, settingsInput);
|
|
1823
1850
|
let DEFAULT_INTERACTIONS = [
|
|
1824
1851
|
EventClicking,
|
|
1825
1852
|
EventHovering,
|
|
@@ -1827,7 +1854,7 @@ class CalendarContent extends PureComponent {
|
|
|
1827
1854
|
let interactionClasses = DEFAULT_INTERACTIONS.concat(this.props.pluginHooks.componentInteractions);
|
|
1828
1855
|
let interactions = interactionClasses.map((TheInteractionClass) => new TheInteractionClass(settings));
|
|
1829
1856
|
this.interactionsStore[component.uid] = interactions;
|
|
1830
|
-
interactionSettingsStore[component.uid] = settings;
|
|
1857
|
+
internalCommon.interactionSettingsStore[component.uid] = settings;
|
|
1831
1858
|
};
|
|
1832
1859
|
this.unregisterInteractiveComponent = (component) => {
|
|
1833
1860
|
let listeners = this.interactionsStore[component.uid];
|
|
@@ -1837,11 +1864,11 @@ class CalendarContent extends PureComponent {
|
|
|
1837
1864
|
}
|
|
1838
1865
|
delete this.interactionsStore[component.uid];
|
|
1839
1866
|
}
|
|
1840
|
-
delete interactionSettingsStore[component.uid];
|
|
1867
|
+
delete internalCommon.interactionSettingsStore[component.uid];
|
|
1841
1868
|
};
|
|
1842
1869
|
// Resizing
|
|
1843
1870
|
// -----------------------------------------------------------------------------------------------------------------
|
|
1844
|
-
this.resizeRunner = new DelayedRunner(() => {
|
|
1871
|
+
this.resizeRunner = new internalCommon.DelayedRunner(() => {
|
|
1845
1872
|
this.props.emitter.trigger('_resize', true); // should window resizes be considered "forced" ?
|
|
1846
1873
|
this.props.emitter.trigger('windowResize', { view: this.props.viewApi });
|
|
1847
1874
|
});
|
|
@@ -1860,7 +1887,7 @@ class CalendarContent extends PureComponent {
|
|
|
1860
1887
|
render() {
|
|
1861
1888
|
let { props } = this;
|
|
1862
1889
|
let { toolbarConfig, options } = props;
|
|
1863
|
-
let toolbarProps = this.buildToolbarProps(props.viewSpec, props.dateProfile, props.dateProfileGenerator, props.currentDate, getNow(props.options.now, props.dateEnv), // TODO: use NowTimer????
|
|
1890
|
+
let toolbarProps = this.buildToolbarProps(props.viewSpec, props.dateProfile, props.dateProfileGenerator, props.currentDate, internalCommon.getNow(props.options.now, props.dateEnv), // TODO: use NowTimer????
|
|
1864
1891
|
props.viewTitle);
|
|
1865
1892
|
let viewVGrow = false;
|
|
1866
1893
|
let viewHeight = '';
|
|
@@ -1881,12 +1908,12 @@ class CalendarContent extends PureComponent {
|
|
|
1881
1908
|
let viewLabelId = (toolbarConfig.header && toolbarConfig.header.hasTitle)
|
|
1882
1909
|
? this.state.viewLabelId
|
|
1883
1910
|
: '';
|
|
1884
|
-
return (createElement(ViewContextType.Provider, { value: viewContext },
|
|
1885
|
-
toolbarConfig.header && (createElement(Toolbar, Object.assign({ ref: this.headerRef, extraClassName: "fc-header-toolbar", model: toolbarConfig.header, titleId: viewLabelId }, toolbarProps))),
|
|
1886
|
-
createElement(
|
|
1911
|
+
return (preact.createElement(internalCommon.ViewContextType.Provider, { value: viewContext },
|
|
1912
|
+
toolbarConfig.header && (preact.createElement(Toolbar, Object.assign({ ref: this.headerRef, extraClassName: "fc-header-toolbar", model: toolbarConfig.header, titleId: viewLabelId }, toolbarProps))),
|
|
1913
|
+
preact.createElement(ViewHarness, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, labeledById: viewLabelId },
|
|
1887
1914
|
this.renderView(props),
|
|
1888
1915
|
this.buildAppendContent()),
|
|
1889
|
-
toolbarConfig.footer && (createElement(Toolbar, Object.assign({ ref: this.footerRef, extraClassName: "fc-footer-toolbar", model: toolbarConfig.footer, titleId: "" }, toolbarProps)))));
|
|
1916
|
+
toolbarConfig.footer && (preact.createElement(Toolbar, Object.assign({ ref: this.footerRef, extraClassName: "fc-footer-toolbar", model: toolbarConfig.footer, titleId: "" }, toolbarProps)))));
|
|
1890
1917
|
}
|
|
1891
1918
|
componentDidMount() {
|
|
1892
1919
|
let { props } = this;
|
|
@@ -1918,7 +1945,7 @@ class CalendarContent extends PureComponent {
|
|
|
1918
1945
|
buildAppendContent() {
|
|
1919
1946
|
let { props } = this;
|
|
1920
1947
|
let children = props.pluginHooks.viewContainerAppends.map((buildAppendContent) => buildAppendContent(props));
|
|
1921
|
-
return createElement(Fragment, {}, ...children);
|
|
1948
|
+
return preact.createElement(preact.Fragment, {}, ...children);
|
|
1922
1949
|
}
|
|
1923
1950
|
renderView(props) {
|
|
1924
1951
|
let { pluginHooks } = props;
|
|
@@ -1940,7 +1967,7 @@ class CalendarContent extends PureComponent {
|
|
|
1940
1967
|
Object.assign(viewProps, transformer.transform(viewProps, props));
|
|
1941
1968
|
}
|
|
1942
1969
|
let ViewComponent = viewSpec.component;
|
|
1943
|
-
return (createElement(ViewComponent, Object.assign({}, viewProps)));
|
|
1970
|
+
return (preact.createElement(ViewComponent, Object.assign({}, viewProps)));
|
|
1944
1971
|
}
|
|
1945
1972
|
}
|
|
1946
1973
|
function buildToolbarProps(viewSpec, dateProfile, dateProfileGenerator, currentDate, now, title) {
|
|
@@ -1952,7 +1979,7 @@ function buildToolbarProps(viewSpec, dateProfile, dateProfileGenerator, currentD
|
|
|
1952
1979
|
title,
|
|
1953
1980
|
activeButton: viewSpec.type,
|
|
1954
1981
|
navUnit: viewSpec.singleUnit,
|
|
1955
|
-
isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now),
|
|
1982
|
+
isTodayEnabled: todayInfo.isValid && !internalCommon.rangeContainsMarker(dateProfile.currentRange, now),
|
|
1956
1983
|
isPrevEnabled: prevInfo.isValid,
|
|
1957
1984
|
isNextEnabled: nextInfo.isValid,
|
|
1958
1985
|
};
|
|
@@ -1963,7 +1990,7 @@ function buildViewPropTransformers(theClasses) {
|
|
|
1963
1990
|
return theClasses.map((TheClass) => new TheClass());
|
|
1964
1991
|
}
|
|
1965
1992
|
|
|
1966
|
-
class Calendar extends CalendarImpl {
|
|
1993
|
+
class Calendar extends internalCommon.CalendarImpl {
|
|
1967
1994
|
constructor(el, optionOverrides = {}) {
|
|
1968
1995
|
super();
|
|
1969
1996
|
this.isRendering = false;
|
|
@@ -1986,24 +2013,25 @@ class Calendar extends CalendarImpl {
|
|
|
1986
2013
|
if (this.isRendering) {
|
|
1987
2014
|
this.isRendered = true;
|
|
1988
2015
|
let { currentData } = this;
|
|
1989
|
-
flushSync(() => {
|
|
1990
|
-
render(createElement(CalendarRoot, { options: currentData.calendarOptions, theme: currentData.theme, emitter: currentData.emitter }, (classNames, height, isHeightAuto, forPrint) => {
|
|
2016
|
+
internalCommon.flushSync(() => {
|
|
2017
|
+
preact.render(preact.createElement(internalCommon.CalendarRoot, { options: currentData.calendarOptions, theme: currentData.theme, emitter: currentData.emitter }, (classNames, height, isHeightAuto, forPrint) => {
|
|
1991
2018
|
this.setClassNames(classNames);
|
|
1992
2019
|
this.setHeight(height);
|
|
1993
|
-
return (createElement(RenderId.Provider, { value: this.customContentRenderId },
|
|
1994
|
-
createElement(CalendarContent, Object.assign({ isHeightAuto: isHeightAuto, forPrint: forPrint }, currentData))));
|
|
2020
|
+
return (preact.createElement(internalCommon.RenderId.Provider, { value: this.customContentRenderId },
|
|
2021
|
+
preact.createElement(CalendarContent, Object.assign({ isHeightAuto: isHeightAuto, forPrint: forPrint }, currentData))));
|
|
1995
2022
|
}), this.el);
|
|
1996
2023
|
});
|
|
1997
2024
|
}
|
|
1998
2025
|
else if (this.isRendered) {
|
|
1999
2026
|
this.isRendered = false;
|
|
2000
|
-
render(null, this.el);
|
|
2027
|
+
preact.render(null, this.el);
|
|
2001
2028
|
this.setClassNames([]);
|
|
2002
2029
|
this.setHeight('');
|
|
2003
2030
|
}
|
|
2004
2031
|
};
|
|
2032
|
+
internalCommon.ensureElHasStyles(el);
|
|
2005
2033
|
this.el = el;
|
|
2006
|
-
this.renderRunner = new DelayedRunner(this.handleRenderRequest);
|
|
2034
|
+
this.renderRunner = new internalCommon.DelayedRunner(this.handleRenderRequest);
|
|
2007
2035
|
new CalendarDataManager({
|
|
2008
2036
|
optionOverrides,
|
|
2009
2037
|
calendarApi: this,
|
|
@@ -2031,7 +2059,7 @@ class Calendar extends CalendarImpl {
|
|
|
2031
2059
|
}
|
|
2032
2060
|
}
|
|
2033
2061
|
updateSize() {
|
|
2034
|
-
flushSync(() => {
|
|
2062
|
+
internalCommon.flushSync(() => {
|
|
2035
2063
|
super.updateSize();
|
|
2036
2064
|
});
|
|
2037
2065
|
}
|
|
@@ -2046,11 +2074,11 @@ class Calendar extends CalendarImpl {
|
|
|
2046
2074
|
resumeRendering() {
|
|
2047
2075
|
this.renderRunner.resume('pauseRendering', true);
|
|
2048
2076
|
}
|
|
2049
|
-
resetOptions(optionOverrides,
|
|
2050
|
-
this.currentDataManager.resetOptions(optionOverrides,
|
|
2077
|
+
resetOptions(optionOverrides, changedOptionNames) {
|
|
2078
|
+
this.currentDataManager.resetOptions(optionOverrides, changedOptionNames);
|
|
2051
2079
|
}
|
|
2052
2080
|
setClassNames(classNames) {
|
|
2053
|
-
if (!isArraysEqual(classNames, this.currentClassNames)) {
|
|
2081
|
+
if (!internalCommon.isArraysEqual(classNames, this.currentClassNames)) {
|
|
2054
2082
|
let { classList } = this.el;
|
|
2055
2083
|
for (let className of this.currentClassNames) {
|
|
2056
2084
|
classList.remove(className);
|
|
@@ -2062,13 +2090,13 @@ class Calendar extends CalendarImpl {
|
|
|
2062
2090
|
}
|
|
2063
2091
|
}
|
|
2064
2092
|
setHeight(height) {
|
|
2065
|
-
applyStyleProp(this.el, 'height', height);
|
|
2093
|
+
internalCommon.applyStyleProp(this.el, 'height', height);
|
|
2066
2094
|
}
|
|
2067
2095
|
}
|
|
2068
2096
|
|
|
2069
2097
|
function formatDate(dateInput, options = {}) {
|
|
2070
2098
|
let dateEnv = buildDateEnv(options);
|
|
2071
|
-
let formatter = createFormatter(options);
|
|
2099
|
+
let formatter = internalCommon.createFormatter(options);
|
|
2072
2100
|
let dateMeta = dateEnv.createMarkerMeta(dateInput);
|
|
2073
2101
|
if (!dateMeta) { // TODO: warning?
|
|
2074
2102
|
return '';
|
|
@@ -2079,7 +2107,7 @@ function formatDate(dateInput, options = {}) {
|
|
|
2079
2107
|
}
|
|
2080
2108
|
function formatRange(startInput, endInput, options) {
|
|
2081
2109
|
let dateEnv = buildDateEnv(typeof options === 'object' && options ? options : {}); // pass in if non-null object
|
|
2082
|
-
let formatter = createFormatter(options);
|
|
2110
|
+
let formatter = internalCommon.createFormatter(options);
|
|
2083
2111
|
let startMeta = dateEnv.createMarkerMeta(startInput);
|
|
2084
2112
|
let endMeta = dateEnv.createMarkerMeta(endInput);
|
|
2085
2113
|
if (!startMeta || !endMeta) { // TODO: warning?
|
|
@@ -2089,13 +2117,13 @@ function formatRange(startInput, endInput, options) {
|
|
|
2089
2117
|
forcedStartTzo: startMeta.forcedTzo,
|
|
2090
2118
|
forcedEndTzo: endMeta.forcedTzo,
|
|
2091
2119
|
isEndExclusive: options.isEndExclusive,
|
|
2092
|
-
defaultSeparator: BASE_OPTION_DEFAULTS.defaultRangeSeparator,
|
|
2120
|
+
defaultSeparator: internalCommon.BASE_OPTION_DEFAULTS.defaultRangeSeparator,
|
|
2093
2121
|
});
|
|
2094
2122
|
}
|
|
2095
2123
|
// TODO: more DRY and optimized
|
|
2096
2124
|
function buildDateEnv(settings) {
|
|
2097
2125
|
let locale = buildLocale(settings.locale || 'en', organizeRawLocales([]).map); // TODO: don't hardcode 'en' everywhere
|
|
2098
|
-
return new DateEnv(Object.assign(Object.assign({ timeZone: BASE_OPTION_DEFAULTS.timeZone, calendarSystem: 'gregory' }, settings), { locale }));
|
|
2126
|
+
return new internalCommon.DateEnv(Object.assign(Object.assign({ timeZone: internalCommon.BASE_OPTION_DEFAULTS.timeZone, calendarSystem: 'gregory' }, settings), { locale }));
|
|
2099
2127
|
}
|
|
2100
2128
|
|
|
2101
2129
|
// HELPERS
|
|
@@ -2104,9 +2132,17 @@ if nextDayThreshold is specified, slicing is done in an all-day fashion.
|
|
|
2104
2132
|
you can get nextDayThreshold from context.nextDayThreshold
|
|
2105
2133
|
*/
|
|
2106
2134
|
function sliceEvents(props, allDay) {
|
|
2107
|
-
return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;
|
|
2135
|
+
return internalCommon.sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;
|
|
2108
2136
|
}
|
|
2109
2137
|
|
|
2110
|
-
const version = '6.
|
|
2138
|
+
const version = '6.1.1';
|
|
2111
2139
|
|
|
2112
|
-
|
|
2140
|
+
exports.JsonRequestError = internalCommon.JsonRequestError;
|
|
2141
|
+
exports.Calendar = Calendar;
|
|
2142
|
+
exports.createPlugin = createPlugin;
|
|
2143
|
+
exports.formatDate = formatDate;
|
|
2144
|
+
exports.formatRange = formatRange;
|
|
2145
|
+
exports.globalLocales = globalLocales;
|
|
2146
|
+
exports.globalPlugins = globalPlugins;
|
|
2147
|
+
exports.sliceEvents = sliceEvents;
|
|
2148
|
+
exports.version = version;
|