@fullcalendar/core 6.0.3 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) hide show
  1. package/index.d.ts +1 -1
  2. package/index.esm.js +61 -36
  3. package/index.global.js +293 -150
  4. package/index.global.min.js +2 -2
  5. package/index.js +59 -34
  6. package/internal-common.d.ts +39 -19
  7. package/internal-common.esm.js +285 -167
  8. package/internal-common.js +285 -166
  9. package/internal.d.ts +1 -1
  10. package/internal.esm.js +1 -1
  11. package/internal.js +1 -1
  12. package/locales/af.global.js +1 -1
  13. package/locales/af.global.min.js +1 -1
  14. package/locales/ar-dz.esm.js +1 -0
  15. package/locales/ar-dz.global.js +2 -1
  16. package/locales/ar-dz.global.min.js +2 -2
  17. package/locales/ar-dz.js +1 -0
  18. package/locales/ar-kw.esm.js +1 -0
  19. package/locales/ar-kw.global.js +2 -1
  20. package/locales/ar-kw.global.min.js +2 -2
  21. package/locales/ar-kw.js +1 -0
  22. package/locales/ar-ly.esm.js +1 -0
  23. package/locales/ar-ly.global.js +2 -1
  24. package/locales/ar-ly.global.min.js +2 -2
  25. package/locales/ar-ly.js +1 -0
  26. package/locales/ar-ma.esm.js +1 -0
  27. package/locales/ar-ma.global.js +2 -1
  28. package/locales/ar-ma.global.min.js +2 -2
  29. package/locales/ar-ma.js +1 -0
  30. package/locales/ar-sa.esm.js +1 -0
  31. package/locales/ar-sa.global.js +2 -1
  32. package/locales/ar-sa.global.min.js +2 -2
  33. package/locales/ar-sa.js +1 -0
  34. package/locales/ar-tn.esm.js +1 -0
  35. package/locales/ar-tn.global.js +2 -1
  36. package/locales/ar-tn.global.min.js +2 -2
  37. package/locales/ar-tn.js +1 -0
  38. package/locales/ar.esm.js +1 -0
  39. package/locales/ar.global.js +2 -1
  40. package/locales/ar.global.min.js +2 -2
  41. package/locales/ar.js +1 -0
  42. package/locales/az.esm.js +1 -0
  43. package/locales/az.global.js +2 -1
  44. package/locales/az.global.min.js +2 -2
  45. package/locales/az.js +1 -0
  46. package/locales/bg.esm.js +1 -0
  47. package/locales/bg.global.js +2 -1
  48. package/locales/bg.global.min.js +2 -2
  49. package/locales/bg.js +1 -0
  50. package/locales/bn.esm.js +1 -0
  51. package/locales/bn.global.js +2 -1
  52. package/locales/bn.global.min.js +2 -2
  53. package/locales/bn.js +1 -0
  54. package/locales/bs.esm.js +1 -0
  55. package/locales/bs.global.js +2 -1
  56. package/locales/bs.global.min.js +2 -2
  57. package/locales/bs.js +1 -0
  58. package/locales/ca.esm.js +1 -0
  59. package/locales/ca.global.js +2 -1
  60. package/locales/ca.global.min.js +2 -2
  61. package/locales/ca.js +1 -0
  62. package/locales/cs.esm.js +1 -0
  63. package/locales/cs.global.js +2 -1
  64. package/locales/cs.global.min.js +2 -2
  65. package/locales/cs.js +1 -0
  66. package/locales/cy.global.js +1 -1
  67. package/locales/cy.global.min.js +1 -1
  68. package/locales/da.esm.js +1 -0
  69. package/locales/da.global.js +2 -1
  70. package/locales/da.global.min.js +2 -2
  71. package/locales/da.js +1 -0
  72. package/locales/de-at.global.js +1 -1
  73. package/locales/de-at.global.min.js +1 -1
  74. package/locales/de.global.js +1 -1
  75. package/locales/de.global.min.js +1 -1
  76. package/locales/el.esm.js +1 -0
  77. package/locales/el.global.js +2 -1
  78. package/locales/el.global.min.js +2 -2
  79. package/locales/el.js +1 -0
  80. package/locales/en-au.global.js +1 -1
  81. package/locales/en-au.global.min.js +1 -1
  82. package/locales/en-gb.global.js +1 -1
  83. package/locales/en-gb.global.min.js +1 -1
  84. package/locales/en-nz.global.js +1 -1
  85. package/locales/en-nz.global.min.js +1 -1
  86. package/locales/eo.esm.js +1 -0
  87. package/locales/eo.global.js +2 -1
  88. package/locales/eo.global.min.js +2 -2
  89. package/locales/eo.js +1 -0
  90. package/locales/es-us.esm.js +1 -0
  91. package/locales/es-us.global.js +2 -1
  92. package/locales/es-us.global.min.js +2 -2
  93. package/locales/es-us.js +1 -0
  94. package/locales/es.esm.js +1 -0
  95. package/locales/es.global.js +2 -1
  96. package/locales/es.global.min.js +2 -2
  97. package/locales/es.js +1 -0
  98. package/locales/et.esm.js +1 -0
  99. package/locales/et.global.js +2 -1
  100. package/locales/et.global.min.js +2 -2
  101. package/locales/et.js +1 -0
  102. package/locales/eu.esm.js +1 -0
  103. package/locales/eu.global.js +2 -1
  104. package/locales/eu.global.min.js +2 -2
  105. package/locales/eu.js +1 -0
  106. package/locales/fa.esm.js +1 -0
  107. package/locales/fa.global.js +2 -1
  108. package/locales/fa.global.min.js +2 -2
  109. package/locales/fa.js +1 -0
  110. package/locales/fi.esm.js +1 -0
  111. package/locales/fi.global.js +2 -1
  112. package/locales/fi.global.min.js +2 -2
  113. package/locales/fi.js +1 -0
  114. package/locales/fr-ca.esm.js +1 -1
  115. package/locales/fr-ca.global.js +2 -2
  116. package/locales/fr-ca.global.min.js +2 -2
  117. package/locales/fr-ca.js +1 -1
  118. package/locales/fr-ch.esm.js +1 -1
  119. package/locales/fr-ch.global.js +2 -2
  120. package/locales/fr-ch.global.min.js +2 -2
  121. package/locales/fr-ch.js +1 -1
  122. package/locales/fr.esm.js +2 -1
  123. package/locales/fr.global.js +3 -2
  124. package/locales/fr.global.min.js +2 -2
  125. package/locales/fr.js +2 -1
  126. package/locales/gl.esm.js +20 -0
  127. package/locales/gl.global.js +21 -1
  128. package/locales/gl.global.min.js +2 -2
  129. package/locales/gl.js +20 -0
  130. package/locales/he.esm.js +1 -0
  131. package/locales/he.global.js +2 -1
  132. package/locales/he.global.min.js +2 -2
  133. package/locales/he.js +1 -0
  134. package/locales/hi.esm.js +1 -0
  135. package/locales/hi.global.js +2 -1
  136. package/locales/hi.global.min.js +2 -2
  137. package/locales/hi.js +1 -0
  138. package/locales/hr.esm.js +1 -0
  139. package/locales/hr.global.js +2 -1
  140. package/locales/hr.global.min.js +2 -2
  141. package/locales/hr.js +1 -0
  142. package/locales/hu.esm.js +1 -0
  143. package/locales/hu.global.js +2 -1
  144. package/locales/hu.global.min.js +2 -2
  145. package/locales/hu.js +1 -0
  146. package/locales/hy-am.esm.js +1 -0
  147. package/locales/hy-am.global.js +2 -1
  148. package/locales/hy-am.global.min.js +2 -2
  149. package/locales/hy-am.js +1 -0
  150. package/locales/id.esm.js +1 -0
  151. package/locales/id.global.js +2 -1
  152. package/locales/id.global.min.js +2 -2
  153. package/locales/id.js +1 -0
  154. package/locales/is.esm.js +1 -0
  155. package/locales/is.global.js +2 -1
  156. package/locales/is.global.min.js +2 -2
  157. package/locales/is.js +1 -0
  158. package/locales/it.esm.js +1 -0
  159. package/locales/it.global.js +2 -1
  160. package/locales/it.global.min.js +2 -2
  161. package/locales/it.js +1 -0
  162. package/locales/ja.esm.js +1 -0
  163. package/locales/ja.global.js +2 -1
  164. package/locales/ja.global.min.js +2 -2
  165. package/locales/ja.js +1 -0
  166. package/locales/ka.esm.js +1 -0
  167. package/locales/ka.global.js +2 -1
  168. package/locales/ka.global.min.js +2 -2
  169. package/locales/ka.js +1 -0
  170. package/locales/kk.esm.js +1 -0
  171. package/locales/kk.global.js +2 -1
  172. package/locales/kk.global.min.js +2 -2
  173. package/locales/kk.js +1 -0
  174. package/locales/km.global.js +1 -1
  175. package/locales/km.global.min.js +1 -1
  176. package/locales/ko.esm.js +1 -0
  177. package/locales/ko.global.js +2 -1
  178. package/locales/ko.global.min.js +2 -2
  179. package/locales/ko.js +1 -0
  180. package/locales/ku.esm.js +1 -0
  181. package/locales/ku.global.js +2 -1
  182. package/locales/ku.global.min.js +2 -2
  183. package/locales/ku.js +1 -0
  184. package/locales/lb.esm.js +1 -0
  185. package/locales/lb.global.js +2 -1
  186. package/locales/lb.global.min.js +2 -2
  187. package/locales/lb.js +1 -0
  188. package/locales/lt.esm.js +1 -0
  189. package/locales/lt.global.js +2 -1
  190. package/locales/lt.global.min.js +2 -2
  191. package/locales/lt.js +1 -0
  192. package/locales/lv.esm.js +1 -0
  193. package/locales/lv.global.js +2 -1
  194. package/locales/lv.global.min.js +2 -2
  195. package/locales/lv.js +1 -0
  196. package/locales/mk.esm.js +1 -0
  197. package/locales/mk.global.js +2 -1
  198. package/locales/mk.global.min.js +2 -2
  199. package/locales/mk.js +1 -0
  200. package/locales/ms.esm.js +1 -0
  201. package/locales/ms.global.js +2 -1
  202. package/locales/ms.global.min.js +2 -2
  203. package/locales/ms.js +1 -0
  204. package/locales/nb.esm.js +1 -0
  205. package/locales/nb.global.js +2 -1
  206. package/locales/nb.global.min.js +2 -2
  207. package/locales/nb.js +1 -0
  208. package/locales/ne.esm.js +1 -0
  209. package/locales/ne.global.js +2 -1
  210. package/locales/ne.global.min.js +2 -2
  211. package/locales/ne.js +1 -0
  212. package/locales/nl.global.js +1 -1
  213. package/locales/nl.global.min.js +1 -1
  214. package/locales/nn.esm.js +1 -0
  215. package/locales/nn.global.js +2 -1
  216. package/locales/nn.global.min.js +2 -2
  217. package/locales/nn.js +1 -0
  218. package/locales/pl.esm.js +1 -0
  219. package/locales/pl.global.js +2 -1
  220. package/locales/pl.global.min.js +2 -2
  221. package/locales/pl.js +1 -0
  222. package/locales/pt-br.esm.js +22 -0
  223. package/locales/pt-br.global.js +23 -1
  224. package/locales/pt-br.global.min.js +2 -2
  225. package/locales/pt-br.js +22 -0
  226. package/locales/pt.esm.js +1 -0
  227. package/locales/pt.global.js +2 -1
  228. package/locales/pt.global.min.js +2 -2
  229. package/locales/pt.js +1 -0
  230. package/locales/ro.esm.js +1 -0
  231. package/locales/ro.global.js +2 -1
  232. package/locales/ro.global.min.js +2 -2
  233. package/locales/ro.js +1 -0
  234. package/locales/ru.esm.js +1 -0
  235. package/locales/ru.global.js +2 -1
  236. package/locales/ru.global.min.js +2 -2
  237. package/locales/ru.js +1 -0
  238. package/locales/si-lk.esm.js +1 -0
  239. package/locales/si-lk.global.js +2 -1
  240. package/locales/si-lk.global.min.js +2 -2
  241. package/locales/si-lk.js +1 -0
  242. package/locales/sk.esm.js +1 -0
  243. package/locales/sk.global.js +2 -1
  244. package/locales/sk.global.min.js +2 -2
  245. package/locales/sk.js +1 -0
  246. package/locales/sl.esm.js +1 -0
  247. package/locales/sl.global.js +2 -1
  248. package/locales/sl.global.min.js +2 -2
  249. package/locales/sl.js +1 -0
  250. package/locales/sm.esm.js +1 -0
  251. package/locales/sm.global.js +2 -1
  252. package/locales/sm.global.min.js +2 -2
  253. package/locales/sm.js +1 -0
  254. package/locales/sq.esm.js +2 -1
  255. package/locales/sq.global.js +3 -2
  256. package/locales/sq.global.min.js +2 -2
  257. package/locales/sq.js +2 -1
  258. package/locales/sr-cyrl.esm.js +1 -0
  259. package/locales/sr-cyrl.global.js +2 -1
  260. package/locales/sr-cyrl.global.min.js +2 -2
  261. package/locales/sr-cyrl.js +1 -0
  262. package/locales/sr.esm.js +1 -0
  263. package/locales/sr.global.js +2 -1
  264. package/locales/sr.global.min.js +2 -2
  265. package/locales/sr.js +1 -0
  266. package/locales/sv.esm.js +1 -0
  267. package/locales/sv.global.js +2 -1
  268. package/locales/sv.global.min.js +2 -2
  269. package/locales/sv.js +1 -0
  270. package/locales/ta-in.esm.js +1 -0
  271. package/locales/ta-in.global.js +2 -1
  272. package/locales/ta-in.global.min.js +2 -2
  273. package/locales/ta-in.js +1 -0
  274. package/locales/th.global.js +1 -1
  275. package/locales/th.global.min.js +1 -1
  276. package/locales/tr.esm.js +1 -0
  277. package/locales/tr.global.js +2 -1
  278. package/locales/tr.global.min.js +2 -2
  279. package/locales/tr.js +1 -0
  280. package/locales/ug.esm.js +4 -0
  281. package/locales/ug.global.js +5 -1
  282. package/locales/ug.global.min.js +2 -2
  283. package/locales/ug.js +4 -0
  284. package/locales/uk.esm.js +1 -0
  285. package/locales/uk.global.js +2 -1
  286. package/locales/uk.global.min.js +2 -2
  287. package/locales/uk.js +1 -0
  288. package/locales/uz-cy.d.ts +6 -0
  289. package/locales/uz-cy.esm.js +24 -0
  290. package/locales/uz-cy.global.js +34 -0
  291. package/locales/uz-cy.global.min.js +6 -0
  292. package/locales/uz-cy.js +28 -0
  293. package/locales/uz.esm.js +10 -2
  294. package/locales/uz.global.js +9 -1
  295. package/locales/uz.global.min.js +2 -2
  296. package/locales/uz.js +10 -2
  297. package/locales/vi.esm.js +3 -2
  298. package/locales/vi.global.js +2 -1
  299. package/locales/vi.global.min.js +2 -2
  300. package/locales/vi.js +3 -2
  301. package/locales/zh-cn.esm.js +3 -2
  302. package/locales/zh-cn.global.js +2 -1
  303. package/locales/zh-cn.global.min.js +2 -2
  304. package/locales/zh-cn.js +3 -2
  305. package/locales/zh-tw.esm.js +3 -2
  306. package/locales/zh-tw.global.js +2 -1
  307. package/locales/zh-tw.global.min.js +2 -2
  308. package/locales/zh-tw.js +3 -2
  309. package/locales-all.esm.js +6 -5
  310. package/locales-all.global.js +148 -9
  311. package/locales-all.global.min.js +2 -2
  312. package/locales-all.js +2 -1
  313. package/package.json +1 -1
  314. package/preact.esm.js +1 -1
package/index.d.ts CHANGED
@@ -22,7 +22,7 @@ declare class Calendar extends CalendarImpl {
22
22
  batchRendering(func: any): void;
23
23
  pauseRendering(): void;
24
24
  resumeRendering(): void;
25
- resetOptions(optionOverrides: any, append?: any): void;
25
+ resetOptions(optionOverrides: any, changedOptionNames?: string[]): void;
26
26
  private setClassNames;
27
27
  private setHeight;
28
28
  }
package/index.esm.js CHANGED
@@ -1,5 +1,5 @@
1
- import { i as injectStyles, m as mergeProps, g as guid, a as isArraysEqual, T as Theme, b as mapHash, V as ViewContextType, C as ContentContainer, c as buildViewClassNames, d as greatestDurationDenominator, e as createDuration, B as BASE_OPTION_DEFAULTS, f as arrayToHash, h as filterHash, j as buildEventSourceRefiners, p as parseEventSource, k as formatWithOrdinals, u as unpromisify, l as buildRangeApiWithTimeZone, n as identity, r as requestJson, s as subtractDurations, o as intersectRanges, q as startOfDay, t as addDays, v as hashValuesToArray, w as buildEventApis, D as DelayedRunner, x as createFormatter, y as diffWholeDays, z as memoize, A as memoizeObjArg, E as isPropsEqual, F as Emitter, G as getInitialDate, H as rangeContainsMarker, I as createEmptyEventStore, J as reduceCurrentDate, K as reduceEventStore, L as rezoneEventStoreDates, M as mergeRawOptions, N as BASE_OPTION_REFINERS, O as CALENDAR_LISTENER_REFINERS, P as CALENDAR_OPTION_REFINERS, Q as COMPLEX_OPTION_COMPARATORS, R as VIEW_OPTION_REFINERS, S as DateEnv, U as DateProfileGenerator, W as createEventUi, X as parseBusinessHours, Y as BaseComponent, Z as setRef, _ as Interaction, $ as getElSeg, a0 as elementClosest, a1 as EventImpl, a2 as listenBySelector, a3 as listenToHoverBySelector, a4 as PureComponent, a5 as buildViewContext, a6 as getUniqueDomId, a7 as parseInteractionSettings, a8 as interactionSettingsStore, a9 as getNow, aa as CalendarImpl, ab as flushSync, ac as CalendarRoot, ad as RenderId, ae as applyStyleProp, af as sliceEventStore } from './internal-common.esm.js';
2
- export { ag as JsonRequestError } from './internal-common.esm.js';
1
+ import { i as injectStyles, m as mergeProps, g as guid, a as isArraysEqual, T as Theme, b as mapHash, V as ViewContextType, C as ContentContainer, c as buildViewClassNames, d as greatestDurationDenominator, e as createDuration, B as BASE_OPTION_DEFAULTS, f as arrayToHash, h as filterHash, j as buildEventSourceRefiners, p as parseEventSource, k as formatWithOrdinals, u as unpromisify, l as buildRangeApiWithTimeZone, n as identity, r as requestJson, s as subtractDurations, o as intersectRanges, q as startOfDay, t as addDays, v as hashValuesToArray, w as buildEventApis, D as DelayedRunner, x as createFormatter, y as diffWholeDays, z as memoize, A as memoizeObjArg, E as isPropsEqual, F as Emitter, G as getInitialDate, H as rangeContainsMarker, I as createEmptyEventStore, J as reduceCurrentDate, K as reduceEventStore, L as rezoneEventStoreDates, M as mergeRawOptions, N as BASE_OPTION_REFINERS, O as CALENDAR_LISTENER_REFINERS, P as CALENDAR_OPTION_REFINERS, Q as COMPLEX_OPTION_COMPARATORS, R as VIEW_OPTION_REFINERS, S as DateEnv, U as DateProfileGenerator, W as createEventUi, X as parseBusinessHours, Y as BaseComponent, Z as setRef, _ as Interaction, $ as getElSeg, a0 as elementClosest, a1 as EventImpl, a2 as listenBySelector, a3 as listenToHoverBySelector, a4 as PureComponent, a5 as buildViewContext, a6 as getUniqueDomId, a7 as parseInteractionSettings, a8 as interactionSettingsStore, a9 as getNow, aa as CalendarImpl, ab as flushSync, ac as CalendarRoot, ad as RenderId, ae as ensureElHasStyles, af as applyStyleProp, ag as sliceEventStore } from './internal-common.esm.js';
2
+ export { ah as JsonRequestError } from './internal-common.esm.js';
3
3
  import { createElement, createRef, Fragment, render } from 'preact';
4
4
  import 'preact/compat';
5
5
 
@@ -355,7 +355,7 @@ function parseViewConfig(input) {
355
355
  };
356
356
  }
357
357
  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, generator: options.content, classNameGenerator: options.classNames, didMount: options.didMount, willUnmount: options.willUnmount }))));
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, customGenerator: options.content, classNameGenerator: options.classNames, didMount: options.didMount, willUnmount: options.willUnmount }))));
359
359
  }
360
360
 
361
361
  function buildViewSpecs(defaultInputs, optionOverrides, dynamicOptionOverrides, localeDefaults) {
@@ -1031,6 +1031,16 @@ BUG: if `event` was supplied, all previously-given `eventSources` will be wiped
1031
1031
  */
1032
1032
  function handleEventSources(inputs, context) {
1033
1033
  let unfoundSources = hashValuesToArray(context.getCurrentData().eventSources);
1034
+ if (unfoundSources.length === 1 &&
1035
+ inputs.length === 1 &&
1036
+ Array.isArray(unfoundSources[0]._raw) &&
1037
+ Array.isArray(inputs[0])) {
1038
+ context.dispatch({
1039
+ type: 'RESET_RAW_EVENTS',
1040
+ sourceId: unfoundSources[0].sourceId,
1041
+ rawEvents: inputs[0],
1042
+ });
1043
+ }
1034
1044
  let newInputs = [];
1035
1045
  for (let input of inputs) {
1036
1046
  let inputFound = false;
@@ -1168,7 +1178,6 @@ function buildTitleFormat(dateProfile) {
1168
1178
  // also, whatever is happening in constructor, have it happen in action queue too
1169
1179
  class CalendarDataManager {
1170
1180
  constructor(props) {
1171
- this.computeOptionsData = memoize(this._computeOptionsData);
1172
1181
  this.computeCurrentViewData = memoize(this._computeCurrentViewData);
1173
1182
  this.organizeRawLocales = memoize(organizeRawLocales);
1174
1183
  this.buildLocale = memoize(buildLocale);
@@ -1191,6 +1200,8 @@ class CalendarDataManager {
1191
1200
  this.currentViewOptionsInput = {};
1192
1201
  this.currentViewOptionsRefined = {};
1193
1202
  this.currentCalendarOptionsRefiners = {};
1203
+ this.optionsForRefining = [];
1204
+ this.optionsForHandling = [];
1194
1205
  this.getCurrentData = () => this.data;
1195
1206
  this.dispatch = (action) => {
1196
1207
  this.actionRunner.request(action); // protects against recursive calls to _handleAction
@@ -1253,13 +1264,20 @@ class CalendarDataManager {
1253
1264
  this.updateData();
1254
1265
  this.actionRunner.resume();
1255
1266
  }
1256
- resetOptions(optionOverrides, append) {
1267
+ resetOptions(optionOverrides, changedOptionNames) {
1257
1268
  let { props } = this;
1258
- props.optionOverrides = append
1259
- ? Object.assign(Object.assign({}, props.optionOverrides), optionOverrides) : optionOverrides;
1260
- this.actionRunner.request({
1261
- type: 'NOTHING',
1262
- });
1269
+ if (changedOptionNames === undefined) {
1270
+ props.optionOverrides = optionOverrides;
1271
+ }
1272
+ else {
1273
+ props.optionOverrides = Object.assign(Object.assign({}, (props.optionOverrides || {})), optionOverrides);
1274
+ this.optionsForRefining.push(...changedOptionNames);
1275
+ }
1276
+ if (changedOptionNames === undefined || changedOptionNames.length) {
1277
+ this.actionRunner.request({
1278
+ type: 'NOTHING',
1279
+ });
1280
+ }
1263
1281
  }
1264
1282
  _handleAction(action) {
1265
1283
  let { props, state, emitter } = this;
@@ -1351,24 +1369,31 @@ class CalendarDataManager {
1351
1369
  state.eventStore = data.eventStore = rezoneEventStoreDates(data.eventStore, oldData.dateEnv, data.dateEnv);
1352
1370
  }
1353
1371
  for (let optionName in changeHandlers) {
1354
- if (oldCalendarOptions[optionName] !== newCalendarOptions[optionName]) {
1372
+ if (this.optionsForHandling.indexOf(optionName) !== -1 ||
1373
+ oldCalendarOptions[optionName] !== newCalendarOptions[optionName]) {
1355
1374
  changeHandlers[optionName](newCalendarOptions[optionName], data);
1356
1375
  }
1357
1376
  }
1358
1377
  }
1378
+ this.optionsForHandling = [];
1359
1379
  if (props.onData) {
1360
1380
  props.onData(data);
1361
1381
  }
1362
1382
  }
1363
- _computeOptionsData(optionOverrides, dynamicOptionOverrides, calendarApi) {
1383
+ computeOptionsData(optionOverrides, dynamicOptionOverrides, calendarApi) {
1364
1384
  // TODO: blacklist options that are handled by optionChangeHandlers
1385
+ if (!this.optionsForRefining.length &&
1386
+ optionOverrides === this.stableOptionOverrides &&
1387
+ dynamicOptionOverrides === this.stableDynamicOptionOverrides) {
1388
+ return this.stableCalendarOptionsData;
1389
+ }
1365
1390
  let { refinedOptions, pluginHooks, localeDefaults, availableLocaleData, extra, } = this.processRawCalendarOptions(optionOverrides, dynamicOptionOverrides);
1366
1391
  warnUnknownOptions(extra);
1367
1392
  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, optionOverrides, dynamicOptionOverrides, localeDefaults);
1393
+ let viewSpecs = this.buildViewSpecs(pluginHooks.views, this.stableOptionOverrides, this.stableDynamicOptionOverrides, localeDefaults);
1369
1394
  let theme = this.buildTheme(refinedOptions, pluginHooks);
1370
- let toolbarConfig = this.parseToolbars(refinedOptions, optionOverrides, theme, viewSpecs, calendarApi);
1371
- return {
1395
+ let toolbarConfig = this.parseToolbars(refinedOptions, this.stableOptionOverrides, theme, viewSpecs, calendarApi);
1396
+ return this.stableCalendarOptionsData = {
1372
1397
  calendarOptions: refinedOptions,
1373
1398
  pluginHooks,
1374
1399
  dateEnv,
@@ -1403,26 +1428,27 @@ class CalendarDataManager {
1403
1428
  let currentRefined = this.currentCalendarOptionsRefined;
1404
1429
  let anyChanges = false;
1405
1430
  for (let optionName in raw) {
1406
- if (optionName !== 'plugins') { // because plugins is special-cased
1407
- if (raw[optionName] === currentRaw[optionName] ||
1408
- (COMPLEX_OPTION_COMPARATORS[optionName] &&
1409
- (optionName in currentRaw) &&
1410
- COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName]))) {
1411
- refined[optionName] = currentRefined[optionName];
1412
- }
1413
- else if (refiners[optionName]) {
1414
- refined[optionName] = refiners[optionName](raw[optionName]);
1415
- anyChanges = true;
1416
- }
1417
- else {
1418
- extra[optionName] = currentRaw[optionName];
1419
- }
1431
+ if (this.optionsForRefining.indexOf(optionName) === -1 && (raw[optionName] === currentRaw[optionName] || (COMPLEX_OPTION_COMPARATORS[optionName] &&
1432
+ (optionName in currentRaw) &&
1433
+ COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName])))) {
1434
+ refined[optionName] = currentRefined[optionName];
1435
+ }
1436
+ else if (refiners[optionName]) {
1437
+ refined[optionName] = refiners[optionName](raw[optionName]);
1438
+ anyChanges = true;
1439
+ }
1440
+ else {
1441
+ extra[optionName] = currentRaw[optionName];
1420
1442
  }
1421
1443
  }
1422
1444
  if (anyChanges) {
1423
1445
  this.currentCalendarOptionsInput = raw;
1424
1446
  this.currentCalendarOptionsRefined = refined;
1447
+ this.stableOptionOverrides = optionOverrides;
1448
+ this.stableDynamicOptionOverrides = dynamicOptionOverrides;
1425
1449
  }
1450
+ this.optionsForHandling.push(...this.optionsForRefining);
1451
+ this.optionsForRefining = [];
1426
1452
  return {
1427
1453
  rawOptions: this.currentCalendarOptionsInput,
1428
1454
  refinedOptions: this.currentCalendarOptionsRefined,
@@ -1457,7 +1483,6 @@ class CalendarDataManager {
1457
1483
  nowInput: refinedOptions.now,
1458
1484
  validRangeInput: refinedOptions.validRange,
1459
1485
  visibleRangeInput: refinedOptions.visibleRange,
1460
- monthMode: refinedOptions.monthMode,
1461
1486
  fixedWeekCount: refinedOptions.fixedWeekCount,
1462
1487
  });
1463
1488
  let viewApi = this.buildViewApi(viewType, this.getCurrentData, optionsData.dateEnv);
@@ -1666,8 +1691,7 @@ class Toolbar extends BaseComponent {
1666
1691
  }
1667
1692
  }
1668
1693
 
1669
- // TODO: do function component?
1670
- class ViewContainer extends BaseComponent {
1694
+ class ViewHarness extends BaseComponent {
1671
1695
  constructor() {
1672
1696
  super(...arguments);
1673
1697
  this.state = {
@@ -1883,7 +1907,7 @@ class CalendarContent extends PureComponent {
1883
1907
  : '';
1884
1908
  return (createElement(ViewContextType.Provider, { value: viewContext },
1885
1909
  toolbarConfig.header && (createElement(Toolbar, Object.assign({ ref: this.headerRef, extraClassName: "fc-header-toolbar", model: toolbarConfig.header, titleId: viewLabelId }, toolbarProps))),
1886
- createElement(ViewContainer, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, labeledById: viewLabelId },
1910
+ createElement(ViewHarness, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, labeledById: viewLabelId },
1887
1911
  this.renderView(props),
1888
1912
  this.buildAppendContent()),
1889
1913
  toolbarConfig.footer && (createElement(Toolbar, Object.assign({ ref: this.footerRef, extraClassName: "fc-footer-toolbar", model: toolbarConfig.footer, titleId: "" }, toolbarProps)))));
@@ -2002,6 +2026,7 @@ class Calendar extends CalendarImpl {
2002
2026
  this.setHeight('');
2003
2027
  }
2004
2028
  };
2029
+ ensureElHasStyles(el);
2005
2030
  this.el = el;
2006
2031
  this.renderRunner = new DelayedRunner(this.handleRenderRequest);
2007
2032
  new CalendarDataManager({
@@ -2046,8 +2071,8 @@ class Calendar extends CalendarImpl {
2046
2071
  resumeRendering() {
2047
2072
  this.renderRunner.resume('pauseRendering', true);
2048
2073
  }
2049
- resetOptions(optionOverrides, append) {
2050
- this.currentDataManager.resetOptions(optionOverrides, append);
2074
+ resetOptions(optionOverrides, changedOptionNames) {
2075
+ this.currentDataManager.resetOptions(optionOverrides, changedOptionNames);
2051
2076
  }
2052
2077
  setClassNames(classNames) {
2053
2078
  if (!isArraysEqual(classNames, this.currentClassNames)) {
@@ -2107,6 +2132,6 @@ function sliceEvents(props, allDay) {
2107
2132
  return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;
2108
2133
  }
2109
2134
 
2110
- const version = '6.0.3';
2135
+ const version = '6.1.0';
2111
2136
 
2112
2137
  export { Calendar, createPlugin, formatDate, formatRange, globalLocales, globalPlugins, sliceEvents, version };