@kne-components/components-core 0.1.39 → 0.1.40

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 (210) hide show
  1. package/build/asset-manifest.json +144 -144
  2. package/build/index.html +1 -1
  3. package/build/remoteEntry.js +1 -1
  4. package/build/remoteEntry.js.map +1 -1
  5. package/build/static/css/1151.9a662603.chunk.css +2 -0
  6. package/build/static/css/{1151.784b8c2d.chunk.css.map → 1151.9a662603.chunk.css.map} +1 -1
  7. package/build/static/css/1153.3c29104c.chunk.css +2 -0
  8. package/build/static/css/{1153.c5524b81.chunk.css.map → 1153.3c29104c.chunk.css.map} +1 -1
  9. package/build/static/css/1454.effce3cd.chunk.css +2 -0
  10. package/build/static/css/{1454.5f7987e3.chunk.css.map → 1454.effce3cd.chunk.css.map} +1 -1
  11. package/build/static/css/1554.f6565ac3.chunk.css +2 -0
  12. package/build/static/css/{1554.69919955.chunk.css.map → 1554.f6565ac3.chunk.css.map} +1 -1
  13. package/build/static/css/{1932.e263a23a.chunk.css → 1932.a5a12ca4.chunk.css} +2 -2
  14. package/build/static/css/{1932.e263a23a.chunk.css.map → 1932.a5a12ca4.chunk.css.map} +1 -1
  15. package/build/static/css/{2503.3930776d.chunk.css → 2503.5b13bbd0.chunk.css} +2 -2
  16. package/build/static/css/{2503.3930776d.chunk.css.map → 2503.5b13bbd0.chunk.css.map} +1 -1
  17. package/build/static/css/{2517.b1cca340.chunk.css → 2517.6ad356e2.chunk.css} +2 -2
  18. package/build/static/css/{2517.b1cca340.chunk.css.map → 2517.6ad356e2.chunk.css.map} +1 -1
  19. package/build/static/css/2526.d64505d1.chunk.css +2 -0
  20. package/build/static/css/2526.d64505d1.chunk.css.map +1 -0
  21. package/build/static/css/2716.f2bdc066.chunk.css +2 -0
  22. package/build/static/css/{2716.b162b551.chunk.css.map → 2716.f2bdc066.chunk.css.map} +1 -1
  23. package/build/static/css/{2730.c9057fe7.chunk.css → 2730.f2e62023.chunk.css} +2 -2
  24. package/build/static/css/{2730.c9057fe7.chunk.css.map → 2730.f2e62023.chunk.css.map} +1 -1
  25. package/build/static/css/{289.f3796095.chunk.css → 289.e31caeea.chunk.css} +2 -2
  26. package/build/static/css/{289.f3796095.chunk.css.map → 289.e31caeea.chunk.css.map} +1 -1
  27. package/build/static/css/2999.5317a312.chunk.css +2 -0
  28. package/build/static/css/{2999.3af3b546.chunk.css.map → 2999.5317a312.chunk.css.map} +1 -1
  29. package/build/static/css/3333.f317b925.chunk.css +2 -0
  30. package/build/static/css/{3333.6879a0e8.chunk.css.map → 3333.f317b925.chunk.css.map} +1 -1
  31. package/build/static/css/{3843.3ff8b31d.chunk.css → 3843.eaac90e5.chunk.css} +2 -2
  32. package/build/static/css/{3843.3ff8b31d.chunk.css.map → 3843.eaac90e5.chunk.css.map} +1 -1
  33. package/build/static/css/4666.12ad2197.chunk.css +2 -0
  34. package/build/static/css/{4666.8befe27c.chunk.css.map → 4666.12ad2197.chunk.css.map} +1 -1
  35. package/build/static/css/{5600.cd116224.chunk.css → 5600.052c657a.chunk.css} +2 -2
  36. package/build/static/css/{5600.cd116224.chunk.css.map → 5600.052c657a.chunk.css.map} +1 -1
  37. package/build/static/css/{5654.00d4a678.chunk.css → 5654.d2b9d068.chunk.css} +2 -2
  38. package/build/static/css/{5654.00d4a678.chunk.css.map → 5654.d2b9d068.chunk.css.map} +1 -1
  39. package/build/static/css/5846.4409fa42.chunk.css +2 -0
  40. package/build/static/css/{5846.14de4995.chunk.css.map → 5846.4409fa42.chunk.css.map} +1 -1
  41. package/build/static/css/5868.3020d847.chunk.css +2 -0
  42. package/build/static/css/{5868.da0ffdc7.chunk.css.map → 5868.3020d847.chunk.css.map} +1 -1
  43. package/build/static/css/{5996.30f6db33.chunk.css → 5996.ca5b524a.chunk.css} +2 -2
  44. package/build/static/css/{5996.30f6db33.chunk.css.map → 5996.ca5b524a.chunk.css.map} +1 -1
  45. package/build/static/css/6779.2e2f33f3.chunk.css +2 -0
  46. package/build/static/css/{6779.21daa1c9.chunk.css.map → 6779.2e2f33f3.chunk.css.map} +1 -1
  47. package/build/static/css/7227.a19a8e41.chunk.css +2 -0
  48. package/build/static/css/{7227.01c3f05e.chunk.css.map → 7227.a19a8e41.chunk.css.map} +1 -1
  49. package/build/static/css/8072.64a3d4ce.chunk.css +2 -0
  50. package/build/static/css/{8072.2a546704.chunk.css.map → 8072.64a3d4ce.chunk.css.map} +1 -1
  51. package/build/static/css/8148.e9d04d80.chunk.css +2 -0
  52. package/build/static/css/{8148.36932f60.chunk.css.map → 8148.e9d04d80.chunk.css.map} +1 -1
  53. package/build/static/css/{8725.e62be600.chunk.css → 8725.89d4eea8.chunk.css} +2 -2
  54. package/build/static/css/{8725.e62be600.chunk.css.map → 8725.89d4eea8.chunk.css.map} +1 -1
  55. package/build/static/css/9053.33e0603d.chunk.css +2 -0
  56. package/build/static/css/{9053.b9461704.chunk.css.map → 9053.33e0603d.chunk.css.map} +1 -1
  57. package/build/static/css/931.d27eaf89.chunk.css +2 -0
  58. package/build/static/css/{931.8832cd22.chunk.css.map → 931.d27eaf89.chunk.css.map} +1 -1
  59. package/build/static/css/9390.60da922c.chunk.css +2 -0
  60. package/build/static/css/{9390.28a9f86f.chunk.css.map → 9390.60da922c.chunk.css.map} +1 -1
  61. package/build/static/css/{9449.f4cb5f33.chunk.css → 9449.7c74eadf.chunk.css} +2 -2
  62. package/build/static/css/{9449.f4cb5f33.chunk.css.map → 9449.7c74eadf.chunk.css.map} +1 -1
  63. package/build/static/css/9689.9d71b49a.chunk.css +2 -0
  64. package/build/static/css/{9689.95f2f7f0.chunk.css.map → 9689.9d71b49a.chunk.css.map} +1 -1
  65. package/build/static/js/1153.76e8a9ff.chunk.js +3 -0
  66. package/build/static/js/{1153.8213e47a.chunk.js.map → 1153.76e8a9ff.chunk.js.map} +1 -1
  67. package/build/static/js/1454.2463f434.chunk.js +3 -0
  68. package/build/static/js/{1454.cab5a7b0.chunk.js.map → 1454.2463f434.chunk.js.map} +1 -1
  69. package/build/static/js/1554.64c046bd.chunk.js +3 -0
  70. package/build/static/js/{1554.097a357f.chunk.js.map → 1554.64c046bd.chunk.js.map} +1 -1
  71. package/build/static/js/{1664.c483321d.chunk.js → 1664.13d36764.chunk.js} +2 -2
  72. package/build/static/js/{1664.c483321d.chunk.js.map → 1664.13d36764.chunk.js.map} +1 -1
  73. package/build/static/js/{1922.61de4aa9.chunk.js → 1922.436850bf.chunk.js} +2 -2
  74. package/build/static/js/{1922.61de4aa9.chunk.js.map → 1922.436850bf.chunk.js.map} +1 -1
  75. package/build/static/js/1932.ff191aea.chunk.js +2 -0
  76. package/build/static/js/{1932.a86b6e3a.chunk.js.map → 1932.ff191aea.chunk.js.map} +1 -1
  77. package/build/static/js/{2503.445f1f5d.chunk.js → 2503.d929813f.chunk.js} +2 -2
  78. package/build/static/js/{2503.445f1f5d.chunk.js.map → 2503.d929813f.chunk.js.map} +1 -1
  79. package/build/static/js/2517.ffe3b509.chunk.js +2 -0
  80. package/build/static/js/{2517.65e01ff8.chunk.js.map → 2517.ffe3b509.chunk.js.map} +1 -1
  81. package/build/static/js/2526.1d8dcacd.chunk.js +2 -0
  82. package/build/static/js/2526.1d8dcacd.chunk.js.map +1 -0
  83. package/build/static/js/2716.45267855.chunk.js +3 -0
  84. package/build/static/js/{2716.0f7cfb04.chunk.js.map → 2716.45267855.chunk.js.map} +1 -1
  85. package/build/static/js/2730.796db877.chunk.js +2 -0
  86. package/build/static/js/{2730.0b020d44.chunk.js.map → 2730.796db877.chunk.js.map} +1 -1
  87. package/build/static/js/{289.c0187f43.chunk.js → 289.c63ec703.chunk.js} +2 -2
  88. package/build/static/js/{289.c0187f43.chunk.js.map → 289.c63ec703.chunk.js.map} +1 -1
  89. package/build/static/js/2950.e2888766.chunk.js +2 -0
  90. package/build/static/js/2950.e2888766.chunk.js.map +1 -0
  91. package/build/static/js/2999.e59fc84a.chunk.js +2 -0
  92. package/build/static/js/2999.e59fc84a.chunk.js.map +1 -0
  93. package/build/static/js/{3333.2cc5bd3c.chunk.js → 3333.b5c380fd.chunk.js} +2 -2
  94. package/build/static/js/{3333.2cc5bd3c.chunk.js.map → 3333.b5c380fd.chunk.js.map} +1 -1
  95. package/build/static/js/36.4ccd0836.chunk.js +2 -0
  96. package/build/static/js/{36.dc0ef4a4.chunk.js.map → 36.4ccd0836.chunk.js.map} +1 -1
  97. package/build/static/js/{3843.f7e1de45.chunk.js → 3843.9488fbf9.chunk.js} +2 -2
  98. package/build/static/js/{3843.f7e1de45.chunk.js.map → 3843.9488fbf9.chunk.js.map} +1 -1
  99. package/build/static/js/{4065.46b74147.chunk.js → 4065.d3ab5c35.chunk.js} +3 -3
  100. package/build/static/js/4065.d3ab5c35.chunk.js.map +1 -0
  101. package/build/static/js/4344.6ada55a7.chunk.js +2 -0
  102. package/build/static/js/4344.6ada55a7.chunk.js.map +1 -0
  103. package/build/static/js/4666.ee80edc7.chunk.js +2 -0
  104. package/build/static/js/{4666.1aa7f55d.chunk.js.map → 4666.ee80edc7.chunk.js.map} +1 -1
  105. package/build/static/js/5600.eeede352.chunk.js +2 -0
  106. package/build/static/js/{5600.805633f8.chunk.js.map → 5600.eeede352.chunk.js.map} +1 -1
  107. package/build/static/js/5654.08ede077.chunk.js +2 -0
  108. package/build/static/js/{5654.41fe5c0f.chunk.js.map → 5654.08ede077.chunk.js.map} +1 -1
  109. package/build/static/js/5846.886e10c4.chunk.js +2 -0
  110. package/build/static/js/{5846.7ae02244.chunk.js.map → 5846.886e10c4.chunk.js.map} +1 -1
  111. package/build/static/js/{5868.0b31c9ed.chunk.js → 5868.4f27e155.chunk.js} +2 -2
  112. package/build/static/js/{5868.0b31c9ed.chunk.js.map → 5868.4f27e155.chunk.js.map} +1 -1
  113. package/build/static/js/{5996.94d57ee3.chunk.js → 5996.92373f53.chunk.js} +2 -2
  114. package/build/static/js/{5996.94d57ee3.chunk.js.map → 5996.92373f53.chunk.js.map} +1 -1
  115. package/build/static/js/{6499.afdde7b5.chunk.js → 6499.5b1fd07a.chunk.js} +2 -2
  116. package/build/static/js/{6499.afdde7b5.chunk.js.map → 6499.5b1fd07a.chunk.js.map} +1 -1
  117. package/build/static/js/6779.f366da4d.chunk.js +2 -0
  118. package/build/static/js/{6779.e1c0bc3d.chunk.js.map → 6779.f366da4d.chunk.js.map} +1 -1
  119. package/build/static/js/7227.2d423f74.chunk.js +3 -0
  120. package/build/static/js/{7227.f4469622.chunk.js.map → 7227.2d423f74.chunk.js.map} +1 -1
  121. package/build/static/js/7777.fb9fb5b3.chunk.js +2 -0
  122. package/build/static/js/{7777.59d3566f.chunk.js.map → 7777.fb9fb5b3.chunk.js.map} +1 -1
  123. package/build/static/js/7807.ae1b0d11.chunk.js +2 -0
  124. package/build/static/js/7807.ae1b0d11.chunk.js.map +1 -0
  125. package/build/static/js/{7967.05ceea4a.chunk.js → 7967.a6f0999f.chunk.js} +2 -2
  126. package/build/static/js/{7967.05ceea4a.chunk.js.map → 7967.a6f0999f.chunk.js.map} +1 -1
  127. package/build/static/js/{8072.3ff7b835.chunk.js → 8072.9281343f.chunk.js} +2 -2
  128. package/build/static/js/{8072.3ff7b835.chunk.js.map → 8072.9281343f.chunk.js.map} +1 -1
  129. package/build/static/js/{8148.17a4c1ee.chunk.js → 8148.cc2b739c.chunk.js} +3 -3
  130. package/build/static/js/{8148.17a4c1ee.chunk.js.map → 8148.cc2b739c.chunk.js.map} +1 -1
  131. package/build/static/js/{8151.c2f92b6e.chunk.js → 8151.a194732b.chunk.js} +2 -2
  132. package/build/static/js/{8151.c2f92b6e.chunk.js.map → 8151.a194732b.chunk.js.map} +1 -1
  133. package/build/static/js/86.4a81ee9d.chunk.js.map +1 -1
  134. package/build/static/js/8643.6d6befa6.chunk.js +3 -0
  135. package/build/static/js/8643.6d6befa6.chunk.js.map +1 -0
  136. package/build/static/js/8725.9d2d1c8a.chunk.js +2 -0
  137. package/build/static/js/{8725.cbf8d0dd.chunk.js.map → 8725.9d2d1c8a.chunk.js.map} +1 -1
  138. package/build/static/js/{9053.47d482c5.chunk.js → 9053.9755fe24.chunk.js} +3 -3
  139. package/build/static/js/{9053.47d482c5.chunk.js.map → 9053.9755fe24.chunk.js.map} +1 -1
  140. package/build/static/js/931.b12d928c.chunk.js +2 -0
  141. package/build/static/js/{931.70797547.chunk.js.map → 931.b12d928c.chunk.js.map} +1 -1
  142. package/build/static/js/{9390.198d35f8.chunk.js → 9390.f3695a9f.chunk.js} +2 -2
  143. package/build/static/js/{9390.198d35f8.chunk.js.map → 9390.f3695a9f.chunk.js.map} +1 -1
  144. package/build/static/js/9449.1ac929b6.chunk.js +2 -0
  145. package/build/static/js/{9449.085dd95d.chunk.js.map → 9449.1ac929b6.chunk.js.map} +1 -1
  146. package/build/static/js/main.6db94fa1.js +2 -0
  147. package/build/static/js/main.6db94fa1.js.map +1 -0
  148. package/package.json +1 -1
  149. package/build/static/css/1151.784b8c2d.chunk.css +0 -2
  150. package/build/static/css/1153.c5524b81.chunk.css +0 -2
  151. package/build/static/css/1454.5f7987e3.chunk.css +0 -2
  152. package/build/static/css/1554.69919955.chunk.css +0 -2
  153. package/build/static/css/2526.20cadebe.chunk.css +0 -2
  154. package/build/static/css/2526.20cadebe.chunk.css.map +0 -1
  155. package/build/static/css/2716.b162b551.chunk.css +0 -2
  156. package/build/static/css/2999.3af3b546.chunk.css +0 -2
  157. package/build/static/css/3333.6879a0e8.chunk.css +0 -2
  158. package/build/static/css/4666.8befe27c.chunk.css +0 -2
  159. package/build/static/css/5846.14de4995.chunk.css +0 -2
  160. package/build/static/css/5868.da0ffdc7.chunk.css +0 -2
  161. package/build/static/css/6779.21daa1c9.chunk.css +0 -2
  162. package/build/static/css/7227.01c3f05e.chunk.css +0 -2
  163. package/build/static/css/8072.2a546704.chunk.css +0 -2
  164. package/build/static/css/8148.36932f60.chunk.css +0 -2
  165. package/build/static/css/9053.b9461704.chunk.css +0 -2
  166. package/build/static/css/931.8832cd22.chunk.css +0 -2
  167. package/build/static/css/9390.28a9f86f.chunk.css +0 -2
  168. package/build/static/css/9689.95f2f7f0.chunk.css +0 -2
  169. package/build/static/js/1153.8213e47a.chunk.js +0 -3
  170. package/build/static/js/1454.cab5a7b0.chunk.js +0 -3
  171. package/build/static/js/1554.097a357f.chunk.js +0 -3
  172. package/build/static/js/180.334eeb67.chunk.js +0 -2
  173. package/build/static/js/180.334eeb67.chunk.js.map +0 -1
  174. package/build/static/js/1932.a86b6e3a.chunk.js +0 -2
  175. package/build/static/js/2517.65e01ff8.chunk.js +0 -2
  176. package/build/static/js/2526.891a9b80.chunk.js +0 -2
  177. package/build/static/js/2526.891a9b80.chunk.js.map +0 -1
  178. package/build/static/js/2716.0f7cfb04.chunk.js +0 -3
  179. package/build/static/js/2730.0b020d44.chunk.js +0 -2
  180. package/build/static/js/2950.ba94676e.chunk.js +0 -2
  181. package/build/static/js/2950.ba94676e.chunk.js.map +0 -1
  182. package/build/static/js/2999.412b2e72.chunk.js +0 -2
  183. package/build/static/js/2999.412b2e72.chunk.js.map +0 -1
  184. package/build/static/js/36.dc0ef4a4.chunk.js +0 -2
  185. package/build/static/js/4065.46b74147.chunk.js.map +0 -1
  186. package/build/static/js/4666.1aa7f55d.chunk.js +0 -2
  187. package/build/static/js/5600.805633f8.chunk.js +0 -2
  188. package/build/static/js/5654.41fe5c0f.chunk.js +0 -2
  189. package/build/static/js/5846.7ae02244.chunk.js +0 -2
  190. package/build/static/js/6779.e1c0bc3d.chunk.js +0 -2
  191. package/build/static/js/7227.f4469622.chunk.js +0 -3
  192. package/build/static/js/7777.59d3566f.chunk.js +0 -2
  193. package/build/static/js/7807.7f3b9288.chunk.js +0 -2
  194. package/build/static/js/7807.7f3b9288.chunk.js.map +0 -1
  195. package/build/static/js/8643.c6b6a823.chunk.js +0 -3
  196. package/build/static/js/8643.c6b6a823.chunk.js.map +0 -1
  197. package/build/static/js/8725.cbf8d0dd.chunk.js +0 -2
  198. package/build/static/js/931.70797547.chunk.js +0 -2
  199. package/build/static/js/9449.085dd95d.chunk.js +0 -2
  200. package/build/static/js/main.18b311fd.js +0 -2
  201. package/build/static/js/main.18b311fd.js.map +0 -1
  202. /package/build/static/js/{1153.8213e47a.chunk.js.LICENSE.txt → 1153.76e8a9ff.chunk.js.LICENSE.txt} +0 -0
  203. /package/build/static/js/{1454.cab5a7b0.chunk.js.LICENSE.txt → 1454.2463f434.chunk.js.LICENSE.txt} +0 -0
  204. /package/build/static/js/{1554.097a357f.chunk.js.LICENSE.txt → 1554.64c046bd.chunk.js.LICENSE.txt} +0 -0
  205. /package/build/static/js/{2716.0f7cfb04.chunk.js.LICENSE.txt → 2716.45267855.chunk.js.LICENSE.txt} +0 -0
  206. /package/build/static/js/{4065.46b74147.chunk.js.LICENSE.txt → 4065.d3ab5c35.chunk.js.LICENSE.txt} +0 -0
  207. /package/build/static/js/{7227.f4469622.chunk.js.LICENSE.txt → 7227.2d423f74.chunk.js.LICENSE.txt} +0 -0
  208. /package/build/static/js/{8148.17a4c1ee.chunk.js.LICENSE.txt → 8148.cc2b739c.chunk.js.LICENSE.txt} +0 -0
  209. /package/build/static/js/{8643.c6b6a823.chunk.js.LICENSE.txt → 8643.6d6befa6.chunk.js.LICENSE.txt} +0 -0
  210. /package/build/static/js/{9053.47d482c5.chunk.js.LICENSE.txt → 9053.9755fe24.chunk.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"static/js/1922.61de4aa9.chunk.js","mappings":"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","sources":["../node_modules/@fullcalendar/core/index.js"],"sourcesContent":["import { m as mergeProps, g as guid, i as isArraysEqual, T as Theme, a as mapHash, B as BaseComponent, V as ViewContextType, C as ContentContainer, b as buildViewClassNames, c as greatestDurationDenominator, d as createDuration, e 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 setRef, Z as Interaction, _ as getElSeg, $ as elementClosest, a0 as EventImpl, a1 as listenBySelector, a2 as listenToHoverBySelector, a3 as PureComponent, a4 as buildViewContext, a5 as getUniqueDomId, a6 as parseInteractionSettings, a7 as interactionSettingsStore, a8 as getNow, a9 as CalendarImpl, aa as flushSync, ab as CalendarRoot, ac as RenderId, ad as ensureElHasStyles, ae as applyStyleProp, af as sliceEventStore } from './internal-common.js';\nexport { ag as JsonRequestError } from './internal-common.js';\nimport { createElement, createRef, Fragment, render } from 'preact';\nimport 'preact/compat';\n\nconst globalLocales = [];\n\nconst MINIMAL_RAW_EN_LOCALE = {\n code: 'en',\n week: {\n dow: 0,\n doy: 4, // 4 days need to be within the year to be considered the first week\n },\n direction: 'ltr',\n buttonText: {\n prev: 'prev',\n next: 'next',\n prevYear: 'prev year',\n nextYear: 'next year',\n year: 'year',\n today: 'today',\n month: 'month',\n week: 'week',\n day: 'day',\n list: 'list',\n },\n weekText: 'W',\n weekTextLong: 'Week',\n closeHint: 'Close',\n timeHint: 'Time',\n eventHint: 'Event',\n allDayText: 'all-day',\n moreLinkText: 'more',\n noEventsText: 'No events to display',\n};\nconst RAW_EN_LOCALE = Object.assign(Object.assign({}, MINIMAL_RAW_EN_LOCALE), { \n // Includes things we don't want other locales to inherit,\n // things that derive from other translatable strings.\n buttonHints: {\n prev: 'Previous $0',\n next: 'Next $0',\n today(buttonText, unit) {\n return (unit === 'day')\n ? 'Today'\n : `This ${buttonText}`;\n },\n }, viewHint: '$0 view', navLinkHint: 'Go to $0', moreLinkHint(eventCnt) {\n return `Show ${eventCnt} more event${eventCnt === 1 ? '' : 's'}`;\n } });\nfunction organizeRawLocales(explicitRawLocales) {\n let defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en';\n let allRawLocales = globalLocales.concat(explicitRawLocales);\n let rawLocaleMap = {\n en: RAW_EN_LOCALE,\n };\n for (let rawLocale of allRawLocales) {\n rawLocaleMap[rawLocale.code] = rawLocale;\n }\n return {\n map: rawLocaleMap,\n defaultCode,\n };\n}\nfunction buildLocale(inputSingular, available) {\n if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) {\n return parseLocale(inputSingular.code, [inputSingular.code], inputSingular);\n }\n return queryLocale(inputSingular, available);\n}\nfunction queryLocale(codeArg, available) {\n let codes = [].concat(codeArg || []); // will convert to array\n let raw = queryRawLocale(codes, available) || RAW_EN_LOCALE;\n return parseLocale(codeArg, codes, raw);\n}\nfunction queryRawLocale(codes, available) {\n for (let i = 0; i < codes.length; i += 1) {\n let parts = codes[i].toLocaleLowerCase().split('-');\n for (let j = parts.length; j > 0; j -= 1) {\n let simpleId = parts.slice(0, j).join('-');\n if (available[simpleId]) {\n return available[simpleId];\n }\n }\n }\n return null;\n}\nfunction parseLocale(codeArg, codes, raw) {\n let merged = mergeProps([MINIMAL_RAW_EN_LOCALE, raw], ['buttonText']);\n delete merged.code; // don't want this part of the options\n let { week } = merged;\n delete merged.week;\n return {\n codeArg,\n codes,\n week,\n simpleNumberFormat: new Intl.NumberFormat(codeArg),\n options: merged,\n };\n}\n\n// TODO: easier way to add new hooks? need to update a million things\nfunction createPlugin(input) {\n return {\n id: guid(),\n name: input.name,\n premiumReleaseDate: input.premiumReleaseDate ? new Date(input.premiumReleaseDate) : undefined,\n deps: input.deps || [],\n reducers: input.reducers || [],\n isLoadingFuncs: input.isLoadingFuncs || [],\n contextInit: [].concat(input.contextInit || []),\n eventRefiners: input.eventRefiners || {},\n eventDefMemberAdders: input.eventDefMemberAdders || [],\n eventSourceRefiners: input.eventSourceRefiners || {},\n isDraggableTransformers: input.isDraggableTransformers || [],\n eventDragMutationMassagers: input.eventDragMutationMassagers || [],\n eventDefMutationAppliers: input.eventDefMutationAppliers || [],\n dateSelectionTransformers: input.dateSelectionTransformers || [],\n datePointTransforms: input.datePointTransforms || [],\n dateSpanTransforms: input.dateSpanTransforms || [],\n views: input.views || {},\n viewPropsTransformers: input.viewPropsTransformers || [],\n isPropsValid: input.isPropsValid || null,\n externalDefTransforms: input.externalDefTransforms || [],\n viewContainerAppends: input.viewContainerAppends || [],\n eventDropTransformers: input.eventDropTransformers || [],\n componentInteractions: input.componentInteractions || [],\n calendarInteractions: input.calendarInteractions || [],\n themeClasses: input.themeClasses || {},\n eventSourceDefs: input.eventSourceDefs || [],\n cmdFormatter: input.cmdFormatter,\n recurringTypes: input.recurringTypes || [],\n namedTimeZonedImpl: input.namedTimeZonedImpl,\n initialView: input.initialView || '',\n elementDraggingImpl: input.elementDraggingImpl,\n optionChangeHandlers: input.optionChangeHandlers || {},\n scrollGridImpl: input.scrollGridImpl || null,\n listenerRefiners: input.listenerRefiners || {},\n optionRefiners: input.optionRefiners || {},\n propSetHandlers: input.propSetHandlers || {},\n };\n}\nfunction buildPluginHooks(pluginDefs, globalDefs) {\n let currentPluginIds = {};\n let hooks = {\n premiumReleaseDate: undefined,\n reducers: [],\n isLoadingFuncs: [],\n contextInit: [],\n eventRefiners: {},\n eventDefMemberAdders: [],\n eventSourceRefiners: {},\n isDraggableTransformers: [],\n eventDragMutationMassagers: [],\n eventDefMutationAppliers: [],\n dateSelectionTransformers: [],\n datePointTransforms: [],\n dateSpanTransforms: [],\n views: {},\n viewPropsTransformers: [],\n isPropsValid: null,\n externalDefTransforms: [],\n viewContainerAppends: [],\n eventDropTransformers: [],\n componentInteractions: [],\n calendarInteractions: [],\n themeClasses: {},\n eventSourceDefs: [],\n cmdFormatter: null,\n recurringTypes: [],\n namedTimeZonedImpl: null,\n initialView: '',\n elementDraggingImpl: null,\n optionChangeHandlers: {},\n scrollGridImpl: null,\n listenerRefiners: {},\n optionRefiners: {},\n propSetHandlers: {},\n };\n function addDefs(defs) {\n for (let def of defs) {\n const pluginName = def.name;\n const currentId = currentPluginIds[pluginName];\n if (currentId === undefined) {\n currentPluginIds[pluginName] = def.id;\n addDefs(def.deps);\n hooks = combineHooks(hooks, def);\n }\n else if (currentId !== def.id) {\n // different ID than the one already added\n console.warn(`Duplicate plugin '${pluginName}'`);\n }\n }\n }\n if (pluginDefs) {\n addDefs(pluginDefs);\n }\n addDefs(globalDefs);\n return hooks;\n}\nfunction buildBuildPluginHooks() {\n let currentOverrideDefs = [];\n let currentGlobalDefs = [];\n let currentHooks;\n return (overrideDefs, globalDefs) => {\n if (!currentHooks || !isArraysEqual(overrideDefs, currentOverrideDefs) || !isArraysEqual(globalDefs, currentGlobalDefs)) {\n currentHooks = buildPluginHooks(overrideDefs, globalDefs);\n }\n currentOverrideDefs = overrideDefs;\n currentGlobalDefs = globalDefs;\n return currentHooks;\n };\n}\nfunction combineHooks(hooks0, hooks1) {\n return {\n premiumReleaseDate: compareOptionalDates(hooks0.premiumReleaseDate, hooks1.premiumReleaseDate),\n reducers: hooks0.reducers.concat(hooks1.reducers),\n isLoadingFuncs: hooks0.isLoadingFuncs.concat(hooks1.isLoadingFuncs),\n contextInit: hooks0.contextInit.concat(hooks1.contextInit),\n eventRefiners: Object.assign(Object.assign({}, hooks0.eventRefiners), hooks1.eventRefiners),\n eventDefMemberAdders: hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders),\n eventSourceRefiners: Object.assign(Object.assign({}, hooks0.eventSourceRefiners), hooks1.eventSourceRefiners),\n isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),\n eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),\n eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),\n dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),\n datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms),\n dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),\n views: Object.assign(Object.assign({}, hooks0.views), hooks1.views),\n viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),\n isPropsValid: hooks1.isPropsValid || hooks0.isPropsValid,\n externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),\n viewContainerAppends: hooks0.viewContainerAppends.concat(hooks1.viewContainerAppends),\n eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),\n calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions),\n componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions),\n themeClasses: Object.assign(Object.assign({}, hooks0.themeClasses), hooks1.themeClasses),\n eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),\n cmdFormatter: hooks1.cmdFormatter || hooks0.cmdFormatter,\n recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes),\n namedTimeZonedImpl: hooks1.namedTimeZonedImpl || hooks0.namedTimeZonedImpl,\n initialView: hooks0.initialView || hooks1.initialView,\n elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl,\n optionChangeHandlers: Object.assign(Object.assign({}, hooks0.optionChangeHandlers), hooks1.optionChangeHandlers),\n scrollGridImpl: hooks1.scrollGridImpl || hooks0.scrollGridImpl,\n listenerRefiners: Object.assign(Object.assign({}, hooks0.listenerRefiners), hooks1.listenerRefiners),\n optionRefiners: Object.assign(Object.assign({}, hooks0.optionRefiners), hooks1.optionRefiners),\n propSetHandlers: Object.assign(Object.assign({}, hooks0.propSetHandlers), hooks1.propSetHandlers),\n };\n}\nfunction compareOptionalDates(date0, date1) {\n if (date0 === undefined) {\n return date1;\n }\n if (date1 === undefined) {\n return date0;\n }\n return new Date(Math.max(date0.valueOf(), date1.valueOf()));\n}\n\nclass StandardTheme extends Theme {\n}\nStandardTheme.prototype.classes = {\n root: 'fc-theme-standard',\n tableCellShaded: 'fc-cell-shaded',\n buttonGroup: 'fc-button-group',\n button: 'fc-button fc-button-primary',\n buttonActive: 'fc-button-active',\n};\nStandardTheme.prototype.baseIconClass = 'fc-icon';\nStandardTheme.prototype.iconClasses = {\n close: 'fc-icon-x',\n prev: 'fc-icon-chevron-left',\n next: 'fc-icon-chevron-right',\n prevYear: 'fc-icon-chevrons-left',\n nextYear: 'fc-icon-chevrons-right',\n};\nStandardTheme.prototype.rtlIconClasses = {\n prev: 'fc-icon-chevron-right',\n next: 'fc-icon-chevron-left',\n prevYear: 'fc-icon-chevrons-right',\n nextYear: 'fc-icon-chevrons-left',\n};\nStandardTheme.prototype.iconOverrideOption = 'buttonIcons'; // TODO: make TS-friendly\nStandardTheme.prototype.iconOverrideCustomButtonOption = 'icon';\nStandardTheme.prototype.iconOverridePrefix = 'fc-icon-';\n\nfunction compileViewDefs(defaultConfigs, overrideConfigs) {\n let hash = {};\n let viewType;\n for (viewType in defaultConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n for (viewType in overrideConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n return hash;\n}\nfunction ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n if (hash[viewType]) {\n return hash[viewType];\n }\n let viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n if (viewDef) {\n hash[viewType] = viewDef;\n }\n return viewDef;\n}\nfunction buildViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n let defaultConfig = defaultConfigs[viewType];\n let overrideConfig = overrideConfigs[viewType];\n let queryProp = (name) => ((defaultConfig && defaultConfig[name] !== null) ? defaultConfig[name] :\n ((overrideConfig && overrideConfig[name] !== null) ? overrideConfig[name] : null));\n let theComponent = queryProp('component');\n let superType = queryProp('superType');\n let superDef = null;\n if (superType) {\n if (superType === viewType) {\n throw new Error('Can\\'t have a custom view type that references itself');\n }\n superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs);\n }\n if (!theComponent && superDef) {\n theComponent = superDef.component;\n }\n if (!theComponent) {\n return null; // don't throw a warning, might be settings for a single-unit view\n }\n return {\n type: viewType,\n component: theComponent,\n defaults: Object.assign(Object.assign({}, (superDef ? superDef.defaults : {})), (defaultConfig ? defaultConfig.rawOptions : {})),\n overrides: Object.assign(Object.assign({}, (superDef ? superDef.overrides : {})), (overrideConfig ? overrideConfig.rawOptions : {})),\n };\n}\n\nfunction parseViewConfigs(inputs) {\n return mapHash(inputs, parseViewConfig);\n}\nfunction parseViewConfig(input) {\n let rawOptions = typeof input === 'function' ?\n { component: input } :\n input;\n let { component } = rawOptions;\n if (rawOptions.content) {\n // TODO: remove content/classNames/didMount/etc from options?\n component = createViewHookComponent(rawOptions);\n }\n else if (component && !(component.prototype instanceof BaseComponent)) {\n // WHY?: people were using `component` property for `content`\n // TODO: converge on one setting name\n component = createViewHookComponent(Object.assign(Object.assign({}, rawOptions), { content: component }));\n }\n return {\n superType: rawOptions.type,\n component: component,\n rawOptions, // includes type and component too :(\n };\n}\nfunction createViewHookComponent(options) {\n 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 }))));\n}\n\nfunction buildViewSpecs(defaultInputs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n let defaultConfigs = parseViewConfigs(defaultInputs);\n let overrideConfigs = parseViewConfigs(optionOverrides.views);\n let viewDefs = compileViewDefs(defaultConfigs, overrideConfigs);\n return mapHash(viewDefs, (viewDef) => buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults));\n}\nfunction buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n let durationInput = viewDef.overrides.duration ||\n viewDef.defaults.duration ||\n dynamicOptionOverrides.duration ||\n optionOverrides.duration;\n let duration = null;\n let durationUnit = '';\n let singleUnit = '';\n let singleUnitOverrides = {};\n if (durationInput) {\n duration = createDurationCached(durationInput);\n if (duration) { // valid?\n let denom = greatestDurationDenominator(duration);\n durationUnit = denom.unit;\n if (denom.value === 1) {\n singleUnit = durationUnit;\n singleUnitOverrides = overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].rawOptions : {};\n }\n }\n }\n let queryButtonText = (optionsSubset) => {\n let buttonTextMap = optionsSubset.buttonText || {};\n let buttonTextKey = viewDef.defaults.buttonTextKey;\n if (buttonTextKey != null && buttonTextMap[buttonTextKey] != null) {\n return buttonTextMap[buttonTextKey];\n }\n if (buttonTextMap[viewDef.type] != null) {\n return buttonTextMap[viewDef.type];\n }\n if (buttonTextMap[singleUnit] != null) {\n return buttonTextMap[singleUnit];\n }\n return null;\n };\n let queryButtonTitle = (optionsSubset) => {\n let buttonHints = optionsSubset.buttonHints || {};\n let buttonKey = viewDef.defaults.buttonTextKey; // use same key as text\n if (buttonKey != null && buttonHints[buttonKey] != null) {\n return buttonHints[buttonKey];\n }\n if (buttonHints[viewDef.type] != null) {\n return buttonHints[viewDef.type];\n }\n if (buttonHints[singleUnit] != null) {\n return buttonHints[singleUnit];\n }\n return null;\n };\n return {\n type: viewDef.type,\n component: viewDef.component,\n duration,\n durationUnit,\n singleUnit,\n optionDefaults: viewDef.defaults,\n optionOverrides: Object.assign(Object.assign({}, singleUnitOverrides), viewDef.overrides),\n buttonTextOverride: queryButtonText(dynamicOptionOverrides) ||\n queryButtonText(optionOverrides) || // constructor-specified buttonText lookup hash takes precedence\n viewDef.overrides.buttonText,\n buttonTextDefault: queryButtonText(localeDefaults) ||\n viewDef.defaults.buttonText ||\n queryButtonText(BASE_OPTION_DEFAULTS) ||\n viewDef.type,\n // not DRY\n buttonTitleOverride: queryButtonTitle(dynamicOptionOverrides) ||\n queryButtonTitle(optionOverrides) ||\n viewDef.overrides.buttonHint,\n buttonTitleDefault: queryButtonTitle(localeDefaults) ||\n viewDef.defaults.buttonHint ||\n queryButtonTitle(BASE_OPTION_DEFAULTS),\n // will eventually fall back to buttonText\n };\n}\n// hack to get memoization working\nlet durationInputMap = {};\nfunction createDurationCached(durationInput) {\n let json = JSON.stringify(durationInput);\n let res = durationInputMap[json];\n if (res === undefined) {\n res = createDuration(durationInput);\n durationInputMap[json] = res;\n }\n return res;\n}\n\nfunction reduceViewType(viewType, action) {\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n viewType = action.viewType;\n }\n return viewType;\n}\n\nfunction reduceDynamicOptionOverrides(dynamicOptionOverrides, action) {\n switch (action.type) {\n case 'SET_OPTION':\n return Object.assign(Object.assign({}, dynamicOptionOverrides), { [action.optionName]: action.rawOptionValue });\n default:\n return dynamicOptionOverrides;\n }\n}\n\nfunction reduceDateProfile(currentDateProfile, action, currentDate, dateProfileGenerator) {\n let dp;\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n return dateProfileGenerator.build(action.dateMarker || currentDate);\n case 'CHANGE_DATE':\n return dateProfileGenerator.build(action.dateMarker);\n case 'PREV':\n dp = dateProfileGenerator.buildPrev(currentDateProfile, currentDate);\n if (dp.isValid) {\n return dp;\n }\n break;\n case 'NEXT':\n dp = dateProfileGenerator.buildNext(currentDateProfile, currentDate);\n if (dp.isValid) {\n return dp;\n }\n break;\n }\n return currentDateProfile;\n}\n\nfunction initEventSources(calendarOptions, dateProfile, context) {\n let activeRange = dateProfile ? dateProfile.activeRange : null;\n return addSources({}, parseInitialSources(calendarOptions, context), activeRange, context);\n}\nfunction reduceEventSources(eventSources, action, dateProfile, context) {\n let activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n switch (action.type) {\n case 'ADD_EVENT_SOURCES': // already parsed\n return addSources(eventSources, action.sources, activeRange, context);\n case 'REMOVE_EVENT_SOURCE':\n return removeSource(eventSources, action.sourceId);\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n case 'NEXT':\n case 'CHANGE_DATE':\n case 'CHANGE_VIEW_TYPE':\n if (dateProfile) {\n return fetchDirtySources(eventSources, activeRange, context);\n }\n return eventSources;\n case 'FETCH_EVENT_SOURCES':\n return fetchSourcesByIds(eventSources, action.sourceIds ? // why no type?\n arrayToHash(action.sourceIds) :\n excludeStaticSources(eventSources, context), activeRange, action.isRefetch || false, context);\n case 'RECEIVE_EVENTS':\n case 'RECEIVE_EVENT_ERROR':\n return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange);\n case 'REMOVE_ALL_EVENT_SOURCES':\n return {};\n default:\n return eventSources;\n }\n}\nfunction reduceEventSourcesNewTimeZone(eventSources, dateProfile, context) {\n let activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n return fetchSourcesByIds(eventSources, excludeStaticSources(eventSources, context), activeRange, true, context);\n}\nfunction computeEventSourcesLoading(eventSources) {\n for (let sourceId in eventSources) {\n if (eventSources[sourceId].isFetching) {\n return true;\n }\n }\n return false;\n}\nfunction addSources(eventSourceHash, sources, fetchRange, context) {\n let hash = {};\n for (let source of sources) {\n hash[source.sourceId] = source;\n }\n if (fetchRange) {\n hash = fetchDirtySources(hash, fetchRange, context);\n }\n return Object.assign(Object.assign({}, eventSourceHash), hash);\n}\nfunction removeSource(eventSourceHash, sourceId) {\n return filterHash(eventSourceHash, (eventSource) => eventSource.sourceId !== sourceId);\n}\nfunction fetchDirtySources(sourceHash, fetchRange, context) {\n return fetchSourcesByIds(sourceHash, filterHash(sourceHash, (eventSource) => isSourceDirty(eventSource, fetchRange, context)), fetchRange, false, context);\n}\nfunction isSourceDirty(eventSource, fetchRange, context) {\n if (!doesSourceNeedRange(eventSource, context)) {\n return !eventSource.latestFetchId;\n }\n return !context.options.lazyFetching ||\n !eventSource.fetchRange ||\n eventSource.isFetching || // always cancel outdated in-progress fetches\n fetchRange.start < eventSource.fetchRange.start ||\n fetchRange.end > eventSource.fetchRange.end;\n}\nfunction fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, isRefetch, context) {\n let nextSources = {};\n for (let sourceId in prevSources) {\n let source = prevSources[sourceId];\n if (sourceIdHash[sourceId]) {\n nextSources[sourceId] = fetchSource(source, fetchRange, isRefetch, context);\n }\n else {\n nextSources[sourceId] = source;\n }\n }\n return nextSources;\n}\nfunction fetchSource(eventSource, fetchRange, isRefetch, context) {\n let { options, calendarApi } = context;\n let sourceDef = context.pluginHooks.eventSourceDefs[eventSource.sourceDefId];\n let fetchId = guid();\n sourceDef.fetch({\n eventSource,\n range: fetchRange,\n isRefetch,\n context,\n }, (res) => {\n let { rawEvents } = res;\n if (options.eventSourceSuccess) {\n rawEvents = options.eventSourceSuccess.call(calendarApi, rawEvents, res.response) || rawEvents;\n }\n if (eventSource.success) {\n rawEvents = eventSource.success.call(calendarApi, rawEvents, res.response) || rawEvents;\n }\n context.dispatch({\n type: 'RECEIVE_EVENTS',\n sourceId: eventSource.sourceId,\n fetchId,\n fetchRange,\n rawEvents,\n });\n }, (error) => {\n let errorHandled = false;\n if (options.eventSourceFailure) {\n options.eventSourceFailure.call(calendarApi, error);\n errorHandled = true;\n }\n if (eventSource.failure) {\n eventSource.failure(error);\n errorHandled = true;\n }\n if (!errorHandled) {\n console.warn(error.message, error);\n }\n context.dispatch({\n type: 'RECEIVE_EVENT_ERROR',\n sourceId: eventSource.sourceId,\n fetchId,\n fetchRange,\n error,\n });\n });\n return Object.assign(Object.assign({}, eventSource), { isFetching: true, latestFetchId: fetchId });\n}\nfunction receiveResponse(sourceHash, sourceId, fetchId, fetchRange) {\n let eventSource = sourceHash[sourceId];\n if (eventSource && // not already removed\n fetchId === eventSource.latestFetchId) {\n return Object.assign(Object.assign({}, sourceHash), { [sourceId]: Object.assign(Object.assign({}, eventSource), { isFetching: false, fetchRange }) });\n }\n return sourceHash;\n}\nfunction excludeStaticSources(eventSources, context) {\n return filterHash(eventSources, (eventSource) => doesSourceNeedRange(eventSource, context));\n}\nfunction parseInitialSources(rawOptions, context) {\n let refiners = buildEventSourceRefiners(context);\n let rawSources = [].concat(rawOptions.eventSources || []);\n let sources = []; // parsed\n if (rawOptions.initialEvents) {\n rawSources.unshift(rawOptions.initialEvents);\n }\n if (rawOptions.events) {\n rawSources.unshift(rawOptions.events);\n }\n for (let rawSource of rawSources) {\n let source = parseEventSource(rawSource, context, refiners);\n if (source) {\n sources.push(source);\n }\n }\n return sources;\n}\nfunction doesSourceNeedRange(eventSource, context) {\n let defs = context.pluginHooks.eventSourceDefs;\n return !defs[eventSource.sourceDefId].ignoreRange;\n}\n\nfunction reduceDateSelection(currentSelection, action) {\n switch (action.type) {\n case 'UNSELECT_DATES':\n return null;\n case 'SELECT_DATES':\n return action.selection;\n default:\n return currentSelection;\n }\n}\n\nfunction reduceSelectedEvent(currentInstanceId, action) {\n switch (action.type) {\n case 'UNSELECT_EVENT':\n return '';\n case 'SELECT_EVENT':\n return action.eventInstanceId;\n default:\n return currentInstanceId;\n }\n}\n\nfunction reduceEventDrag(currentDrag, action) {\n let newDrag;\n switch (action.type) {\n case 'UNSET_EVENT_DRAG':\n return null;\n case 'SET_EVENT_DRAG':\n newDrag = action.state;\n return {\n affectedEvents: newDrag.affectedEvents,\n mutatedEvents: newDrag.mutatedEvents,\n isEvent: newDrag.isEvent,\n };\n default:\n return currentDrag;\n }\n}\n\nfunction reduceEventResize(currentResize, action) {\n let newResize;\n switch (action.type) {\n case 'UNSET_EVENT_RESIZE':\n return null;\n case 'SET_EVENT_RESIZE':\n newResize = action.state;\n return {\n affectedEvents: newResize.affectedEvents,\n mutatedEvents: newResize.mutatedEvents,\n isEvent: newResize.isEvent,\n };\n default:\n return currentResize;\n }\n}\n\nfunction parseToolbars(calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n let header = calendarOptions.headerToolbar ? parseToolbar(calendarOptions.headerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n let footer = calendarOptions.footerToolbar ? parseToolbar(calendarOptions.footerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n return { header, footer };\n}\nfunction parseToolbar(sectionStrHash, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n let sectionWidgets = {};\n let viewsWithButtons = [];\n let hasTitle = false;\n for (let sectionName in sectionStrHash) {\n let sectionStr = sectionStrHash[sectionName];\n let sectionRes = parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi);\n sectionWidgets[sectionName] = sectionRes.widgets;\n viewsWithButtons.push(...sectionRes.viewsWithButtons);\n hasTitle = hasTitle || sectionRes.hasTitle;\n }\n return { sectionWidgets, viewsWithButtons, hasTitle };\n}\n/*\nBAD: querying icons and text here. should be done at render time\n*/\nfunction parseSection(sectionStr, calendarOptions, // defaults+overrides, then refined\ncalendarOptionOverrides, // overrides only!, unrefined :(\ntheme, viewSpecs, calendarApi) {\n let isRtl = calendarOptions.direction === 'rtl';\n let calendarCustomButtons = calendarOptions.customButtons || {};\n let calendarButtonTextOverrides = calendarOptionOverrides.buttonText || {};\n let calendarButtonText = calendarOptions.buttonText || {};\n let calendarButtonHintOverrides = calendarOptionOverrides.buttonHints || {};\n let calendarButtonHints = calendarOptions.buttonHints || {};\n let sectionSubstrs = sectionStr ? sectionStr.split(' ') : [];\n let viewsWithButtons = [];\n let hasTitle = false;\n let widgets = sectionSubstrs.map((buttonGroupStr) => (buttonGroupStr.split(',').map((buttonName) => {\n if (buttonName === 'title') {\n hasTitle = true;\n return { buttonName };\n }\n let customButtonProps;\n let viewSpec;\n let buttonClick;\n let buttonIcon; // only one of these will be set\n let buttonText; // \"\n let buttonHint;\n // ^ for the title=\"\" attribute, for accessibility\n if ((customButtonProps = calendarCustomButtons[buttonName])) {\n buttonClick = (ev) => {\n if (customButtonProps.click) {\n customButtonProps.click.call(ev.target, ev, ev.target); // TODO: use Calendar this context?\n }\n };\n (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = customButtonProps.text);\n buttonHint = customButtonProps.hint || customButtonProps.text;\n }\n else if ((viewSpec = viewSpecs[buttonName])) {\n viewsWithButtons.push(buttonName);\n buttonClick = () => {\n calendarApi.changeView(buttonName);\n };\n (buttonText = viewSpec.buttonTextOverride) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = viewSpec.buttonTextDefault);\n let textFallback = viewSpec.buttonTextOverride ||\n viewSpec.buttonTextDefault;\n buttonHint = formatWithOrdinals(viewSpec.buttonTitleOverride ||\n viewSpec.buttonTitleDefault ||\n calendarOptions.viewHint, [textFallback, buttonName], // view-name = buttonName\n textFallback);\n }\n else if (calendarApi[buttonName]) { // a calendarApi method\n buttonClick = () => {\n calendarApi[buttonName]();\n };\n (buttonText = calendarButtonTextOverrides[buttonName]) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = calendarButtonText[buttonName]); // everything else is considered default\n if (buttonName === 'prevYear' || buttonName === 'nextYear') {\n let prevOrNext = buttonName === 'prevYear' ? 'prev' : 'next';\n buttonHint = formatWithOrdinals(calendarButtonHintOverrides[prevOrNext] ||\n calendarButtonHints[prevOrNext], [\n calendarButtonText.year || 'year',\n 'year',\n ], calendarButtonText[buttonName]);\n }\n else {\n buttonHint = (navUnit) => formatWithOrdinals(calendarButtonHintOverrides[buttonName] ||\n calendarButtonHints[buttonName], [\n calendarButtonText[navUnit] || navUnit,\n navUnit,\n ], calendarButtonText[buttonName]);\n }\n }\n return { buttonName, buttonClick, buttonIcon, buttonText, buttonHint };\n })));\n return { widgets, viewsWithButtons, hasTitle };\n}\n\n// always represents the current view. otherwise, it'd need to change value every time date changes\nclass ViewImpl {\n constructor(type, getCurrentData, dateEnv) {\n this.type = type;\n this.getCurrentData = getCurrentData;\n this.dateEnv = dateEnv;\n }\n get calendar() {\n return this.getCurrentData().calendarApi;\n }\n get title() {\n return this.getCurrentData().viewTitle;\n }\n get activeStart() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start);\n }\n get activeEnd() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end);\n }\n get currentStart() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start);\n }\n get currentEnd() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end);\n }\n getOption(name) {\n return this.getCurrentData().options[name]; // are the view-specific options\n }\n}\n\nlet eventSourceDef$2 = {\n ignoreRange: true,\n parseMeta(refined) {\n if (Array.isArray(refined.events)) {\n return refined.events;\n }\n return null;\n },\n fetch(arg, successCallback) {\n successCallback({\n rawEvents: arg.eventSource.meta,\n });\n },\n};\nconst arrayEventSourcePlugin = createPlugin({\n name: 'array-event-source',\n eventSourceDefs: [eventSourceDef$2],\n});\n\nlet eventSourceDef$1 = {\n parseMeta(refined) {\n if (typeof refined.events === 'function') {\n return refined.events;\n }\n return null;\n },\n fetch(arg, successCallback, errorCallback) {\n const { dateEnv } = arg.context;\n const func = arg.eventSource.meta;\n unpromisify(func.bind(null, buildRangeApiWithTimeZone(arg.range, dateEnv)), (rawEvents) => successCallback({ rawEvents }), errorCallback);\n },\n};\nconst funcEventSourcePlugin = createPlugin({\n name: 'func-event-source',\n eventSourceDefs: [eventSourceDef$1],\n});\n\nconst JSON_FEED_EVENT_SOURCE_REFINERS = {\n method: String,\n extraParams: identity,\n startParam: String,\n endParam: String,\n timeZoneParam: String,\n};\n\nlet eventSourceDef = {\n parseMeta(refined) {\n if (refined.url && (refined.format === 'json' || !refined.format)) {\n return {\n url: refined.url,\n format: 'json',\n method: (refined.method || 'GET').toUpperCase(),\n extraParams: refined.extraParams,\n startParam: refined.startParam,\n endParam: refined.endParam,\n timeZoneParam: refined.timeZoneParam,\n };\n }\n return null;\n },\n fetch(arg, successCallback, errorCallback) {\n const { meta } = arg.eventSource;\n const requestParams = buildRequestParams(meta, arg.range, arg.context);\n requestJson(meta.method, meta.url, requestParams).then(([rawEvents, response]) => {\n successCallback({ rawEvents, response });\n }, errorCallback);\n },\n};\nconst jsonFeedEventSourcePlugin = createPlugin({\n name: 'json-event-source',\n eventSourceRefiners: JSON_FEED_EVENT_SOURCE_REFINERS,\n eventSourceDefs: [eventSourceDef],\n});\nfunction buildRequestParams(meta, range, context) {\n let { dateEnv, options } = context;\n let startParam;\n let endParam;\n let timeZoneParam;\n let customRequestParams;\n let params = {};\n startParam = meta.startParam;\n if (startParam == null) {\n startParam = options.startParam;\n }\n endParam = meta.endParam;\n if (endParam == null) {\n endParam = options.endParam;\n }\n timeZoneParam = meta.timeZoneParam;\n if (timeZoneParam == null) {\n timeZoneParam = options.timeZoneParam;\n }\n // retrieve any outbound GET/POST data from the options\n if (typeof meta.extraParams === 'function') {\n // supplied as a function that returns a key/value object\n customRequestParams = meta.extraParams();\n }\n else {\n // probably supplied as a straight key/value object\n customRequestParams = meta.extraParams || {};\n }\n Object.assign(params, customRequestParams);\n params[startParam] = dateEnv.formatIso(range.start);\n params[endParam] = dateEnv.formatIso(range.end);\n if (dateEnv.timeZone !== 'local') {\n params[timeZoneParam] = dateEnv.timeZone;\n }\n return params;\n}\n\nconst SIMPLE_RECURRING_REFINERS = {\n daysOfWeek: identity,\n startTime: createDuration,\n endTime: createDuration,\n duration: createDuration,\n startRecur: identity,\n endRecur: identity,\n};\n\nlet recurring = {\n parse(refined, dateEnv) {\n if (refined.daysOfWeek || refined.startTime || refined.endTime || refined.startRecur || refined.endRecur) {\n let recurringData = {\n daysOfWeek: refined.daysOfWeek || null,\n startTime: refined.startTime || null,\n endTime: refined.endTime || null,\n startRecur: refined.startRecur ? dateEnv.createMarker(refined.startRecur) : null,\n endRecur: refined.endRecur ? dateEnv.createMarker(refined.endRecur) : null,\n };\n let duration;\n if (refined.duration) {\n duration = refined.duration;\n }\n if (!duration && refined.startTime && refined.endTime) {\n duration = subtractDurations(refined.endTime, refined.startTime);\n }\n return {\n allDayGuess: Boolean(!refined.startTime && !refined.endTime),\n duration,\n typeData: recurringData, // doesn't need endTime anymore but oh well\n };\n }\n return null;\n },\n expand(typeData, framingRange, dateEnv) {\n let clippedFramingRange = intersectRanges(framingRange, { start: typeData.startRecur, end: typeData.endRecur });\n if (clippedFramingRange) {\n return expandRanges(typeData.daysOfWeek, typeData.startTime, clippedFramingRange, dateEnv);\n }\n return [];\n },\n};\nconst simpleRecurringEventsPlugin = createPlugin({\n name: 'simple-recurring-event',\n recurringTypes: [recurring],\n eventRefiners: SIMPLE_RECURRING_REFINERS,\n});\nfunction expandRanges(daysOfWeek, startTime, framingRange, dateEnv) {\n let dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null;\n let dayMarker = startOfDay(framingRange.start);\n let endMarker = framingRange.end;\n let instanceStarts = [];\n while (dayMarker < endMarker) {\n let instanceStart;\n // if everyday, or this particular day-of-week\n if (!dowHash || dowHash[dayMarker.getUTCDay()]) {\n if (startTime) {\n instanceStart = dateEnv.add(dayMarker, startTime);\n }\n else {\n instanceStart = dayMarker;\n }\n instanceStarts.push(instanceStart);\n }\n dayMarker = addDays(dayMarker, 1);\n }\n return instanceStarts;\n}\n\nconst changeHandlerPlugin = createPlugin({\n name: 'change-handler',\n optionChangeHandlers: {\n events(events, context) {\n handleEventSources([events], context);\n },\n eventSources: handleEventSources,\n },\n});\n/*\nBUG: if `event` was supplied, all previously-given `eventSources` will be wiped out\n*/\nfunction handleEventSources(inputs, context) {\n let unfoundSources = hashValuesToArray(context.getCurrentData().eventSources);\n if (unfoundSources.length === 1 &&\n inputs.length === 1 &&\n Array.isArray(unfoundSources[0]._raw) &&\n Array.isArray(inputs[0])) {\n context.dispatch({\n type: 'RESET_RAW_EVENTS',\n sourceId: unfoundSources[0].sourceId,\n rawEvents: inputs[0],\n });\n return;\n }\n let newInputs = [];\n for (let input of inputs) {\n let inputFound = false;\n for (let i = 0; i < unfoundSources.length; i += 1) {\n if (unfoundSources[i]._raw === input) {\n unfoundSources.splice(i, 1); // delete\n inputFound = true;\n break;\n }\n }\n if (!inputFound) {\n newInputs.push(input);\n }\n }\n for (let unfoundSource of unfoundSources) {\n context.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: unfoundSource.sourceId,\n });\n }\n for (let newInput of newInputs) {\n context.calendarApi.addEventSource(newInput);\n }\n}\n\nfunction handleDateProfile(dateProfile, context) {\n context.emitter.trigger('datesSet', Object.assign(Object.assign({}, buildRangeApiWithTimeZone(dateProfile.activeRange, context.dateEnv)), { view: context.viewApi }));\n}\n\nfunction handleEventStore(eventStore, context) {\n let { emitter } = context;\n if (emitter.hasHandlers('eventsSet')) {\n emitter.trigger('eventsSet', buildEventApis(eventStore, context));\n }\n}\n\n/*\nthis array is exposed on the root namespace so that UMD plugins can add to it.\nsee the rollup-bundles script.\n*/\nconst globalPlugins = [\n arrayEventSourcePlugin,\n funcEventSourcePlugin,\n jsonFeedEventSourcePlugin,\n simpleRecurringEventsPlugin,\n changeHandlerPlugin,\n createPlugin({\n name: 'misc',\n isLoadingFuncs: [\n (state) => computeEventSourcesLoading(state.eventSources),\n ],\n propSetHandlers: {\n dateProfile: handleDateProfile,\n eventStore: handleEventStore,\n },\n }),\n];\n\nclass TaskRunner {\n constructor(runTaskOption, drainedOption) {\n this.runTaskOption = runTaskOption;\n this.drainedOption = drainedOption;\n this.queue = [];\n this.delayedRunner = new DelayedRunner(this.drain.bind(this));\n }\n request(task, delay) {\n this.queue.push(task);\n this.delayedRunner.request(delay);\n }\n pause(scope) {\n this.delayedRunner.pause(scope);\n }\n resume(scope, force) {\n this.delayedRunner.resume(scope, force);\n }\n drain() {\n let { queue } = this;\n while (queue.length) {\n let completedTasks = [];\n let task;\n while ((task = queue.shift())) {\n this.runTask(task);\n completedTasks.push(task);\n }\n this.drained(completedTasks);\n } // keep going, in case new tasks were added in the drained handler\n }\n runTask(task) {\n if (this.runTaskOption) {\n this.runTaskOption(task);\n }\n }\n drained(completedTasks) {\n if (this.drainedOption) {\n this.drainedOption(completedTasks);\n }\n }\n}\n\n// Computes what the title at the top of the calendarApi should be for this view\nfunction buildTitle(dateProfile, viewOptions, dateEnv) {\n let range;\n // for views that span a large unit of time, show the proper interval, ignoring stray days before and after\n if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) {\n range = dateProfile.currentRange;\n }\n else { // for day units or smaller, use the actual day range\n range = dateProfile.activeRange;\n }\n return dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat || buildTitleFormat(dateProfile)), {\n isEndExclusive: dateProfile.isRangeAllDay,\n defaultSeparator: viewOptions.titleRangeSeparator,\n });\n}\n// Generates the format string that should be used to generate the title for the current date range.\n// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\nfunction buildTitleFormat(dateProfile) {\n let { currentRangeUnit } = dateProfile;\n if (currentRangeUnit === 'year') {\n return { year: 'numeric' };\n }\n if (currentRangeUnit === 'month') {\n return { year: 'numeric', month: 'long' }; // like \"September 2014\"\n }\n let days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end);\n if (days !== null && days > 1) {\n // multi-day range. shorter, like \"Sep 9 - 10 2014\"\n return { year: 'numeric', month: 'short', day: 'numeric' };\n }\n // one day. longer, like \"September 9 2014\"\n return { year: 'numeric', month: 'long', day: 'numeric' };\n}\n\n// in future refactor, do the redux-style function(state=initial) for initial-state\n// also, whatever is happening in constructor, have it happen in action queue too\nclass CalendarDataManager {\n constructor(props) {\n this.computeCurrentViewData = memoize(this._computeCurrentViewData);\n this.organizeRawLocales = memoize(organizeRawLocales);\n this.buildLocale = memoize(buildLocale);\n this.buildPluginHooks = buildBuildPluginHooks();\n this.buildDateEnv = memoize(buildDateEnv$1);\n this.buildTheme = memoize(buildTheme);\n this.parseToolbars = memoize(parseToolbars);\n this.buildViewSpecs = memoize(buildViewSpecs);\n this.buildDateProfileGenerator = memoizeObjArg(buildDateProfileGenerator);\n this.buildViewApi = memoize(buildViewApi);\n this.buildViewUiProps = memoizeObjArg(buildViewUiProps);\n this.buildEventUiBySource = memoize(buildEventUiBySource, isPropsEqual);\n this.buildEventUiBases = memoize(buildEventUiBases);\n this.parseContextBusinessHours = memoizeObjArg(parseContextBusinessHours);\n this.buildTitle = memoize(buildTitle);\n this.emitter = new Emitter();\n this.actionRunner = new TaskRunner(this._handleAction.bind(this), this.updateData.bind(this));\n this.currentCalendarOptionsInput = {};\n this.currentCalendarOptionsRefined = {};\n this.currentViewOptionsInput = {};\n this.currentViewOptionsRefined = {};\n this.currentCalendarOptionsRefiners = {};\n this.optionsForRefining = [];\n this.optionsForHandling = [];\n this.getCurrentData = () => this.data;\n this.dispatch = (action) => {\n this.actionRunner.request(action); // protects against recursive calls to _handleAction\n };\n this.props = props;\n this.actionRunner.pause();\n let dynamicOptionOverrides = {};\n let optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n let currentViewType = optionsData.calendarOptions.initialView || optionsData.pluginHooks.initialView;\n let currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n // wire things up\n // TODO: not DRY\n props.calendarApi.currentDataManager = this;\n this.emitter.setThisContext(props.calendarApi);\n this.emitter.setOptions(currentViewData.options);\n let currentDate = getInitialDate(optionsData.calendarOptions, optionsData.dateEnv);\n let dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n if (!rangeContainsMarker(dateProfile.activeRange, currentDate)) {\n currentDate = dateProfile.currentRange.start;\n }\n let calendarContext = {\n dateEnv: optionsData.dateEnv,\n options: optionsData.calendarOptions,\n pluginHooks: optionsData.pluginHooks,\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter: this.emitter,\n getCurrentData: this.getCurrentData,\n };\n // needs to be after setThisContext\n for (let callback of optionsData.pluginHooks.contextInit) {\n callback(calendarContext);\n }\n // NOT DRY\n let eventSources = initEventSources(optionsData.calendarOptions, dateProfile, calendarContext);\n let initialState = {\n dynamicOptionOverrides,\n currentViewType,\n currentDate,\n dateProfile,\n businessHours: this.parseContextBusinessHours(calendarContext),\n eventSources,\n eventUiBases: {},\n eventStore: createEmptyEventStore(),\n renderableEventStore: createEmptyEventStore(),\n dateSelection: null,\n eventSelection: '',\n eventDrag: null,\n eventResize: null,\n selectionConfig: this.buildViewUiProps(calendarContext).selectionConfig,\n };\n let contextAndState = Object.assign(Object.assign({}, calendarContext), initialState);\n for (let reducer of optionsData.pluginHooks.reducers) {\n Object.assign(initialState, reducer(null, null, contextAndState));\n }\n if (computeIsLoading(initialState, calendarContext)) {\n this.emitter.trigger('loading', true); // NOT DRY\n }\n this.state = initialState;\n this.updateData();\n this.actionRunner.resume();\n }\n resetOptions(optionOverrides, changedOptionNames) {\n let { props } = this;\n if (changedOptionNames === undefined) {\n props.optionOverrides = optionOverrides;\n }\n else {\n props.optionOverrides = Object.assign(Object.assign({}, (props.optionOverrides || {})), optionOverrides);\n this.optionsForRefining.push(...changedOptionNames);\n }\n if (changedOptionNames === undefined || changedOptionNames.length) {\n this.actionRunner.request({\n type: 'NOTHING',\n });\n }\n }\n _handleAction(action) {\n let { props, state, emitter } = this;\n let dynamicOptionOverrides = reduceDynamicOptionOverrides(state.dynamicOptionOverrides, action);\n let optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n let currentViewType = reduceViewType(state.currentViewType, action);\n let currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n // wire things up\n // TODO: not DRY\n props.calendarApi.currentDataManager = this;\n emitter.setThisContext(props.calendarApi);\n emitter.setOptions(currentViewData.options);\n let calendarContext = {\n dateEnv: optionsData.dateEnv,\n options: optionsData.calendarOptions,\n pluginHooks: optionsData.pluginHooks,\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter,\n getCurrentData: this.getCurrentData,\n };\n let { currentDate, dateProfile } = state;\n if (this.data && this.data.dateProfileGenerator !== currentViewData.dateProfileGenerator) { // hack\n dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n }\n currentDate = reduceCurrentDate(currentDate, action);\n dateProfile = reduceDateProfile(dateProfile, action, currentDate, currentViewData.dateProfileGenerator);\n if (action.type === 'PREV' || // TODO: move this logic into DateProfileGenerator\n action.type === 'NEXT' || // \"\n !rangeContainsMarker(dateProfile.currentRange, currentDate)) {\n currentDate = dateProfile.currentRange.start;\n }\n let eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendarContext);\n let eventStore = reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendarContext);\n let isEventsLoading = computeEventSourcesLoading(eventSources); // BAD. also called in this func in computeIsLoading\n let renderableEventStore = (isEventsLoading && !currentViewData.options.progressiveEventRendering) ?\n (state.renderableEventStore || eventStore) : // try from previous state\n eventStore;\n let { eventUiSingleBase, selectionConfig } = this.buildViewUiProps(calendarContext); // will memoize obj\n let eventUiBySource = this.buildEventUiBySource(eventSources);\n let eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource);\n let newState = {\n dynamicOptionOverrides,\n currentViewType,\n currentDate,\n dateProfile,\n eventSources,\n eventStore,\n renderableEventStore,\n selectionConfig,\n eventUiBases,\n businessHours: this.parseContextBusinessHours(calendarContext),\n dateSelection: reduceDateSelection(state.dateSelection, action),\n eventSelection: reduceSelectedEvent(state.eventSelection, action),\n eventDrag: reduceEventDrag(state.eventDrag, action),\n eventResize: reduceEventResize(state.eventResize, action),\n };\n let contextAndState = Object.assign(Object.assign({}, calendarContext), newState);\n for (let reducer of optionsData.pluginHooks.reducers) {\n Object.assign(newState, reducer(state, action, contextAndState)); // give the OLD state, for old value\n }\n let wasLoading = computeIsLoading(state, calendarContext);\n let isLoading = computeIsLoading(newState, calendarContext);\n // TODO: use propSetHandlers in plugin system\n if (!wasLoading && isLoading) {\n emitter.trigger('loading', true);\n }\n else if (wasLoading && !isLoading) {\n emitter.trigger('loading', false);\n }\n this.state = newState;\n if (props.onAction) {\n props.onAction(action);\n }\n }\n updateData() {\n let { props, state } = this;\n let oldData = this.data;\n let optionsData = this.computeOptionsData(props.optionOverrides, state.dynamicOptionOverrides, props.calendarApi);\n let currentViewData = this.computeCurrentViewData(state.currentViewType, optionsData, props.optionOverrides, state.dynamicOptionOverrides);\n let data = this.data = Object.assign(Object.assign(Object.assign({ viewTitle: this.buildTitle(state.dateProfile, currentViewData.options, optionsData.dateEnv), calendarApi: props.calendarApi, dispatch: this.dispatch, emitter: this.emitter, getCurrentData: this.getCurrentData }, optionsData), currentViewData), state);\n let changeHandlers = optionsData.pluginHooks.optionChangeHandlers;\n let oldCalendarOptions = oldData && oldData.calendarOptions;\n let newCalendarOptions = optionsData.calendarOptions;\n if (oldCalendarOptions && oldCalendarOptions !== newCalendarOptions) {\n if (oldCalendarOptions.timeZone !== newCalendarOptions.timeZone) {\n // hack\n state.eventSources = data.eventSources = reduceEventSourcesNewTimeZone(data.eventSources, state.dateProfile, data);\n state.eventStore = data.eventStore = rezoneEventStoreDates(data.eventStore, oldData.dateEnv, data.dateEnv);\n state.renderableEventStore = data.renderableEventStore = rezoneEventStoreDates(data.renderableEventStore, oldData.dateEnv, data.dateEnv);\n }\n for (let optionName in changeHandlers) {\n if (this.optionsForHandling.indexOf(optionName) !== -1 ||\n oldCalendarOptions[optionName] !== newCalendarOptions[optionName]) {\n changeHandlers[optionName](newCalendarOptions[optionName], data);\n }\n }\n }\n this.optionsForHandling = [];\n if (props.onData) {\n props.onData(data);\n }\n }\n computeOptionsData(optionOverrides, dynamicOptionOverrides, calendarApi) {\n // TODO: blacklist options that are handled by optionChangeHandlers\n if (!this.optionsForRefining.length &&\n optionOverrides === this.stableOptionOverrides &&\n dynamicOptionOverrides === this.stableDynamicOptionOverrides) {\n return this.stableCalendarOptionsData;\n }\n let { refinedOptions, pluginHooks, localeDefaults, availableLocaleData, extra, } = this.processRawCalendarOptions(optionOverrides, dynamicOptionOverrides);\n warnUnknownOptions(extra);\n let dateEnv = this.buildDateEnv(refinedOptions.timeZone, refinedOptions.locale, refinedOptions.weekNumberCalculation, refinedOptions.firstDay, refinedOptions.weekText, pluginHooks, availableLocaleData, refinedOptions.defaultRangeSeparator);\n let viewSpecs = this.buildViewSpecs(pluginHooks.views, this.stableOptionOverrides, this.stableDynamicOptionOverrides, localeDefaults);\n let theme = this.buildTheme(refinedOptions, pluginHooks);\n let toolbarConfig = this.parseToolbars(refinedOptions, this.stableOptionOverrides, theme, viewSpecs, calendarApi);\n return this.stableCalendarOptionsData = {\n calendarOptions: refinedOptions,\n pluginHooks,\n dateEnv,\n viewSpecs,\n theme,\n toolbarConfig,\n localeDefaults,\n availableRawLocales: availableLocaleData.map,\n };\n }\n // always called from behind a memoizer\n processRawCalendarOptions(optionOverrides, dynamicOptionOverrides) {\n let { locales, locale } = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n optionOverrides,\n dynamicOptionOverrides,\n ]);\n let availableLocaleData = this.organizeRawLocales(locales);\n let availableRawLocales = availableLocaleData.map;\n let localeDefaults = this.buildLocale(locale || availableLocaleData.defaultCode, availableRawLocales).options;\n let pluginHooks = this.buildPluginHooks(optionOverrides.plugins || [], globalPlugins);\n 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);\n let extra = {};\n let raw = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n localeDefaults,\n optionOverrides,\n dynamicOptionOverrides,\n ]);\n let refined = {};\n let currentRaw = this.currentCalendarOptionsInput;\n let currentRefined = this.currentCalendarOptionsRefined;\n let anyChanges = false;\n for (let optionName in raw) {\n if (this.optionsForRefining.indexOf(optionName) === -1 && (raw[optionName] === currentRaw[optionName] || (COMPLEX_OPTION_COMPARATORS[optionName] &&\n (optionName in currentRaw) &&\n COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName])))) {\n refined[optionName] = currentRefined[optionName];\n }\n else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName]);\n anyChanges = true;\n }\n else {\n extra[optionName] = currentRaw[optionName];\n }\n }\n if (anyChanges) {\n this.currentCalendarOptionsInput = raw;\n this.currentCalendarOptionsRefined = refined;\n this.stableOptionOverrides = optionOverrides;\n this.stableDynamicOptionOverrides = dynamicOptionOverrides;\n }\n this.optionsForHandling.push(...this.optionsForRefining);\n this.optionsForRefining = [];\n return {\n rawOptions: this.currentCalendarOptionsInput,\n refinedOptions: this.currentCalendarOptionsRefined,\n pluginHooks,\n availableLocaleData,\n localeDefaults,\n extra,\n };\n }\n _computeCurrentViewData(viewType, optionsData, optionOverrides, dynamicOptionOverrides) {\n let viewSpec = optionsData.viewSpecs[viewType];\n if (!viewSpec) {\n throw new Error(`viewType \"${viewType}\" is not available. Please make sure you've loaded all neccessary plugins`);\n }\n let { refinedOptions, extra } = this.processRawViewOptions(viewSpec, optionsData.pluginHooks, optionsData.localeDefaults, optionOverrides, dynamicOptionOverrides);\n warnUnknownOptions(extra);\n let dateProfileGenerator = this.buildDateProfileGenerator({\n dateProfileGeneratorClass: viewSpec.optionDefaults.dateProfileGeneratorClass,\n duration: viewSpec.duration,\n durationUnit: viewSpec.durationUnit,\n usesMinMaxTime: viewSpec.optionDefaults.usesMinMaxTime,\n dateEnv: optionsData.dateEnv,\n calendarApi: this.props.calendarApi,\n slotMinTime: refinedOptions.slotMinTime,\n slotMaxTime: refinedOptions.slotMaxTime,\n showNonCurrentDates: refinedOptions.showNonCurrentDates,\n dayCount: refinedOptions.dayCount,\n dateAlignment: refinedOptions.dateAlignment,\n dateIncrement: refinedOptions.dateIncrement,\n hiddenDays: refinedOptions.hiddenDays,\n weekends: refinedOptions.weekends,\n nowInput: refinedOptions.now,\n validRangeInput: refinedOptions.validRange,\n visibleRangeInput: refinedOptions.visibleRange,\n fixedWeekCount: refinedOptions.fixedWeekCount,\n });\n let viewApi = this.buildViewApi(viewType, this.getCurrentData, optionsData.dateEnv);\n return { viewSpec, options: refinedOptions, dateProfileGenerator, viewApi };\n }\n processRawViewOptions(viewSpec, pluginHooks, localeDefaults, optionOverrides, dynamicOptionOverrides) {\n let raw = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n viewSpec.optionDefaults,\n localeDefaults,\n optionOverrides,\n viewSpec.optionOverrides,\n dynamicOptionOverrides,\n ]);\n 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);\n let refined = {};\n let currentRaw = this.currentViewOptionsInput;\n let currentRefined = this.currentViewOptionsRefined;\n let anyChanges = false;\n let extra = {};\n for (let optionName in raw) {\n if (raw[optionName] === currentRaw[optionName] ||\n (COMPLEX_OPTION_COMPARATORS[optionName] &&\n COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], currentRaw[optionName]))) {\n refined[optionName] = currentRefined[optionName];\n }\n else {\n if (raw[optionName] === this.currentCalendarOptionsInput[optionName] ||\n (COMPLEX_OPTION_COMPARATORS[optionName] &&\n COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], this.currentCalendarOptionsInput[optionName]))) {\n if (optionName in this.currentCalendarOptionsRefined) { // might be an \"extra\" prop\n refined[optionName] = this.currentCalendarOptionsRefined[optionName];\n }\n }\n else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName]);\n }\n else {\n extra[optionName] = raw[optionName];\n }\n anyChanges = true;\n }\n }\n if (anyChanges) {\n this.currentViewOptionsInput = raw;\n this.currentViewOptionsRefined = refined;\n }\n return {\n rawOptions: this.currentViewOptionsInput,\n refinedOptions: this.currentViewOptionsRefined,\n extra,\n };\n }\n}\nfunction buildDateEnv$1(timeZone, explicitLocale, weekNumberCalculation, firstDay, weekText, pluginHooks, availableLocaleData, defaultSeparator) {\n let locale = buildLocale(explicitLocale || availableLocaleData.defaultCode, availableLocaleData.map);\n return new DateEnv({\n calendarSystem: 'gregory',\n timeZone,\n namedTimeZoneImpl: pluginHooks.namedTimeZonedImpl,\n locale,\n weekNumberCalculation,\n firstDay,\n weekText,\n cmdFormatter: pluginHooks.cmdFormatter,\n defaultSeparator,\n });\n}\nfunction buildTheme(options, pluginHooks) {\n let ThemeClass = pluginHooks.themeClasses[options.themeSystem] || StandardTheme;\n return new ThemeClass(options);\n}\nfunction buildDateProfileGenerator(props) {\n let DateProfileGeneratorClass = props.dateProfileGeneratorClass || DateProfileGenerator;\n return new DateProfileGeneratorClass(props);\n}\nfunction buildViewApi(type, getCurrentData, dateEnv) {\n return new ViewImpl(type, getCurrentData, dateEnv);\n}\nfunction buildEventUiBySource(eventSources) {\n return mapHash(eventSources, (eventSource) => eventSource.ui);\n}\nfunction buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) {\n let eventUiBases = { '': eventUiSingleBase };\n for (let defId in eventDefs) {\n let def = eventDefs[defId];\n if (def.sourceId && eventUiBySource[def.sourceId]) {\n eventUiBases[defId] = eventUiBySource[def.sourceId];\n }\n }\n return eventUiBases;\n}\nfunction buildViewUiProps(calendarContext) {\n let { options } = calendarContext;\n return {\n eventUiSingleBase: createEventUi({\n display: options.eventDisplay,\n editable: options.editable,\n startEditable: options.eventStartEditable,\n durationEditable: options.eventDurationEditable,\n constraint: options.eventConstraint,\n overlap: typeof options.eventOverlap === 'boolean' ? options.eventOverlap : undefined,\n allow: options.eventAllow,\n backgroundColor: options.eventBackgroundColor,\n borderColor: options.eventBorderColor,\n textColor: options.eventTextColor,\n color: options.eventColor,\n // classNames: options.eventClassNames // render hook will handle this\n }, calendarContext),\n selectionConfig: createEventUi({\n constraint: options.selectConstraint,\n overlap: typeof options.selectOverlap === 'boolean' ? options.selectOverlap : undefined,\n allow: options.selectAllow,\n }, calendarContext),\n };\n}\nfunction computeIsLoading(state, context) {\n for (let isLoadingFunc of context.pluginHooks.isLoadingFuncs) {\n if (isLoadingFunc(state)) {\n return true;\n }\n }\n return false;\n}\nfunction parseContextBusinessHours(calendarContext) {\n return parseBusinessHours(calendarContext.options.businessHours, calendarContext);\n}\nfunction warnUnknownOptions(options, viewName) {\n for (let optionName in options) {\n console.warn(`Unknown option '${optionName}'` +\n (viewName ? ` for view '${viewName}'` : ''));\n }\n}\n\nclass ToolbarSection extends BaseComponent {\n render() {\n let children = this.props.widgetGroups.map((widgetGroup) => this.renderWidgetGroup(widgetGroup));\n return createElement('div', { className: 'fc-toolbar-chunk' }, ...children);\n }\n renderWidgetGroup(widgetGroup) {\n let { props } = this;\n let { theme } = this.context;\n let children = [];\n let isOnlyButtons = true;\n for (let widget of widgetGroup) {\n let { buttonName, buttonClick, buttonText, buttonIcon, buttonHint } = widget;\n if (buttonName === 'title') {\n isOnlyButtons = false;\n children.push(createElement(\"h2\", { className: \"fc-toolbar-title\", id: props.titleId }, props.title));\n }\n else {\n let isPressed = buttonName === props.activeButton;\n let isDisabled = (!props.isTodayEnabled && buttonName === 'today') ||\n (!props.isPrevEnabled && buttonName === 'prev') ||\n (!props.isNextEnabled && buttonName === 'next');\n let buttonClasses = [`fc-${buttonName}-button`, theme.getClass('button')];\n if (isPressed) {\n buttonClasses.push(theme.getClass('buttonActive'));\n }\n 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, role: \"img\" }) : '')));\n }\n }\n if (children.length > 1) {\n let groupClassName = (isOnlyButtons && theme.getClass('buttonGroup')) || '';\n return createElement('div', { className: groupClassName }, ...children);\n }\n return children[0];\n }\n}\n\nclass Toolbar extends BaseComponent {\n render() {\n let { model, extraClassName } = this.props;\n let forceLtr = false;\n let startContent;\n let endContent;\n let sectionWidgets = model.sectionWidgets;\n let centerContent = sectionWidgets.center;\n if (sectionWidgets.left) {\n forceLtr = true;\n startContent = sectionWidgets.left;\n }\n else {\n startContent = sectionWidgets.start;\n }\n if (sectionWidgets.right) {\n forceLtr = true;\n endContent = sectionWidgets.right;\n }\n else {\n endContent = sectionWidgets.end;\n }\n let classNames = [\n extraClassName || '',\n 'fc-toolbar',\n forceLtr ? 'fc-toolbar-ltr' : '',\n ];\n return (createElement(\"div\", { className: classNames.join(' ') },\n this.renderSection('start', startContent || []),\n this.renderSection('center', centerContent || []),\n this.renderSection('end', endContent || [])));\n }\n renderSection(key, widgetGroups) {\n let { props } = this;\n 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 }));\n }\n}\n\nclass ViewHarness extends BaseComponent {\n constructor() {\n super(...arguments);\n this.state = {\n availableWidth: null,\n };\n this.handleEl = (el) => {\n this.el = el;\n setRef(this.props.elRef, el);\n this.updateAvailableWidth();\n };\n this.handleResize = () => {\n this.updateAvailableWidth();\n };\n }\n render() {\n let { props, state } = this;\n let { aspectRatio } = props;\n let classNames = [\n 'fc-view-harness',\n (aspectRatio || props.liquid || props.height)\n ? 'fc-view-harness-active' // harness controls the height\n : 'fc-view-harness-passive', // let the view do the height\n ];\n let height = '';\n let paddingBottom = '';\n if (aspectRatio) {\n if (state.availableWidth !== null) {\n height = state.availableWidth / aspectRatio;\n }\n else {\n // while waiting to know availableWidth, we can't set height to *zero*\n // because will cause lots of unnecessary scrollbars within scrollgrid.\n // BETTER: don't start rendering ANYTHING yet until we know container width\n // NOTE: why not always use paddingBottom? Causes height oscillation (issue 5606)\n paddingBottom = `${(1 / aspectRatio) * 100}%`;\n }\n }\n else {\n height = props.height || '';\n }\n return (createElement(\"div\", { \"aria-labelledby\": props.labeledById, ref: this.handleEl, className: classNames.join(' '), style: { height, paddingBottom } }, props.children));\n }\n componentDidMount() {\n this.context.addResizeHandler(this.handleResize);\n }\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleResize);\n }\n updateAvailableWidth() {\n if (this.el && // needed. but why?\n this.props.aspectRatio // aspectRatio is the only height setting that needs availableWidth\n ) {\n this.setState({ availableWidth: this.el.offsetWidth });\n }\n }\n}\n\n/*\nDetects when the user clicks on an event within a DateComponent\n*/\nclass EventClicking extends Interaction {\n constructor(settings) {\n super(settings);\n this.handleSegClick = (ev, segEl) => {\n let { component } = this;\n let { context } = component;\n let seg = getElSeg(segEl);\n if (seg && // might be the <div> surrounding the more link\n component.isValidSegDownEl(ev.target)) {\n // our way to simulate a link click for elements that can't be <a> tags\n // grab before trigger fired in case trigger trashes DOM thru rerendering\n let hasUrlContainer = elementClosest(ev.target, '.fc-event-forced-url');\n let url = hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href : '';\n context.emitter.trigger('eventClick', {\n el: segEl,\n event: new EventImpl(component.context, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: context.viewApi,\n });\n if (url && !ev.defaultPrevented) {\n window.location.href = url;\n }\n }\n };\n this.destroy = listenBySelector(settings.el, 'click', '.fc-event', // on both fg and bg events\n this.handleSegClick);\n }\n}\n\n/*\nTriggers events and adds/removes core classNames when the user's pointer\nenters/leaves event-elements of a component.\n*/\nclass EventHovering extends Interaction {\n constructor(settings) {\n super(settings);\n // for simulating an eventMouseLeave when the event el is destroyed while mouse is over it\n this.handleEventElRemove = (el) => {\n if (el === this.currentSegEl) {\n this.handleSegLeave(null, this.currentSegEl);\n }\n };\n this.handleSegEnter = (ev, segEl) => {\n if (getElSeg(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper\n this.currentSegEl = segEl;\n this.triggerEvent('eventMouseEnter', ev, segEl);\n }\n };\n this.handleSegLeave = (ev, segEl) => {\n if (this.currentSegEl) {\n this.currentSegEl = null;\n this.triggerEvent('eventMouseLeave', ev, segEl);\n }\n };\n this.removeHoverListeners = listenToHoverBySelector(settings.el, '.fc-event', // on both fg and bg events\n this.handleSegEnter, this.handleSegLeave);\n }\n destroy() {\n this.removeHoverListeners();\n }\n triggerEvent(publicEvName, ev, segEl) {\n let { component } = this;\n let { context } = component;\n let seg = getElSeg(segEl);\n if (!ev || component.isValidSegDownEl(ev.target)) {\n context.emitter.trigger(publicEvName, {\n el: segEl,\n event: new EventImpl(context, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: context.viewApi,\n });\n }\n }\n}\n\nclass CalendarContent extends PureComponent {\n constructor() {\n super(...arguments);\n this.buildViewContext = memoize(buildViewContext);\n this.buildViewPropTransformers = memoize(buildViewPropTransformers);\n this.buildToolbarProps = memoize(buildToolbarProps);\n this.headerRef = createRef();\n this.footerRef = createRef();\n this.interactionsStore = {};\n // eslint-disable-next-line\n this.state = {\n viewLabelId: getUniqueDomId(),\n };\n // Component Registration\n // -----------------------------------------------------------------------------------------------------------------\n this.registerInteractiveComponent = (component, settingsInput) => {\n let settings = parseInteractionSettings(component, settingsInput);\n let DEFAULT_INTERACTIONS = [\n EventClicking,\n EventHovering,\n ];\n let interactionClasses = DEFAULT_INTERACTIONS.concat(this.props.pluginHooks.componentInteractions);\n let interactions = interactionClasses.map((TheInteractionClass) => new TheInteractionClass(settings));\n this.interactionsStore[component.uid] = interactions;\n interactionSettingsStore[component.uid] = settings;\n };\n this.unregisterInteractiveComponent = (component) => {\n let listeners = this.interactionsStore[component.uid];\n if (listeners) {\n for (let listener of listeners) {\n listener.destroy();\n }\n delete this.interactionsStore[component.uid];\n }\n delete interactionSettingsStore[component.uid];\n };\n // Resizing\n // -----------------------------------------------------------------------------------------------------------------\n this.resizeRunner = new DelayedRunner(() => {\n this.props.emitter.trigger('_resize', true); // should window resizes be considered \"forced\" ?\n this.props.emitter.trigger('windowResize', { view: this.props.viewApi });\n });\n this.handleWindowResize = (ev) => {\n let { options } = this.props;\n if (options.handleWindowResize &&\n ev.target === window // avoid jqui events\n ) {\n this.resizeRunner.request(options.windowResizeDelay);\n }\n };\n }\n /*\n renders INSIDE of an outer div\n */\n render() {\n let { props } = this;\n let { toolbarConfig, options } = props;\n let toolbarProps = this.buildToolbarProps(props.viewSpec, props.dateProfile, props.dateProfileGenerator, props.currentDate, getNow(props.options.now, props.dateEnv), // TODO: use NowTimer????\n props.viewTitle);\n let viewVGrow = false;\n let viewHeight = '';\n let viewAspectRatio;\n if (props.isHeightAuto || props.forPrint) {\n viewHeight = '';\n }\n else if (options.height != null) {\n viewVGrow = true;\n }\n else if (options.contentHeight != null) {\n viewHeight = options.contentHeight;\n }\n else {\n viewAspectRatio = Math.max(options.aspectRatio, 0.5); // prevent from getting too tall\n }\n let viewContext = this.buildViewContext(props.viewSpec, props.viewApi, props.options, props.dateProfileGenerator, props.dateEnv, props.theme, props.pluginHooks, props.dispatch, props.getCurrentData, props.emitter, props.calendarApi, this.registerInteractiveComponent, this.unregisterInteractiveComponent);\n let viewLabelId = (toolbarConfig.header && toolbarConfig.header.hasTitle)\n ? this.state.viewLabelId\n : undefined;\n return (createElement(ViewContextType.Provider, { value: viewContext },\n toolbarConfig.header && (createElement(Toolbar, Object.assign({ ref: this.headerRef, extraClassName: \"fc-header-toolbar\", model: toolbarConfig.header, titleId: viewLabelId }, toolbarProps))),\n createElement(ViewHarness, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, labeledById: viewLabelId },\n this.renderView(props),\n this.buildAppendContent()),\n toolbarConfig.footer && (createElement(Toolbar, Object.assign({ ref: this.footerRef, extraClassName: \"fc-footer-toolbar\", model: toolbarConfig.footer, titleId: \"\" }, toolbarProps)))));\n }\n componentDidMount() {\n let { props } = this;\n this.calendarInteractions = props.pluginHooks.calendarInteractions\n .map((CalendarInteractionClass) => new CalendarInteractionClass(props));\n window.addEventListener('resize', this.handleWindowResize);\n let { propSetHandlers } = props.pluginHooks;\n for (let propName in propSetHandlers) {\n propSetHandlers[propName](props[propName], props);\n }\n }\n componentDidUpdate(prevProps) {\n let { props } = this;\n let { propSetHandlers } = props.pluginHooks;\n for (let propName in propSetHandlers) {\n if (props[propName] !== prevProps[propName]) {\n propSetHandlers[propName](props[propName], props);\n }\n }\n }\n componentWillUnmount() {\n window.removeEventListener('resize', this.handleWindowResize);\n this.resizeRunner.clear();\n for (let interaction of this.calendarInteractions) {\n interaction.destroy();\n }\n this.props.emitter.trigger('_unmount');\n }\n buildAppendContent() {\n let { props } = this;\n let children = props.pluginHooks.viewContainerAppends.map((buildAppendContent) => buildAppendContent(props));\n return createElement(Fragment, {}, ...children);\n }\n renderView(props) {\n let { pluginHooks } = props;\n let { viewSpec } = props;\n let viewProps = {\n dateProfile: props.dateProfile,\n businessHours: props.businessHours,\n eventStore: props.renderableEventStore,\n eventUiBases: props.eventUiBases,\n dateSelection: props.dateSelection,\n eventSelection: props.eventSelection,\n eventDrag: props.eventDrag,\n eventResize: props.eventResize,\n isHeightAuto: props.isHeightAuto,\n forPrint: props.forPrint,\n };\n let transformers = this.buildViewPropTransformers(pluginHooks.viewPropsTransformers);\n for (let transformer of transformers) {\n Object.assign(viewProps, transformer.transform(viewProps, props));\n }\n let ViewComponent = viewSpec.component;\n return (createElement(ViewComponent, Object.assign({}, viewProps)));\n }\n}\nfunction buildToolbarProps(viewSpec, dateProfile, dateProfileGenerator, currentDate, now, title) {\n // don't force any date-profiles to valid date profiles (the `false`) so that we can tell if it's invalid\n let todayInfo = dateProfileGenerator.build(now, undefined, false); // TODO: need `undefined` or else INFINITE LOOP for some reason\n let prevInfo = dateProfileGenerator.buildPrev(dateProfile, currentDate, false);\n let nextInfo = dateProfileGenerator.buildNext(dateProfile, currentDate, false);\n return {\n title,\n activeButton: viewSpec.type,\n navUnit: viewSpec.singleUnit,\n isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now),\n isPrevEnabled: prevInfo.isValid,\n isNextEnabled: nextInfo.isValid,\n };\n}\n// Plugin\n// -----------------------------------------------------------------------------------------------------------------\nfunction buildViewPropTransformers(theClasses) {\n return theClasses.map((TheClass) => new TheClass());\n}\n\nclass Calendar extends CalendarImpl {\n constructor(el, optionOverrides = {}) {\n super();\n this.isRendering = false;\n this.isRendered = false;\n this.currentClassNames = [];\n this.customContentRenderId = 0;\n this.handleAction = (action) => {\n // actions we know we want to render immediately\n switch (action.type) {\n case 'SET_EVENT_DRAG':\n case 'SET_EVENT_RESIZE':\n this.renderRunner.tryDrain();\n }\n };\n this.handleData = (data) => {\n this.currentData = data;\n this.renderRunner.request(data.calendarOptions.rerenderDelay);\n };\n this.handleRenderRequest = () => {\n if (this.isRendering) {\n this.isRendered = true;\n let { currentData } = this;\n flushSync(() => {\n render(createElement(CalendarRoot, { options: currentData.calendarOptions, theme: currentData.theme, emitter: currentData.emitter }, (classNames, height, isHeightAuto, forPrint) => {\n this.setClassNames(classNames);\n this.setHeight(height);\n return (createElement(RenderId.Provider, { value: this.customContentRenderId },\n createElement(CalendarContent, Object.assign({ isHeightAuto: isHeightAuto, forPrint: forPrint }, currentData))));\n }), this.el);\n });\n }\n else if (this.isRendered) {\n this.isRendered = false;\n render(null, this.el);\n this.setClassNames([]);\n this.setHeight('');\n }\n };\n ensureElHasStyles(el);\n this.el = el;\n this.renderRunner = new DelayedRunner(this.handleRenderRequest);\n new CalendarDataManager({\n optionOverrides,\n calendarApi: this,\n onAction: this.handleAction,\n onData: this.handleData,\n });\n }\n render() {\n let wasRendering = this.isRendering;\n if (!wasRendering) {\n this.isRendering = true;\n }\n else {\n this.customContentRenderId += 1;\n }\n this.renderRunner.request();\n if (wasRendering) {\n this.updateSize();\n }\n }\n destroy() {\n if (this.isRendering) {\n this.isRendering = false;\n this.renderRunner.request();\n }\n }\n updateSize() {\n flushSync(() => {\n super.updateSize();\n });\n }\n batchRendering(func) {\n this.renderRunner.pause('batchRendering');\n func();\n this.renderRunner.resume('batchRendering');\n }\n pauseRendering() {\n this.renderRunner.pause('pauseRendering');\n }\n resumeRendering() {\n this.renderRunner.resume('pauseRendering', true);\n }\n resetOptions(optionOverrides, changedOptionNames) {\n this.currentDataManager.resetOptions(optionOverrides, changedOptionNames);\n }\n setClassNames(classNames) {\n if (!isArraysEqual(classNames, this.currentClassNames)) {\n let { classList } = this.el;\n for (let className of this.currentClassNames) {\n classList.remove(className);\n }\n for (let className of classNames) {\n classList.add(className);\n }\n this.currentClassNames = classNames;\n }\n }\n setHeight(height) {\n applyStyleProp(this.el, 'height', height);\n }\n}\n\nfunction formatDate(dateInput, options = {}) {\n let dateEnv = buildDateEnv(options);\n let formatter = createFormatter(options);\n let dateMeta = dateEnv.createMarkerMeta(dateInput);\n if (!dateMeta) { // TODO: warning?\n return '';\n }\n return dateEnv.format(dateMeta.marker, formatter, {\n forcedTzo: dateMeta.forcedTzo,\n });\n}\nfunction formatRange(startInput, endInput, options) {\n let dateEnv = buildDateEnv(typeof options === 'object' && options ? options : {}); // pass in if non-null object\n let formatter = createFormatter(options);\n let startMeta = dateEnv.createMarkerMeta(startInput);\n let endMeta = dateEnv.createMarkerMeta(endInput);\n if (!startMeta || !endMeta) { // TODO: warning?\n return '';\n }\n return dateEnv.formatRange(startMeta.marker, endMeta.marker, formatter, {\n forcedStartTzo: startMeta.forcedTzo,\n forcedEndTzo: endMeta.forcedTzo,\n isEndExclusive: options.isEndExclusive,\n defaultSeparator: BASE_OPTION_DEFAULTS.defaultRangeSeparator,\n });\n}\n// TODO: more DRY and optimized\nfunction buildDateEnv(settings) {\n let locale = buildLocale(settings.locale || 'en', organizeRawLocales([]).map); // TODO: don't hardcode 'en' everywhere\n return new DateEnv(Object.assign(Object.assign({ timeZone: BASE_OPTION_DEFAULTS.timeZone, calendarSystem: 'gregory' }, settings), { locale }));\n}\n\n// HELPERS\n/*\nif nextDayThreshold is specified, slicing is done in an all-day fashion.\nyou can get nextDayThreshold from context.nextDayThreshold\n*/\nfunction sliceEvents(props, allDay) {\n return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;\n}\n\nconst version = '6.1.11';\n\nexport { Calendar, createPlugin, formatDate, formatRange, globalLocales, globalPlugins, sliceEvents, version };\n"],"names":["globalLocales","MINIMAL_RAW_EN_LOCALE","code","week","dow","doy","direction","buttonText","prev","next","prevYear","nextYear","year","today","month","day","list","weekText","weekTextLong","closeHint","timeHint","eventHint","allDayText","moreLinkText","noEventsText","RAW_EN_LOCALE","Object","assign","buttonHints","unit","concat","viewHint","navLinkHint","moreLinkHint","eventCnt","organizeRawLocales","explicitRawLocales","defaultCode","length","allRawLocales","rawLocaleMap","en","rawLocale","map","buildLocale","inputSingular","available","Array","isArray","codeArg","codes","raw","i","parts","toLocaleLowerCase","split","j","simpleId","slice","join","queryRawLocale","parseLocale","queryLocale","merged","mergeProps","simpleNumberFormat","Intl","NumberFormat","options","createPlugin","input","id","guid","name","premiumReleaseDate","Date","undefined","deps","reducers","isLoadingFuncs","contextInit","eventRefiners","eventDefMemberAdders","eventSourceRefiners","isDraggableTransformers","eventDragMutationMassagers","eventDefMutationAppliers","dateSelectionTransformers","datePointTransforms","dateSpanTransforms","views","viewPropsTransformers","isPropsValid","externalDefTransforms","viewContainerAppends","eventDropTransformers","componentInteractions","calendarInteractions","themeClasses","eventSourceDefs","cmdFormatter","recurringTypes","namedTimeZonedImpl","initialView","elementDraggingImpl","optionChangeHandlers","scrollGridImpl","listenerRefiners","optionRefiners","propSetHandlers","buildBuildPluginHooks","currentHooks","currentOverrideDefs","currentGlobalDefs","overrideDefs","globalDefs","isArraysEqual","pluginDefs","currentPluginIds","hooks","addDefs","defs","def","pluginName","currentId","hooks1","compareOptionalDates","hooks0","console","warn","buildPluginHooks","date0","date1","Math","max","valueOf","StandardTheme","Theme","ensureViewDef","viewType","hash","defaultConfigs","overrideConfigs","viewDef","defaultConfig","overrideConfig","queryProp","theComponent","superType","superDef","Error","component","type","defaults","rawOptions","overrides","buildViewDef","parseViewConfigs","inputs","mapHash","parseViewConfig","content","createViewHookComponent","prototype","BaseComponent","viewProps","createElement","ViewContextType","Consumer","context","ContentContainer","elTag","elClasses","buildViewClassNames","viewSpec","renderProps","nextDayThreshold","generatorName","customGenerator","classNameGenerator","classNames","didMount","willUnmount","buildViewSpecs","defaultInputs","optionOverrides","dynamicOptionOverrides","localeDefaults","viewDefs","compileViewDefs","durationInput","duration","durationUnit","singleUnit","singleUnitOverrides","json","JSON","stringify","res","durationInputMap","createDuration","createDurationCached","denom","greatestDurationDenominator","value","queryButtonText","optionsSubset","buttonTextMap","buttonTextKey","queryButtonTitle","buttonKey","optionDefaults","buttonTextOverride","buttonTextDefault","BASE_OPTION_DEFAULTS","buttonTitleOverride","buttonHint","buttonTitleDefault","buildViewSpec","classes","root","tableCellShaded","buttonGroup","button","buttonActive","baseIconClass","iconClasses","close","rtlIconClasses","iconOverrideOption","iconOverrideCustomButtonOption","iconOverridePrefix","initEventSources","calendarOptions","dateProfile","activeRange","addSources","refiners","buildEventSourceRefiners","rawSources","eventSources","sources","initialEvents","unshift","events","rawSource","source","parseEventSource","push","parseInitialSources","reduceEventSources","action","eventSourceHash","sourceId","filterHash","eventSource","fetchDirtySources","fetchSourcesByIds","sourceIds","arrayToHash","excludeStaticSources","isRefetch","sourceHash","fetchId","fetchRange","latestFetchId","isFetching","receiveResponse","computeEventSourcesLoading","doesSourceNeedRange","lazyFetching","start","end","isSourceDirty","prevSources","sourceIdHash","nextSources","fetchSource","calendarApi","sourceDef","pluginHooks","sourceDefId","fetch","range","rawEvents","eventSourceSuccess","call","response","success","dispatch","error","errorHandled","eventSourceFailure","failure","message","ignoreRange","reduceDateSelection","currentSelection","selection","reduceSelectedEvent","currentInstanceId","eventInstanceId","reduceEventDrag","currentDrag","newDrag","state","affectedEvents","mutatedEvents","isEvent","reduceEventResize","currentResize","newResize","parseToolbars","calendarOptionOverrides","theme","viewSpecs","header","headerToolbar","parseToolbar","footer","footerToolbar","sectionStrHash","sectionWidgets","viewsWithButtons","hasTitle","sectionName","sectionRes","parseSection","widgets","sectionStr","isRtl","calendarCustomButtons","customButtons","calendarButtonTextOverrides","calendarButtonText","calendarButtonHintOverrides","calendarButtonHints","sectionSubstrs","buttonGroupStr","buttonName","customButtonProps","buttonClick","buttonIcon","ev","click","target","getCustomButtonIconClass","getIconClass","text","hint","changeView","textFallback","formatWithOrdinals","prevOrNext","navUnit","ViewImpl","constructor","getCurrentData","dateEnv","this","calendar","title","viewTitle","activeStart","toDate","activeEnd","currentStart","currentRange","currentEnd","getOption","arrayEventSourcePlugin","parseMeta","refined","arg","successCallback","meta","funcEventSourcePlugin","errorCallback","func","unpromisify","bind","buildRangeApiWithTimeZone","jsonFeedEventSourcePlugin","method","String","extraParams","identity","startParam","endParam","timeZoneParam","url","format","toUpperCase","requestParams","customRequestParams","params","formatIso","timeZone","buildRequestParams","requestJson","then","_ref","SIMPLE_RECURRING_REFINERS","daysOfWeek","startTime","endTime","startRecur","endRecur","handleEventSources","unfoundSources","hashValuesToArray","_raw","newInputs","inputFound","splice","unfoundSource","newInput","addEventSource","globalPlugins","parse","recurringData","createMarker","subtractDurations","allDayGuess","Boolean","typeData","expand","framingRange","clippedFramingRange","intersectRanges","dowHash","dayMarker","startOfDay","endMarker","instanceStarts","instanceStart","getUTCDay","add","addDays","expandRanges","emitter","trigger","view","viewApi","eventStore","hasHandlers","buildEventApis","TaskRunner","runTaskOption","drainedOption","queue","delayedRunner","DelayedRunner","drain","request","task","delay","pause","scope","resume","force","completedTasks","shift","runTask","drained","buildTitle","viewOptions","test","currentRangeUnit","formatRange","createFormatter","titleFormat","days","diffWholeDays","buildTitleFormat","isEndExclusive","isRangeAllDay","defaultSeparator","titleRangeSeparator","CalendarDataManager","props","computeCurrentViewData","memoize","_computeCurrentViewData","buildDateEnv","buildDateEnv$1","buildTheme","buildDateProfileGenerator","memoizeObjArg","buildViewApi","buildViewUiProps","buildEventUiBySource","isPropsEqual","buildEventUiBases","parseContextBusinessHours","Emitter","actionRunner","_handleAction","updateData","currentCalendarOptionsInput","currentCalendarOptionsRefined","currentViewOptionsInput","currentViewOptionsRefined","currentCalendarOptionsRefiners","optionsForRefining","optionsForHandling","data","optionsData","computeOptionsData","currentViewType","currentViewData","currentDataManager","setThisContext","setOptions","currentDate","getInitialDate","dateProfileGenerator","build","rangeContainsMarker","calendarContext","callback","initialState","businessHours","eventUiBases","createEmptyEventStore","renderableEventStore","dateSelection","eventSelection","eventDrag","eventResize","selectionConfig","contextAndState","reducer","computeIsLoading","resetOptions","changedOptionNames","optionName","rawOptionValue","reduceDynamicOptionOverrides","reduceViewType","reduceCurrentDate","currentDateProfile","dp","dateMarker","buildPrev","isValid","buildNext","reduceDateProfile","reduceEventStore","progressiveEventRendering","eventUiSingleBase","eventUiBySource","newState","wasLoading","isLoading","onAction","oldData","changeHandlers","oldCalendarOptions","newCalendarOptions","reduceEventSourcesNewTimeZone","rezoneEventStoreDates","indexOf","onData","stableOptionOverrides","stableDynamicOptionOverrides","stableCalendarOptionsData","refinedOptions","availableLocaleData","extra","processRawCalendarOptions","warnUnknownOptions","locale","weekNumberCalculation","firstDay","defaultRangeSeparator","toolbarConfig","availableRawLocales","locales","mergeRawOptions","plugins","BASE_OPTION_REFINERS","CALENDAR_LISTENER_REFINERS","CALENDAR_OPTION_REFINERS","currentRaw","currentRefined","anyChanges","COMPLEX_OPTION_COMPARATORS","processRawViewOptions","dateProfileGeneratorClass","usesMinMaxTime","slotMinTime","slotMaxTime","showNonCurrentDates","dayCount","dateAlignment","dateIncrement","hiddenDays","weekends","nowInput","now","validRangeInput","validRange","visibleRangeInput","visibleRange","fixedWeekCount","VIEW_OPTION_REFINERS","explicitLocale","DateEnv","calendarSystem","namedTimeZoneImpl","themeSystem","DateProfileGenerator","ui","eventDefs","defId","createEventUi","display","eventDisplay","editable","startEditable","eventStartEditable","durationEditable","eventDurationEditable","constraint","eventConstraint","overlap","eventOverlap","allow","eventAllow","backgroundColor","eventBackgroundColor","borderColor","eventBorderColor","textColor","eventTextColor","color","eventColor","selectConstraint","selectOverlap","selectAllow","isLoadingFunc","parseBusinessHours","viewName","ToolbarSection","render","children","widgetGroups","widgetGroup","renderWidgetGroup","className","isOnlyButtons","widget","titleId","isPressed","activeButton","isDisabled","isTodayEnabled","isPrevEnabled","isNextEnabled","buttonClasses","getClass","disabled","onClick","role","groupClassName","Toolbar","startContent","endContent","model","extraClassName","forceLtr","centerContent","center","left","right","renderSection","key","ViewHarness","super","arguments","availableWidth","handleEl","el","setRef","elRef","updateAvailableWidth","handleResize","aspectRatio","liquid","height","paddingBottom","labeledById","ref","style","componentDidMount","addResizeHandler","componentWillUnmount","removeResizeHandler","setState","offsetWidth","EventClicking","Interaction","settings","handleSegClick","segEl","seg","getElSeg","isValidSegDownEl","hasUrlContainer","elementClosest","querySelector","href","event","EventImpl","eventRange","instance","jsEvent","defaultPrevented","window","location","destroy","listenBySelector","EventHovering","handleEventElRemove","currentSegEl","handleSegLeave","handleSegEnter","triggerEvent","removeHoverListeners","listenToHoverBySelector","publicEvName","CalendarContent","PureComponent","buildViewContext","buildViewPropTransformers","buildToolbarProps","headerRef","createRef","footerRef","interactionsStore","viewLabelId","getUniqueDomId","registerInteractiveComponent","settingsInput","parseInteractionSettings","interactions","TheInteractionClass","uid","interactionSettingsStore","unregisterInteractiveComponent","listeners","listener","resizeRunner","handleWindowResize","windowResizeDelay","viewAspectRatio","toolbarProps","getNow","viewVGrow","viewHeight","isHeightAuto","forPrint","contentHeight","viewContext","Provider","renderView","buildAppendContent","CalendarInteractionClass","addEventListener","propName","componentDidUpdate","prevProps","removeEventListener","clear","interaction","Fragment","transformers","transformer","transform","ViewComponent","todayInfo","prevInfo","nextInfo","theClasses","TheClass","Calendar","CalendarImpl","isRendering","isRendered","currentClassNames","customContentRenderId","handleAction","renderRunner","tryDrain","handleData","currentData","rerenderDelay","handleRenderRequest","flushSync","CalendarRoot","setClassNames","setHeight","RenderId","ensureElHasStyles","wasRendering","updateSize","batchRendering","pauseRendering","resumeRendering","classList","remove","applyStyleProp","formatDate","dateInput","formatter","dateMeta","createMarkerMeta","marker","forcedTzo","startInput","endInput","startMeta","endMeta","forcedStartTzo","forcedEndTzo","sliceEvents","allDay","sliceEventStore","fg","version"],"sourceRoot":""}
1
+ {"version":3,"file":"static/js/1922.436850bf.chunk.js","mappings":"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","sources":["../node_modules/@fullcalendar/core/index.js"],"sourcesContent":["import { m as mergeProps, g as guid, i as isArraysEqual, T as Theme, a as mapHash, B as BaseComponent, V as ViewContextType, C as ContentContainer, b as buildViewClassNames, c as greatestDurationDenominator, d as createDuration, e 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 setRef, Z as Interaction, _ as getElSeg, $ as elementClosest, a0 as EventImpl, a1 as listenBySelector, a2 as listenToHoverBySelector, a3 as PureComponent, a4 as buildViewContext, a5 as getUniqueDomId, a6 as parseInteractionSettings, a7 as interactionSettingsStore, a8 as getNow, a9 as CalendarImpl, aa as flushSync, ab as CalendarRoot, ac as RenderId, ad as ensureElHasStyles, ae as applyStyleProp, af as sliceEventStore } from './internal-common.js';\nexport { ag as JsonRequestError } from './internal-common.js';\nimport { createElement, createRef, Fragment, render } from 'preact';\nimport 'preact/compat';\n\nconst globalLocales = [];\n\nconst MINIMAL_RAW_EN_LOCALE = {\n code: 'en',\n week: {\n dow: 0,\n doy: 4, // 4 days need to be within the year to be considered the first week\n },\n direction: 'ltr',\n buttonText: {\n prev: 'prev',\n next: 'next',\n prevYear: 'prev year',\n nextYear: 'next year',\n year: 'year',\n today: 'today',\n month: 'month',\n week: 'week',\n day: 'day',\n list: 'list',\n },\n weekText: 'W',\n weekTextLong: 'Week',\n closeHint: 'Close',\n timeHint: 'Time',\n eventHint: 'Event',\n allDayText: 'all-day',\n moreLinkText: 'more',\n noEventsText: 'No events to display',\n};\nconst RAW_EN_LOCALE = Object.assign(Object.assign({}, MINIMAL_RAW_EN_LOCALE), { \n // Includes things we don't want other locales to inherit,\n // things that derive from other translatable strings.\n buttonHints: {\n prev: 'Previous $0',\n next: 'Next $0',\n today(buttonText, unit) {\n return (unit === 'day')\n ? 'Today'\n : `This ${buttonText}`;\n },\n }, viewHint: '$0 view', navLinkHint: 'Go to $0', moreLinkHint(eventCnt) {\n return `Show ${eventCnt} more event${eventCnt === 1 ? '' : 's'}`;\n } });\nfunction organizeRawLocales(explicitRawLocales) {\n let defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en';\n let allRawLocales = globalLocales.concat(explicitRawLocales);\n let rawLocaleMap = {\n en: RAW_EN_LOCALE,\n };\n for (let rawLocale of allRawLocales) {\n rawLocaleMap[rawLocale.code] = rawLocale;\n }\n return {\n map: rawLocaleMap,\n defaultCode,\n };\n}\nfunction buildLocale(inputSingular, available) {\n if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) {\n return parseLocale(inputSingular.code, [inputSingular.code], inputSingular);\n }\n return queryLocale(inputSingular, available);\n}\nfunction queryLocale(codeArg, available) {\n let codes = [].concat(codeArg || []); // will convert to array\n let raw = queryRawLocale(codes, available) || RAW_EN_LOCALE;\n return parseLocale(codeArg, codes, raw);\n}\nfunction queryRawLocale(codes, available) {\n for (let i = 0; i < codes.length; i += 1) {\n let parts = codes[i].toLocaleLowerCase().split('-');\n for (let j = parts.length; j > 0; j -= 1) {\n let simpleId = parts.slice(0, j).join('-');\n if (available[simpleId]) {\n return available[simpleId];\n }\n }\n }\n return null;\n}\nfunction parseLocale(codeArg, codes, raw) {\n let merged = mergeProps([MINIMAL_RAW_EN_LOCALE, raw], ['buttonText']);\n delete merged.code; // don't want this part of the options\n let { week } = merged;\n delete merged.week;\n return {\n codeArg,\n codes,\n week,\n simpleNumberFormat: new Intl.NumberFormat(codeArg),\n options: merged,\n };\n}\n\n// TODO: easier way to add new hooks? need to update a million things\nfunction createPlugin(input) {\n return {\n id: guid(),\n name: input.name,\n premiumReleaseDate: input.premiumReleaseDate ? new Date(input.premiumReleaseDate) : undefined,\n deps: input.deps || [],\n reducers: input.reducers || [],\n isLoadingFuncs: input.isLoadingFuncs || [],\n contextInit: [].concat(input.contextInit || []),\n eventRefiners: input.eventRefiners || {},\n eventDefMemberAdders: input.eventDefMemberAdders || [],\n eventSourceRefiners: input.eventSourceRefiners || {},\n isDraggableTransformers: input.isDraggableTransformers || [],\n eventDragMutationMassagers: input.eventDragMutationMassagers || [],\n eventDefMutationAppliers: input.eventDefMutationAppliers || [],\n dateSelectionTransformers: input.dateSelectionTransformers || [],\n datePointTransforms: input.datePointTransforms || [],\n dateSpanTransforms: input.dateSpanTransforms || [],\n views: input.views || {},\n viewPropsTransformers: input.viewPropsTransformers || [],\n isPropsValid: input.isPropsValid || null,\n externalDefTransforms: input.externalDefTransforms || [],\n viewContainerAppends: input.viewContainerAppends || [],\n eventDropTransformers: input.eventDropTransformers || [],\n componentInteractions: input.componentInteractions || [],\n calendarInteractions: input.calendarInteractions || [],\n themeClasses: input.themeClasses || {},\n eventSourceDefs: input.eventSourceDefs || [],\n cmdFormatter: input.cmdFormatter,\n recurringTypes: input.recurringTypes || [],\n namedTimeZonedImpl: input.namedTimeZonedImpl,\n initialView: input.initialView || '',\n elementDraggingImpl: input.elementDraggingImpl,\n optionChangeHandlers: input.optionChangeHandlers || {},\n scrollGridImpl: input.scrollGridImpl || null,\n listenerRefiners: input.listenerRefiners || {},\n optionRefiners: input.optionRefiners || {},\n propSetHandlers: input.propSetHandlers || {},\n };\n}\nfunction buildPluginHooks(pluginDefs, globalDefs) {\n let currentPluginIds = {};\n let hooks = {\n premiumReleaseDate: undefined,\n reducers: [],\n isLoadingFuncs: [],\n contextInit: [],\n eventRefiners: {},\n eventDefMemberAdders: [],\n eventSourceRefiners: {},\n isDraggableTransformers: [],\n eventDragMutationMassagers: [],\n eventDefMutationAppliers: [],\n dateSelectionTransformers: [],\n datePointTransforms: [],\n dateSpanTransforms: [],\n views: {},\n viewPropsTransformers: [],\n isPropsValid: null,\n externalDefTransforms: [],\n viewContainerAppends: [],\n eventDropTransformers: [],\n componentInteractions: [],\n calendarInteractions: [],\n themeClasses: {},\n eventSourceDefs: [],\n cmdFormatter: null,\n recurringTypes: [],\n namedTimeZonedImpl: null,\n initialView: '',\n elementDraggingImpl: null,\n optionChangeHandlers: {},\n scrollGridImpl: null,\n listenerRefiners: {},\n optionRefiners: {},\n propSetHandlers: {},\n };\n function addDefs(defs) {\n for (let def of defs) {\n const pluginName = def.name;\n const currentId = currentPluginIds[pluginName];\n if (currentId === undefined) {\n currentPluginIds[pluginName] = def.id;\n addDefs(def.deps);\n hooks = combineHooks(hooks, def);\n }\n else if (currentId !== def.id) {\n // different ID than the one already added\n console.warn(`Duplicate plugin '${pluginName}'`);\n }\n }\n }\n if (pluginDefs) {\n addDefs(pluginDefs);\n }\n addDefs(globalDefs);\n return hooks;\n}\nfunction buildBuildPluginHooks() {\n let currentOverrideDefs = [];\n let currentGlobalDefs = [];\n let currentHooks;\n return (overrideDefs, globalDefs) => {\n if (!currentHooks || !isArraysEqual(overrideDefs, currentOverrideDefs) || !isArraysEqual(globalDefs, currentGlobalDefs)) {\n currentHooks = buildPluginHooks(overrideDefs, globalDefs);\n }\n currentOverrideDefs = overrideDefs;\n currentGlobalDefs = globalDefs;\n return currentHooks;\n };\n}\nfunction combineHooks(hooks0, hooks1) {\n return {\n premiumReleaseDate: compareOptionalDates(hooks0.premiumReleaseDate, hooks1.premiumReleaseDate),\n reducers: hooks0.reducers.concat(hooks1.reducers),\n isLoadingFuncs: hooks0.isLoadingFuncs.concat(hooks1.isLoadingFuncs),\n contextInit: hooks0.contextInit.concat(hooks1.contextInit),\n eventRefiners: Object.assign(Object.assign({}, hooks0.eventRefiners), hooks1.eventRefiners),\n eventDefMemberAdders: hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders),\n eventSourceRefiners: Object.assign(Object.assign({}, hooks0.eventSourceRefiners), hooks1.eventSourceRefiners),\n isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),\n eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),\n eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),\n dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),\n datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms),\n dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),\n views: Object.assign(Object.assign({}, hooks0.views), hooks1.views),\n viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),\n isPropsValid: hooks1.isPropsValid || hooks0.isPropsValid,\n externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),\n viewContainerAppends: hooks0.viewContainerAppends.concat(hooks1.viewContainerAppends),\n eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),\n calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions),\n componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions),\n themeClasses: Object.assign(Object.assign({}, hooks0.themeClasses), hooks1.themeClasses),\n eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),\n cmdFormatter: hooks1.cmdFormatter || hooks0.cmdFormatter,\n recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes),\n namedTimeZonedImpl: hooks1.namedTimeZonedImpl || hooks0.namedTimeZonedImpl,\n initialView: hooks0.initialView || hooks1.initialView,\n elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl,\n optionChangeHandlers: Object.assign(Object.assign({}, hooks0.optionChangeHandlers), hooks1.optionChangeHandlers),\n scrollGridImpl: hooks1.scrollGridImpl || hooks0.scrollGridImpl,\n listenerRefiners: Object.assign(Object.assign({}, hooks0.listenerRefiners), hooks1.listenerRefiners),\n optionRefiners: Object.assign(Object.assign({}, hooks0.optionRefiners), hooks1.optionRefiners),\n propSetHandlers: Object.assign(Object.assign({}, hooks0.propSetHandlers), hooks1.propSetHandlers),\n };\n}\nfunction compareOptionalDates(date0, date1) {\n if (date0 === undefined) {\n return date1;\n }\n if (date1 === undefined) {\n return date0;\n }\n return new Date(Math.max(date0.valueOf(), date1.valueOf()));\n}\n\nclass StandardTheme extends Theme {\n}\nStandardTheme.prototype.classes = {\n root: 'fc-theme-standard',\n tableCellShaded: 'fc-cell-shaded',\n buttonGroup: 'fc-button-group',\n button: 'fc-button fc-button-primary',\n buttonActive: 'fc-button-active',\n};\nStandardTheme.prototype.baseIconClass = 'fc-icon';\nStandardTheme.prototype.iconClasses = {\n close: 'fc-icon-x',\n prev: 'fc-icon-chevron-left',\n next: 'fc-icon-chevron-right',\n prevYear: 'fc-icon-chevrons-left',\n nextYear: 'fc-icon-chevrons-right',\n};\nStandardTheme.prototype.rtlIconClasses = {\n prev: 'fc-icon-chevron-right',\n next: 'fc-icon-chevron-left',\n prevYear: 'fc-icon-chevrons-right',\n nextYear: 'fc-icon-chevrons-left',\n};\nStandardTheme.prototype.iconOverrideOption = 'buttonIcons'; // TODO: make TS-friendly\nStandardTheme.prototype.iconOverrideCustomButtonOption = 'icon';\nStandardTheme.prototype.iconOverridePrefix = 'fc-icon-';\n\nfunction compileViewDefs(defaultConfigs, overrideConfigs) {\n let hash = {};\n let viewType;\n for (viewType in defaultConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n for (viewType in overrideConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n return hash;\n}\nfunction ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n if (hash[viewType]) {\n return hash[viewType];\n }\n let viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n if (viewDef) {\n hash[viewType] = viewDef;\n }\n return viewDef;\n}\nfunction buildViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n let defaultConfig = defaultConfigs[viewType];\n let overrideConfig = overrideConfigs[viewType];\n let queryProp = (name) => ((defaultConfig && defaultConfig[name] !== null) ? defaultConfig[name] :\n ((overrideConfig && overrideConfig[name] !== null) ? overrideConfig[name] : null));\n let theComponent = queryProp('component');\n let superType = queryProp('superType');\n let superDef = null;\n if (superType) {\n if (superType === viewType) {\n throw new Error('Can\\'t have a custom view type that references itself');\n }\n superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs);\n }\n if (!theComponent && superDef) {\n theComponent = superDef.component;\n }\n if (!theComponent) {\n return null; // don't throw a warning, might be settings for a single-unit view\n }\n return {\n type: viewType,\n component: theComponent,\n defaults: Object.assign(Object.assign({}, (superDef ? superDef.defaults : {})), (defaultConfig ? defaultConfig.rawOptions : {})),\n overrides: Object.assign(Object.assign({}, (superDef ? superDef.overrides : {})), (overrideConfig ? overrideConfig.rawOptions : {})),\n };\n}\n\nfunction parseViewConfigs(inputs) {\n return mapHash(inputs, parseViewConfig);\n}\nfunction parseViewConfig(input) {\n let rawOptions = typeof input === 'function' ?\n { component: input } :\n input;\n let { component } = rawOptions;\n if (rawOptions.content) {\n // TODO: remove content/classNames/didMount/etc from options?\n component = createViewHookComponent(rawOptions);\n }\n else if (component && !(component.prototype instanceof BaseComponent)) {\n // WHY?: people were using `component` property for `content`\n // TODO: converge on one setting name\n component = createViewHookComponent(Object.assign(Object.assign({}, rawOptions), { content: component }));\n }\n return {\n superType: rawOptions.type,\n component: component,\n rawOptions, // includes type and component too :(\n };\n}\nfunction createViewHookComponent(options) {\n 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 }))));\n}\n\nfunction buildViewSpecs(defaultInputs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n let defaultConfigs = parseViewConfigs(defaultInputs);\n let overrideConfigs = parseViewConfigs(optionOverrides.views);\n let viewDefs = compileViewDefs(defaultConfigs, overrideConfigs);\n return mapHash(viewDefs, (viewDef) => buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults));\n}\nfunction buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n let durationInput = viewDef.overrides.duration ||\n viewDef.defaults.duration ||\n dynamicOptionOverrides.duration ||\n optionOverrides.duration;\n let duration = null;\n let durationUnit = '';\n let singleUnit = '';\n let singleUnitOverrides = {};\n if (durationInput) {\n duration = createDurationCached(durationInput);\n if (duration) { // valid?\n let denom = greatestDurationDenominator(duration);\n durationUnit = denom.unit;\n if (denom.value === 1) {\n singleUnit = durationUnit;\n singleUnitOverrides = overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].rawOptions : {};\n }\n }\n }\n let queryButtonText = (optionsSubset) => {\n let buttonTextMap = optionsSubset.buttonText || {};\n let buttonTextKey = viewDef.defaults.buttonTextKey;\n if (buttonTextKey != null && buttonTextMap[buttonTextKey] != null) {\n return buttonTextMap[buttonTextKey];\n }\n if (buttonTextMap[viewDef.type] != null) {\n return buttonTextMap[viewDef.type];\n }\n if (buttonTextMap[singleUnit] != null) {\n return buttonTextMap[singleUnit];\n }\n return null;\n };\n let queryButtonTitle = (optionsSubset) => {\n let buttonHints = optionsSubset.buttonHints || {};\n let buttonKey = viewDef.defaults.buttonTextKey; // use same key as text\n if (buttonKey != null && buttonHints[buttonKey] != null) {\n return buttonHints[buttonKey];\n }\n if (buttonHints[viewDef.type] != null) {\n return buttonHints[viewDef.type];\n }\n if (buttonHints[singleUnit] != null) {\n return buttonHints[singleUnit];\n }\n return null;\n };\n return {\n type: viewDef.type,\n component: viewDef.component,\n duration,\n durationUnit,\n singleUnit,\n optionDefaults: viewDef.defaults,\n optionOverrides: Object.assign(Object.assign({}, singleUnitOverrides), viewDef.overrides),\n buttonTextOverride: queryButtonText(dynamicOptionOverrides) ||\n queryButtonText(optionOverrides) || // constructor-specified buttonText lookup hash takes precedence\n viewDef.overrides.buttonText,\n buttonTextDefault: queryButtonText(localeDefaults) ||\n viewDef.defaults.buttonText ||\n queryButtonText(BASE_OPTION_DEFAULTS) ||\n viewDef.type,\n // not DRY\n buttonTitleOverride: queryButtonTitle(dynamicOptionOverrides) ||\n queryButtonTitle(optionOverrides) ||\n viewDef.overrides.buttonHint,\n buttonTitleDefault: queryButtonTitle(localeDefaults) ||\n viewDef.defaults.buttonHint ||\n queryButtonTitle(BASE_OPTION_DEFAULTS),\n // will eventually fall back to buttonText\n };\n}\n// hack to get memoization working\nlet durationInputMap = {};\nfunction createDurationCached(durationInput) {\n let json = JSON.stringify(durationInput);\n let res = durationInputMap[json];\n if (res === undefined) {\n res = createDuration(durationInput);\n durationInputMap[json] = res;\n }\n return res;\n}\n\nfunction reduceViewType(viewType, action) {\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n viewType = action.viewType;\n }\n return viewType;\n}\n\nfunction reduceDynamicOptionOverrides(dynamicOptionOverrides, action) {\n switch (action.type) {\n case 'SET_OPTION':\n return Object.assign(Object.assign({}, dynamicOptionOverrides), { [action.optionName]: action.rawOptionValue });\n default:\n return dynamicOptionOverrides;\n }\n}\n\nfunction reduceDateProfile(currentDateProfile, action, currentDate, dateProfileGenerator) {\n let dp;\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n return dateProfileGenerator.build(action.dateMarker || currentDate);\n case 'CHANGE_DATE':\n return dateProfileGenerator.build(action.dateMarker);\n case 'PREV':\n dp = dateProfileGenerator.buildPrev(currentDateProfile, currentDate);\n if (dp.isValid) {\n return dp;\n }\n break;\n case 'NEXT':\n dp = dateProfileGenerator.buildNext(currentDateProfile, currentDate);\n if (dp.isValid) {\n return dp;\n }\n break;\n }\n return currentDateProfile;\n}\n\nfunction initEventSources(calendarOptions, dateProfile, context) {\n let activeRange = dateProfile ? dateProfile.activeRange : null;\n return addSources({}, parseInitialSources(calendarOptions, context), activeRange, context);\n}\nfunction reduceEventSources(eventSources, action, dateProfile, context) {\n let activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n switch (action.type) {\n case 'ADD_EVENT_SOURCES': // already parsed\n return addSources(eventSources, action.sources, activeRange, context);\n case 'REMOVE_EVENT_SOURCE':\n return removeSource(eventSources, action.sourceId);\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n case 'NEXT':\n case 'CHANGE_DATE':\n case 'CHANGE_VIEW_TYPE':\n if (dateProfile) {\n return fetchDirtySources(eventSources, activeRange, context);\n }\n return eventSources;\n case 'FETCH_EVENT_SOURCES':\n return fetchSourcesByIds(eventSources, action.sourceIds ? // why no type?\n arrayToHash(action.sourceIds) :\n excludeStaticSources(eventSources, context), activeRange, action.isRefetch || false, context);\n case 'RECEIVE_EVENTS':\n case 'RECEIVE_EVENT_ERROR':\n return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange);\n case 'REMOVE_ALL_EVENT_SOURCES':\n return {};\n default:\n return eventSources;\n }\n}\nfunction reduceEventSourcesNewTimeZone(eventSources, dateProfile, context) {\n let activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n return fetchSourcesByIds(eventSources, excludeStaticSources(eventSources, context), activeRange, true, context);\n}\nfunction computeEventSourcesLoading(eventSources) {\n for (let sourceId in eventSources) {\n if (eventSources[sourceId].isFetching) {\n return true;\n }\n }\n return false;\n}\nfunction addSources(eventSourceHash, sources, fetchRange, context) {\n let hash = {};\n for (let source of sources) {\n hash[source.sourceId] = source;\n }\n if (fetchRange) {\n hash = fetchDirtySources(hash, fetchRange, context);\n }\n return Object.assign(Object.assign({}, eventSourceHash), hash);\n}\nfunction removeSource(eventSourceHash, sourceId) {\n return filterHash(eventSourceHash, (eventSource) => eventSource.sourceId !== sourceId);\n}\nfunction fetchDirtySources(sourceHash, fetchRange, context) {\n return fetchSourcesByIds(sourceHash, filterHash(sourceHash, (eventSource) => isSourceDirty(eventSource, fetchRange, context)), fetchRange, false, context);\n}\nfunction isSourceDirty(eventSource, fetchRange, context) {\n if (!doesSourceNeedRange(eventSource, context)) {\n return !eventSource.latestFetchId;\n }\n return !context.options.lazyFetching ||\n !eventSource.fetchRange ||\n eventSource.isFetching || // always cancel outdated in-progress fetches\n fetchRange.start < eventSource.fetchRange.start ||\n fetchRange.end > eventSource.fetchRange.end;\n}\nfunction fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, isRefetch, context) {\n let nextSources = {};\n for (let sourceId in prevSources) {\n let source = prevSources[sourceId];\n if (sourceIdHash[sourceId]) {\n nextSources[sourceId] = fetchSource(source, fetchRange, isRefetch, context);\n }\n else {\n nextSources[sourceId] = source;\n }\n }\n return nextSources;\n}\nfunction fetchSource(eventSource, fetchRange, isRefetch, context) {\n let { options, calendarApi } = context;\n let sourceDef = context.pluginHooks.eventSourceDefs[eventSource.sourceDefId];\n let fetchId = guid();\n sourceDef.fetch({\n eventSource,\n range: fetchRange,\n isRefetch,\n context,\n }, (res) => {\n let { rawEvents } = res;\n if (options.eventSourceSuccess) {\n rawEvents = options.eventSourceSuccess.call(calendarApi, rawEvents, res.response) || rawEvents;\n }\n if (eventSource.success) {\n rawEvents = eventSource.success.call(calendarApi, rawEvents, res.response) || rawEvents;\n }\n context.dispatch({\n type: 'RECEIVE_EVENTS',\n sourceId: eventSource.sourceId,\n fetchId,\n fetchRange,\n rawEvents,\n });\n }, (error) => {\n let errorHandled = false;\n if (options.eventSourceFailure) {\n options.eventSourceFailure.call(calendarApi, error);\n errorHandled = true;\n }\n if (eventSource.failure) {\n eventSource.failure(error);\n errorHandled = true;\n }\n if (!errorHandled) {\n console.warn(error.message, error);\n }\n context.dispatch({\n type: 'RECEIVE_EVENT_ERROR',\n sourceId: eventSource.sourceId,\n fetchId,\n fetchRange,\n error,\n });\n });\n return Object.assign(Object.assign({}, eventSource), { isFetching: true, latestFetchId: fetchId });\n}\nfunction receiveResponse(sourceHash, sourceId, fetchId, fetchRange) {\n let eventSource = sourceHash[sourceId];\n if (eventSource && // not already removed\n fetchId === eventSource.latestFetchId) {\n return Object.assign(Object.assign({}, sourceHash), { [sourceId]: Object.assign(Object.assign({}, eventSource), { isFetching: false, fetchRange }) });\n }\n return sourceHash;\n}\nfunction excludeStaticSources(eventSources, context) {\n return filterHash(eventSources, (eventSource) => doesSourceNeedRange(eventSource, context));\n}\nfunction parseInitialSources(rawOptions, context) {\n let refiners = buildEventSourceRefiners(context);\n let rawSources = [].concat(rawOptions.eventSources || []);\n let sources = []; // parsed\n if (rawOptions.initialEvents) {\n rawSources.unshift(rawOptions.initialEvents);\n }\n if (rawOptions.events) {\n rawSources.unshift(rawOptions.events);\n }\n for (let rawSource of rawSources) {\n let source = parseEventSource(rawSource, context, refiners);\n if (source) {\n sources.push(source);\n }\n }\n return sources;\n}\nfunction doesSourceNeedRange(eventSource, context) {\n let defs = context.pluginHooks.eventSourceDefs;\n return !defs[eventSource.sourceDefId].ignoreRange;\n}\n\nfunction reduceDateSelection(currentSelection, action) {\n switch (action.type) {\n case 'UNSELECT_DATES':\n return null;\n case 'SELECT_DATES':\n return action.selection;\n default:\n return currentSelection;\n }\n}\n\nfunction reduceSelectedEvent(currentInstanceId, action) {\n switch (action.type) {\n case 'UNSELECT_EVENT':\n return '';\n case 'SELECT_EVENT':\n return action.eventInstanceId;\n default:\n return currentInstanceId;\n }\n}\n\nfunction reduceEventDrag(currentDrag, action) {\n let newDrag;\n switch (action.type) {\n case 'UNSET_EVENT_DRAG':\n return null;\n case 'SET_EVENT_DRAG':\n newDrag = action.state;\n return {\n affectedEvents: newDrag.affectedEvents,\n mutatedEvents: newDrag.mutatedEvents,\n isEvent: newDrag.isEvent,\n };\n default:\n return currentDrag;\n }\n}\n\nfunction reduceEventResize(currentResize, action) {\n let newResize;\n switch (action.type) {\n case 'UNSET_EVENT_RESIZE':\n return null;\n case 'SET_EVENT_RESIZE':\n newResize = action.state;\n return {\n affectedEvents: newResize.affectedEvents,\n mutatedEvents: newResize.mutatedEvents,\n isEvent: newResize.isEvent,\n };\n default:\n return currentResize;\n }\n}\n\nfunction parseToolbars(calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n let header = calendarOptions.headerToolbar ? parseToolbar(calendarOptions.headerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n let footer = calendarOptions.footerToolbar ? parseToolbar(calendarOptions.footerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n return { header, footer };\n}\nfunction parseToolbar(sectionStrHash, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n let sectionWidgets = {};\n let viewsWithButtons = [];\n let hasTitle = false;\n for (let sectionName in sectionStrHash) {\n let sectionStr = sectionStrHash[sectionName];\n let sectionRes = parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi);\n sectionWidgets[sectionName] = sectionRes.widgets;\n viewsWithButtons.push(...sectionRes.viewsWithButtons);\n hasTitle = hasTitle || sectionRes.hasTitle;\n }\n return { sectionWidgets, viewsWithButtons, hasTitle };\n}\n/*\nBAD: querying icons and text here. should be done at render time\n*/\nfunction parseSection(sectionStr, calendarOptions, // defaults+overrides, then refined\ncalendarOptionOverrides, // overrides only!, unrefined :(\ntheme, viewSpecs, calendarApi) {\n let isRtl = calendarOptions.direction === 'rtl';\n let calendarCustomButtons = calendarOptions.customButtons || {};\n let calendarButtonTextOverrides = calendarOptionOverrides.buttonText || {};\n let calendarButtonText = calendarOptions.buttonText || {};\n let calendarButtonHintOverrides = calendarOptionOverrides.buttonHints || {};\n let calendarButtonHints = calendarOptions.buttonHints || {};\n let sectionSubstrs = sectionStr ? sectionStr.split(' ') : [];\n let viewsWithButtons = [];\n let hasTitle = false;\n let widgets = sectionSubstrs.map((buttonGroupStr) => (buttonGroupStr.split(',').map((buttonName) => {\n if (buttonName === 'title') {\n hasTitle = true;\n return { buttonName };\n }\n let customButtonProps;\n let viewSpec;\n let buttonClick;\n let buttonIcon; // only one of these will be set\n let buttonText; // \"\n let buttonHint;\n // ^ for the title=\"\" attribute, for accessibility\n if ((customButtonProps = calendarCustomButtons[buttonName])) {\n buttonClick = (ev) => {\n if (customButtonProps.click) {\n customButtonProps.click.call(ev.target, ev, ev.target); // TODO: use Calendar this context?\n }\n };\n (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = customButtonProps.text);\n buttonHint = customButtonProps.hint || customButtonProps.text;\n }\n else if ((viewSpec = viewSpecs[buttonName])) {\n viewsWithButtons.push(buttonName);\n buttonClick = () => {\n calendarApi.changeView(buttonName);\n };\n (buttonText = viewSpec.buttonTextOverride) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = viewSpec.buttonTextDefault);\n let textFallback = viewSpec.buttonTextOverride ||\n viewSpec.buttonTextDefault;\n buttonHint = formatWithOrdinals(viewSpec.buttonTitleOverride ||\n viewSpec.buttonTitleDefault ||\n calendarOptions.viewHint, [textFallback, buttonName], // view-name = buttonName\n textFallback);\n }\n else if (calendarApi[buttonName]) { // a calendarApi method\n buttonClick = () => {\n calendarApi[buttonName]();\n };\n (buttonText = calendarButtonTextOverrides[buttonName]) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = calendarButtonText[buttonName]); // everything else is considered default\n if (buttonName === 'prevYear' || buttonName === 'nextYear') {\n let prevOrNext = buttonName === 'prevYear' ? 'prev' : 'next';\n buttonHint = formatWithOrdinals(calendarButtonHintOverrides[prevOrNext] ||\n calendarButtonHints[prevOrNext], [\n calendarButtonText.year || 'year',\n 'year',\n ], calendarButtonText[buttonName]);\n }\n else {\n buttonHint = (navUnit) => formatWithOrdinals(calendarButtonHintOverrides[buttonName] ||\n calendarButtonHints[buttonName], [\n calendarButtonText[navUnit] || navUnit,\n navUnit,\n ], calendarButtonText[buttonName]);\n }\n }\n return { buttonName, buttonClick, buttonIcon, buttonText, buttonHint };\n })));\n return { widgets, viewsWithButtons, hasTitle };\n}\n\n// always represents the current view. otherwise, it'd need to change value every time date changes\nclass ViewImpl {\n constructor(type, getCurrentData, dateEnv) {\n this.type = type;\n this.getCurrentData = getCurrentData;\n this.dateEnv = dateEnv;\n }\n get calendar() {\n return this.getCurrentData().calendarApi;\n }\n get title() {\n return this.getCurrentData().viewTitle;\n }\n get activeStart() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start);\n }\n get activeEnd() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end);\n }\n get currentStart() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start);\n }\n get currentEnd() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end);\n }\n getOption(name) {\n return this.getCurrentData().options[name]; // are the view-specific options\n }\n}\n\nlet eventSourceDef$2 = {\n ignoreRange: true,\n parseMeta(refined) {\n if (Array.isArray(refined.events)) {\n return refined.events;\n }\n return null;\n },\n fetch(arg, successCallback) {\n successCallback({\n rawEvents: arg.eventSource.meta,\n });\n },\n};\nconst arrayEventSourcePlugin = createPlugin({\n name: 'array-event-source',\n eventSourceDefs: [eventSourceDef$2],\n});\n\nlet eventSourceDef$1 = {\n parseMeta(refined) {\n if (typeof refined.events === 'function') {\n return refined.events;\n }\n return null;\n },\n fetch(arg, successCallback, errorCallback) {\n const { dateEnv } = arg.context;\n const func = arg.eventSource.meta;\n unpromisify(func.bind(null, buildRangeApiWithTimeZone(arg.range, dateEnv)), (rawEvents) => successCallback({ rawEvents }), errorCallback);\n },\n};\nconst funcEventSourcePlugin = createPlugin({\n name: 'func-event-source',\n eventSourceDefs: [eventSourceDef$1],\n});\n\nconst JSON_FEED_EVENT_SOURCE_REFINERS = {\n method: String,\n extraParams: identity,\n startParam: String,\n endParam: String,\n timeZoneParam: String,\n};\n\nlet eventSourceDef = {\n parseMeta(refined) {\n if (refined.url && (refined.format === 'json' || !refined.format)) {\n return {\n url: refined.url,\n format: 'json',\n method: (refined.method || 'GET').toUpperCase(),\n extraParams: refined.extraParams,\n startParam: refined.startParam,\n endParam: refined.endParam,\n timeZoneParam: refined.timeZoneParam,\n };\n }\n return null;\n },\n fetch(arg, successCallback, errorCallback) {\n const { meta } = arg.eventSource;\n const requestParams = buildRequestParams(meta, arg.range, arg.context);\n requestJson(meta.method, meta.url, requestParams).then(([rawEvents, response]) => {\n successCallback({ rawEvents, response });\n }, errorCallback);\n },\n};\nconst jsonFeedEventSourcePlugin = createPlugin({\n name: 'json-event-source',\n eventSourceRefiners: JSON_FEED_EVENT_SOURCE_REFINERS,\n eventSourceDefs: [eventSourceDef],\n});\nfunction buildRequestParams(meta, range, context) {\n let { dateEnv, options } = context;\n let startParam;\n let endParam;\n let timeZoneParam;\n let customRequestParams;\n let params = {};\n startParam = meta.startParam;\n if (startParam == null) {\n startParam = options.startParam;\n }\n endParam = meta.endParam;\n if (endParam == null) {\n endParam = options.endParam;\n }\n timeZoneParam = meta.timeZoneParam;\n if (timeZoneParam == null) {\n timeZoneParam = options.timeZoneParam;\n }\n // retrieve any outbound GET/POST data from the options\n if (typeof meta.extraParams === 'function') {\n // supplied as a function that returns a key/value object\n customRequestParams = meta.extraParams();\n }\n else {\n // probably supplied as a straight key/value object\n customRequestParams = meta.extraParams || {};\n }\n Object.assign(params, customRequestParams);\n params[startParam] = dateEnv.formatIso(range.start);\n params[endParam] = dateEnv.formatIso(range.end);\n if (dateEnv.timeZone !== 'local') {\n params[timeZoneParam] = dateEnv.timeZone;\n }\n return params;\n}\n\nconst SIMPLE_RECURRING_REFINERS = {\n daysOfWeek: identity,\n startTime: createDuration,\n endTime: createDuration,\n duration: createDuration,\n startRecur: identity,\n endRecur: identity,\n};\n\nlet recurring = {\n parse(refined, dateEnv) {\n if (refined.daysOfWeek || refined.startTime || refined.endTime || refined.startRecur || refined.endRecur) {\n let recurringData = {\n daysOfWeek: refined.daysOfWeek || null,\n startTime: refined.startTime || null,\n endTime: refined.endTime || null,\n startRecur: refined.startRecur ? dateEnv.createMarker(refined.startRecur) : null,\n endRecur: refined.endRecur ? dateEnv.createMarker(refined.endRecur) : null,\n };\n let duration;\n if (refined.duration) {\n duration = refined.duration;\n }\n if (!duration && refined.startTime && refined.endTime) {\n duration = subtractDurations(refined.endTime, refined.startTime);\n }\n return {\n allDayGuess: Boolean(!refined.startTime && !refined.endTime),\n duration,\n typeData: recurringData, // doesn't need endTime anymore but oh well\n };\n }\n return null;\n },\n expand(typeData, framingRange, dateEnv) {\n let clippedFramingRange = intersectRanges(framingRange, { start: typeData.startRecur, end: typeData.endRecur });\n if (clippedFramingRange) {\n return expandRanges(typeData.daysOfWeek, typeData.startTime, clippedFramingRange, dateEnv);\n }\n return [];\n },\n};\nconst simpleRecurringEventsPlugin = createPlugin({\n name: 'simple-recurring-event',\n recurringTypes: [recurring],\n eventRefiners: SIMPLE_RECURRING_REFINERS,\n});\nfunction expandRanges(daysOfWeek, startTime, framingRange, dateEnv) {\n let dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null;\n let dayMarker = startOfDay(framingRange.start);\n let endMarker = framingRange.end;\n let instanceStarts = [];\n while (dayMarker < endMarker) {\n let instanceStart;\n // if everyday, or this particular day-of-week\n if (!dowHash || dowHash[dayMarker.getUTCDay()]) {\n if (startTime) {\n instanceStart = dateEnv.add(dayMarker, startTime);\n }\n else {\n instanceStart = dayMarker;\n }\n instanceStarts.push(instanceStart);\n }\n dayMarker = addDays(dayMarker, 1);\n }\n return instanceStarts;\n}\n\nconst changeHandlerPlugin = createPlugin({\n name: 'change-handler',\n optionChangeHandlers: {\n events(events, context) {\n handleEventSources([events], context);\n },\n eventSources: handleEventSources,\n },\n});\n/*\nBUG: if `event` was supplied, all previously-given `eventSources` will be wiped out\n*/\nfunction handleEventSources(inputs, context) {\n let unfoundSources = hashValuesToArray(context.getCurrentData().eventSources);\n if (unfoundSources.length === 1 &&\n inputs.length === 1 &&\n Array.isArray(unfoundSources[0]._raw) &&\n Array.isArray(inputs[0])) {\n context.dispatch({\n type: 'RESET_RAW_EVENTS',\n sourceId: unfoundSources[0].sourceId,\n rawEvents: inputs[0],\n });\n return;\n }\n let newInputs = [];\n for (let input of inputs) {\n let inputFound = false;\n for (let i = 0; i < unfoundSources.length; i += 1) {\n if (unfoundSources[i]._raw === input) {\n unfoundSources.splice(i, 1); // delete\n inputFound = true;\n break;\n }\n }\n if (!inputFound) {\n newInputs.push(input);\n }\n }\n for (let unfoundSource of unfoundSources) {\n context.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: unfoundSource.sourceId,\n });\n }\n for (let newInput of newInputs) {\n context.calendarApi.addEventSource(newInput);\n }\n}\n\nfunction handleDateProfile(dateProfile, context) {\n context.emitter.trigger('datesSet', Object.assign(Object.assign({}, buildRangeApiWithTimeZone(dateProfile.activeRange, context.dateEnv)), { view: context.viewApi }));\n}\n\nfunction handleEventStore(eventStore, context) {\n let { emitter } = context;\n if (emitter.hasHandlers('eventsSet')) {\n emitter.trigger('eventsSet', buildEventApis(eventStore, context));\n }\n}\n\n/*\nthis array is exposed on the root namespace so that UMD plugins can add to it.\nsee the rollup-bundles script.\n*/\nconst globalPlugins = [\n arrayEventSourcePlugin,\n funcEventSourcePlugin,\n jsonFeedEventSourcePlugin,\n simpleRecurringEventsPlugin,\n changeHandlerPlugin,\n createPlugin({\n name: 'misc',\n isLoadingFuncs: [\n (state) => computeEventSourcesLoading(state.eventSources),\n ],\n propSetHandlers: {\n dateProfile: handleDateProfile,\n eventStore: handleEventStore,\n },\n }),\n];\n\nclass TaskRunner {\n constructor(runTaskOption, drainedOption) {\n this.runTaskOption = runTaskOption;\n this.drainedOption = drainedOption;\n this.queue = [];\n this.delayedRunner = new DelayedRunner(this.drain.bind(this));\n }\n request(task, delay) {\n this.queue.push(task);\n this.delayedRunner.request(delay);\n }\n pause(scope) {\n this.delayedRunner.pause(scope);\n }\n resume(scope, force) {\n this.delayedRunner.resume(scope, force);\n }\n drain() {\n let { queue } = this;\n while (queue.length) {\n let completedTasks = [];\n let task;\n while ((task = queue.shift())) {\n this.runTask(task);\n completedTasks.push(task);\n }\n this.drained(completedTasks);\n } // keep going, in case new tasks were added in the drained handler\n }\n runTask(task) {\n if (this.runTaskOption) {\n this.runTaskOption(task);\n }\n }\n drained(completedTasks) {\n if (this.drainedOption) {\n this.drainedOption(completedTasks);\n }\n }\n}\n\n// Computes what the title at the top of the calendarApi should be for this view\nfunction buildTitle(dateProfile, viewOptions, dateEnv) {\n let range;\n // for views that span a large unit of time, show the proper interval, ignoring stray days before and after\n if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) {\n range = dateProfile.currentRange;\n }\n else { // for day units or smaller, use the actual day range\n range = dateProfile.activeRange;\n }\n return dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat || buildTitleFormat(dateProfile)), {\n isEndExclusive: dateProfile.isRangeAllDay,\n defaultSeparator: viewOptions.titleRangeSeparator,\n });\n}\n// Generates the format string that should be used to generate the title for the current date range.\n// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\nfunction buildTitleFormat(dateProfile) {\n let { currentRangeUnit } = dateProfile;\n if (currentRangeUnit === 'year') {\n return { year: 'numeric' };\n }\n if (currentRangeUnit === 'month') {\n return { year: 'numeric', month: 'long' }; // like \"September 2014\"\n }\n let days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end);\n if (days !== null && days > 1) {\n // multi-day range. shorter, like \"Sep 9 - 10 2014\"\n return { year: 'numeric', month: 'short', day: 'numeric' };\n }\n // one day. longer, like \"September 9 2014\"\n return { year: 'numeric', month: 'long', day: 'numeric' };\n}\n\n// in future refactor, do the redux-style function(state=initial) for initial-state\n// also, whatever is happening in constructor, have it happen in action queue too\nclass CalendarDataManager {\n constructor(props) {\n this.computeCurrentViewData = memoize(this._computeCurrentViewData);\n this.organizeRawLocales = memoize(organizeRawLocales);\n this.buildLocale = memoize(buildLocale);\n this.buildPluginHooks = buildBuildPluginHooks();\n this.buildDateEnv = memoize(buildDateEnv$1);\n this.buildTheme = memoize(buildTheme);\n this.parseToolbars = memoize(parseToolbars);\n this.buildViewSpecs = memoize(buildViewSpecs);\n this.buildDateProfileGenerator = memoizeObjArg(buildDateProfileGenerator);\n this.buildViewApi = memoize(buildViewApi);\n this.buildViewUiProps = memoizeObjArg(buildViewUiProps);\n this.buildEventUiBySource = memoize(buildEventUiBySource, isPropsEqual);\n this.buildEventUiBases = memoize(buildEventUiBases);\n this.parseContextBusinessHours = memoizeObjArg(parseContextBusinessHours);\n this.buildTitle = memoize(buildTitle);\n this.emitter = new Emitter();\n this.actionRunner = new TaskRunner(this._handleAction.bind(this), this.updateData.bind(this));\n this.currentCalendarOptionsInput = {};\n this.currentCalendarOptionsRefined = {};\n this.currentViewOptionsInput = {};\n this.currentViewOptionsRefined = {};\n this.currentCalendarOptionsRefiners = {};\n this.optionsForRefining = [];\n this.optionsForHandling = [];\n this.getCurrentData = () => this.data;\n this.dispatch = (action) => {\n this.actionRunner.request(action); // protects against recursive calls to _handleAction\n };\n this.props = props;\n this.actionRunner.pause();\n let dynamicOptionOverrides = {};\n let optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n let currentViewType = optionsData.calendarOptions.initialView || optionsData.pluginHooks.initialView;\n let currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n // wire things up\n // TODO: not DRY\n props.calendarApi.currentDataManager = this;\n this.emitter.setThisContext(props.calendarApi);\n this.emitter.setOptions(currentViewData.options);\n let currentDate = getInitialDate(optionsData.calendarOptions, optionsData.dateEnv);\n let dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n if (!rangeContainsMarker(dateProfile.activeRange, currentDate)) {\n currentDate = dateProfile.currentRange.start;\n }\n let calendarContext = {\n dateEnv: optionsData.dateEnv,\n options: optionsData.calendarOptions,\n pluginHooks: optionsData.pluginHooks,\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter: this.emitter,\n getCurrentData: this.getCurrentData,\n };\n // needs to be after setThisContext\n for (let callback of optionsData.pluginHooks.contextInit) {\n callback(calendarContext);\n }\n // NOT DRY\n let eventSources = initEventSources(optionsData.calendarOptions, dateProfile, calendarContext);\n let initialState = {\n dynamicOptionOverrides,\n currentViewType,\n currentDate,\n dateProfile,\n businessHours: this.parseContextBusinessHours(calendarContext),\n eventSources,\n eventUiBases: {},\n eventStore: createEmptyEventStore(),\n renderableEventStore: createEmptyEventStore(),\n dateSelection: null,\n eventSelection: '',\n eventDrag: null,\n eventResize: null,\n selectionConfig: this.buildViewUiProps(calendarContext).selectionConfig,\n };\n let contextAndState = Object.assign(Object.assign({}, calendarContext), initialState);\n for (let reducer of optionsData.pluginHooks.reducers) {\n Object.assign(initialState, reducer(null, null, contextAndState));\n }\n if (computeIsLoading(initialState, calendarContext)) {\n this.emitter.trigger('loading', true); // NOT DRY\n }\n this.state = initialState;\n this.updateData();\n this.actionRunner.resume();\n }\n resetOptions(optionOverrides, changedOptionNames) {\n let { props } = this;\n if (changedOptionNames === undefined) {\n props.optionOverrides = optionOverrides;\n }\n else {\n props.optionOverrides = Object.assign(Object.assign({}, (props.optionOverrides || {})), optionOverrides);\n this.optionsForRefining.push(...changedOptionNames);\n }\n if (changedOptionNames === undefined || changedOptionNames.length) {\n this.actionRunner.request({\n type: 'NOTHING',\n });\n }\n }\n _handleAction(action) {\n let { props, state, emitter } = this;\n let dynamicOptionOverrides = reduceDynamicOptionOverrides(state.dynamicOptionOverrides, action);\n let optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n let currentViewType = reduceViewType(state.currentViewType, action);\n let currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n // wire things up\n // TODO: not DRY\n props.calendarApi.currentDataManager = this;\n emitter.setThisContext(props.calendarApi);\n emitter.setOptions(currentViewData.options);\n let calendarContext = {\n dateEnv: optionsData.dateEnv,\n options: optionsData.calendarOptions,\n pluginHooks: optionsData.pluginHooks,\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter,\n getCurrentData: this.getCurrentData,\n };\n let { currentDate, dateProfile } = state;\n if (this.data && this.data.dateProfileGenerator !== currentViewData.dateProfileGenerator) { // hack\n dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n }\n currentDate = reduceCurrentDate(currentDate, action);\n dateProfile = reduceDateProfile(dateProfile, action, currentDate, currentViewData.dateProfileGenerator);\n if (action.type === 'PREV' || // TODO: move this logic into DateProfileGenerator\n action.type === 'NEXT' || // \"\n !rangeContainsMarker(dateProfile.currentRange, currentDate)) {\n currentDate = dateProfile.currentRange.start;\n }\n let eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendarContext);\n let eventStore = reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendarContext);\n let isEventsLoading = computeEventSourcesLoading(eventSources); // BAD. also called in this func in computeIsLoading\n let renderableEventStore = (isEventsLoading && !currentViewData.options.progressiveEventRendering) ?\n (state.renderableEventStore || eventStore) : // try from previous state\n eventStore;\n let { eventUiSingleBase, selectionConfig } = this.buildViewUiProps(calendarContext); // will memoize obj\n let eventUiBySource = this.buildEventUiBySource(eventSources);\n let eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource);\n let newState = {\n dynamicOptionOverrides,\n currentViewType,\n currentDate,\n dateProfile,\n eventSources,\n eventStore,\n renderableEventStore,\n selectionConfig,\n eventUiBases,\n businessHours: this.parseContextBusinessHours(calendarContext),\n dateSelection: reduceDateSelection(state.dateSelection, action),\n eventSelection: reduceSelectedEvent(state.eventSelection, action),\n eventDrag: reduceEventDrag(state.eventDrag, action),\n eventResize: reduceEventResize(state.eventResize, action),\n };\n let contextAndState = Object.assign(Object.assign({}, calendarContext), newState);\n for (let reducer of optionsData.pluginHooks.reducers) {\n Object.assign(newState, reducer(state, action, contextAndState)); // give the OLD state, for old value\n }\n let wasLoading = computeIsLoading(state, calendarContext);\n let isLoading = computeIsLoading(newState, calendarContext);\n // TODO: use propSetHandlers in plugin system\n if (!wasLoading && isLoading) {\n emitter.trigger('loading', true);\n }\n else if (wasLoading && !isLoading) {\n emitter.trigger('loading', false);\n }\n this.state = newState;\n if (props.onAction) {\n props.onAction(action);\n }\n }\n updateData() {\n let { props, state } = this;\n let oldData = this.data;\n let optionsData = this.computeOptionsData(props.optionOverrides, state.dynamicOptionOverrides, props.calendarApi);\n let currentViewData = this.computeCurrentViewData(state.currentViewType, optionsData, props.optionOverrides, state.dynamicOptionOverrides);\n let data = this.data = Object.assign(Object.assign(Object.assign({ viewTitle: this.buildTitle(state.dateProfile, currentViewData.options, optionsData.dateEnv), calendarApi: props.calendarApi, dispatch: this.dispatch, emitter: this.emitter, getCurrentData: this.getCurrentData }, optionsData), currentViewData), state);\n let changeHandlers = optionsData.pluginHooks.optionChangeHandlers;\n let oldCalendarOptions = oldData && oldData.calendarOptions;\n let newCalendarOptions = optionsData.calendarOptions;\n if (oldCalendarOptions && oldCalendarOptions !== newCalendarOptions) {\n if (oldCalendarOptions.timeZone !== newCalendarOptions.timeZone) {\n // hack\n state.eventSources = data.eventSources = reduceEventSourcesNewTimeZone(data.eventSources, state.dateProfile, data);\n state.eventStore = data.eventStore = rezoneEventStoreDates(data.eventStore, oldData.dateEnv, data.dateEnv);\n state.renderableEventStore = data.renderableEventStore = rezoneEventStoreDates(data.renderableEventStore, oldData.dateEnv, data.dateEnv);\n }\n for (let optionName in changeHandlers) {\n if (this.optionsForHandling.indexOf(optionName) !== -1 ||\n oldCalendarOptions[optionName] !== newCalendarOptions[optionName]) {\n changeHandlers[optionName](newCalendarOptions[optionName], data);\n }\n }\n }\n this.optionsForHandling = [];\n if (props.onData) {\n props.onData(data);\n }\n }\n computeOptionsData(optionOverrides, dynamicOptionOverrides, calendarApi) {\n // TODO: blacklist options that are handled by optionChangeHandlers\n if (!this.optionsForRefining.length &&\n optionOverrides === this.stableOptionOverrides &&\n dynamicOptionOverrides === this.stableDynamicOptionOverrides) {\n return this.stableCalendarOptionsData;\n }\n let { refinedOptions, pluginHooks, localeDefaults, availableLocaleData, extra, } = this.processRawCalendarOptions(optionOverrides, dynamicOptionOverrides);\n warnUnknownOptions(extra);\n let dateEnv = this.buildDateEnv(refinedOptions.timeZone, refinedOptions.locale, refinedOptions.weekNumberCalculation, refinedOptions.firstDay, refinedOptions.weekText, pluginHooks, availableLocaleData, refinedOptions.defaultRangeSeparator);\n let viewSpecs = this.buildViewSpecs(pluginHooks.views, this.stableOptionOverrides, this.stableDynamicOptionOverrides, localeDefaults);\n let theme = this.buildTheme(refinedOptions, pluginHooks);\n let toolbarConfig = this.parseToolbars(refinedOptions, this.stableOptionOverrides, theme, viewSpecs, calendarApi);\n return this.stableCalendarOptionsData = {\n calendarOptions: refinedOptions,\n pluginHooks,\n dateEnv,\n viewSpecs,\n theme,\n toolbarConfig,\n localeDefaults,\n availableRawLocales: availableLocaleData.map,\n };\n }\n // always called from behind a memoizer\n processRawCalendarOptions(optionOverrides, dynamicOptionOverrides) {\n let { locales, locale } = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n optionOverrides,\n dynamicOptionOverrides,\n ]);\n let availableLocaleData = this.organizeRawLocales(locales);\n let availableRawLocales = availableLocaleData.map;\n let localeDefaults = this.buildLocale(locale || availableLocaleData.defaultCode, availableRawLocales).options;\n let pluginHooks = this.buildPluginHooks(optionOverrides.plugins || [], globalPlugins);\n 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);\n let extra = {};\n let raw = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n localeDefaults,\n optionOverrides,\n dynamicOptionOverrides,\n ]);\n let refined = {};\n let currentRaw = this.currentCalendarOptionsInput;\n let currentRefined = this.currentCalendarOptionsRefined;\n let anyChanges = false;\n for (let optionName in raw) {\n if (this.optionsForRefining.indexOf(optionName) === -1 && (raw[optionName] === currentRaw[optionName] || (COMPLEX_OPTION_COMPARATORS[optionName] &&\n (optionName in currentRaw) &&\n COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName])))) {\n refined[optionName] = currentRefined[optionName];\n }\n else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName]);\n anyChanges = true;\n }\n else {\n extra[optionName] = currentRaw[optionName];\n }\n }\n if (anyChanges) {\n this.currentCalendarOptionsInput = raw;\n this.currentCalendarOptionsRefined = refined;\n this.stableOptionOverrides = optionOverrides;\n this.stableDynamicOptionOverrides = dynamicOptionOverrides;\n }\n this.optionsForHandling.push(...this.optionsForRefining);\n this.optionsForRefining = [];\n return {\n rawOptions: this.currentCalendarOptionsInput,\n refinedOptions: this.currentCalendarOptionsRefined,\n pluginHooks,\n availableLocaleData,\n localeDefaults,\n extra,\n };\n }\n _computeCurrentViewData(viewType, optionsData, optionOverrides, dynamicOptionOverrides) {\n let viewSpec = optionsData.viewSpecs[viewType];\n if (!viewSpec) {\n throw new Error(`viewType \"${viewType}\" is not available. Please make sure you've loaded all neccessary plugins`);\n }\n let { refinedOptions, extra } = this.processRawViewOptions(viewSpec, optionsData.pluginHooks, optionsData.localeDefaults, optionOverrides, dynamicOptionOverrides);\n warnUnknownOptions(extra);\n let dateProfileGenerator = this.buildDateProfileGenerator({\n dateProfileGeneratorClass: viewSpec.optionDefaults.dateProfileGeneratorClass,\n duration: viewSpec.duration,\n durationUnit: viewSpec.durationUnit,\n usesMinMaxTime: viewSpec.optionDefaults.usesMinMaxTime,\n dateEnv: optionsData.dateEnv,\n calendarApi: this.props.calendarApi,\n slotMinTime: refinedOptions.slotMinTime,\n slotMaxTime: refinedOptions.slotMaxTime,\n showNonCurrentDates: refinedOptions.showNonCurrentDates,\n dayCount: refinedOptions.dayCount,\n dateAlignment: refinedOptions.dateAlignment,\n dateIncrement: refinedOptions.dateIncrement,\n hiddenDays: refinedOptions.hiddenDays,\n weekends: refinedOptions.weekends,\n nowInput: refinedOptions.now,\n validRangeInput: refinedOptions.validRange,\n visibleRangeInput: refinedOptions.visibleRange,\n fixedWeekCount: refinedOptions.fixedWeekCount,\n });\n let viewApi = this.buildViewApi(viewType, this.getCurrentData, optionsData.dateEnv);\n return { viewSpec, options: refinedOptions, dateProfileGenerator, viewApi };\n }\n processRawViewOptions(viewSpec, pluginHooks, localeDefaults, optionOverrides, dynamicOptionOverrides) {\n let raw = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n viewSpec.optionDefaults,\n localeDefaults,\n optionOverrides,\n viewSpec.optionOverrides,\n dynamicOptionOverrides,\n ]);\n 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);\n let refined = {};\n let currentRaw = this.currentViewOptionsInput;\n let currentRefined = this.currentViewOptionsRefined;\n let anyChanges = false;\n let extra = {};\n for (let optionName in raw) {\n if (raw[optionName] === currentRaw[optionName] ||\n (COMPLEX_OPTION_COMPARATORS[optionName] &&\n COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], currentRaw[optionName]))) {\n refined[optionName] = currentRefined[optionName];\n }\n else {\n if (raw[optionName] === this.currentCalendarOptionsInput[optionName] ||\n (COMPLEX_OPTION_COMPARATORS[optionName] &&\n COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], this.currentCalendarOptionsInput[optionName]))) {\n if (optionName in this.currentCalendarOptionsRefined) { // might be an \"extra\" prop\n refined[optionName] = this.currentCalendarOptionsRefined[optionName];\n }\n }\n else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName]);\n }\n else {\n extra[optionName] = raw[optionName];\n }\n anyChanges = true;\n }\n }\n if (anyChanges) {\n this.currentViewOptionsInput = raw;\n this.currentViewOptionsRefined = refined;\n }\n return {\n rawOptions: this.currentViewOptionsInput,\n refinedOptions: this.currentViewOptionsRefined,\n extra,\n };\n }\n}\nfunction buildDateEnv$1(timeZone, explicitLocale, weekNumberCalculation, firstDay, weekText, pluginHooks, availableLocaleData, defaultSeparator) {\n let locale = buildLocale(explicitLocale || availableLocaleData.defaultCode, availableLocaleData.map);\n return new DateEnv({\n calendarSystem: 'gregory',\n timeZone,\n namedTimeZoneImpl: pluginHooks.namedTimeZonedImpl,\n locale,\n weekNumberCalculation,\n firstDay,\n weekText,\n cmdFormatter: pluginHooks.cmdFormatter,\n defaultSeparator,\n });\n}\nfunction buildTheme(options, pluginHooks) {\n let ThemeClass = pluginHooks.themeClasses[options.themeSystem] || StandardTheme;\n return new ThemeClass(options);\n}\nfunction buildDateProfileGenerator(props) {\n let DateProfileGeneratorClass = props.dateProfileGeneratorClass || DateProfileGenerator;\n return new DateProfileGeneratorClass(props);\n}\nfunction buildViewApi(type, getCurrentData, dateEnv) {\n return new ViewImpl(type, getCurrentData, dateEnv);\n}\nfunction buildEventUiBySource(eventSources) {\n return mapHash(eventSources, (eventSource) => eventSource.ui);\n}\nfunction buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) {\n let eventUiBases = { '': eventUiSingleBase };\n for (let defId in eventDefs) {\n let def = eventDefs[defId];\n if (def.sourceId && eventUiBySource[def.sourceId]) {\n eventUiBases[defId] = eventUiBySource[def.sourceId];\n }\n }\n return eventUiBases;\n}\nfunction buildViewUiProps(calendarContext) {\n let { options } = calendarContext;\n return {\n eventUiSingleBase: createEventUi({\n display: options.eventDisplay,\n editable: options.editable,\n startEditable: options.eventStartEditable,\n durationEditable: options.eventDurationEditable,\n constraint: options.eventConstraint,\n overlap: typeof options.eventOverlap === 'boolean' ? options.eventOverlap : undefined,\n allow: options.eventAllow,\n backgroundColor: options.eventBackgroundColor,\n borderColor: options.eventBorderColor,\n textColor: options.eventTextColor,\n color: options.eventColor,\n // classNames: options.eventClassNames // render hook will handle this\n }, calendarContext),\n selectionConfig: createEventUi({\n constraint: options.selectConstraint,\n overlap: typeof options.selectOverlap === 'boolean' ? options.selectOverlap : undefined,\n allow: options.selectAllow,\n }, calendarContext),\n };\n}\nfunction computeIsLoading(state, context) {\n for (let isLoadingFunc of context.pluginHooks.isLoadingFuncs) {\n if (isLoadingFunc(state)) {\n return true;\n }\n }\n return false;\n}\nfunction parseContextBusinessHours(calendarContext) {\n return parseBusinessHours(calendarContext.options.businessHours, calendarContext);\n}\nfunction warnUnknownOptions(options, viewName) {\n for (let optionName in options) {\n console.warn(`Unknown option '${optionName}'` +\n (viewName ? ` for view '${viewName}'` : ''));\n }\n}\n\nclass ToolbarSection extends BaseComponent {\n render() {\n let children = this.props.widgetGroups.map((widgetGroup) => this.renderWidgetGroup(widgetGroup));\n return createElement('div', { className: 'fc-toolbar-chunk' }, ...children);\n }\n renderWidgetGroup(widgetGroup) {\n let { props } = this;\n let { theme } = this.context;\n let children = [];\n let isOnlyButtons = true;\n for (let widget of widgetGroup) {\n let { buttonName, buttonClick, buttonText, buttonIcon, buttonHint } = widget;\n if (buttonName === 'title') {\n isOnlyButtons = false;\n children.push(createElement(\"h2\", { className: \"fc-toolbar-title\", id: props.titleId }, props.title));\n }\n else {\n let isPressed = buttonName === props.activeButton;\n let isDisabled = (!props.isTodayEnabled && buttonName === 'today') ||\n (!props.isPrevEnabled && buttonName === 'prev') ||\n (!props.isNextEnabled && buttonName === 'next');\n let buttonClasses = [`fc-${buttonName}-button`, theme.getClass('button')];\n if (isPressed) {\n buttonClasses.push(theme.getClass('buttonActive'));\n }\n 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, role: \"img\" }) : '')));\n }\n }\n if (children.length > 1) {\n let groupClassName = (isOnlyButtons && theme.getClass('buttonGroup')) || '';\n return createElement('div', { className: groupClassName }, ...children);\n }\n return children[0];\n }\n}\n\nclass Toolbar extends BaseComponent {\n render() {\n let { model, extraClassName } = this.props;\n let forceLtr = false;\n let startContent;\n let endContent;\n let sectionWidgets = model.sectionWidgets;\n let centerContent = sectionWidgets.center;\n if (sectionWidgets.left) {\n forceLtr = true;\n startContent = sectionWidgets.left;\n }\n else {\n startContent = sectionWidgets.start;\n }\n if (sectionWidgets.right) {\n forceLtr = true;\n endContent = sectionWidgets.right;\n }\n else {\n endContent = sectionWidgets.end;\n }\n let classNames = [\n extraClassName || '',\n 'fc-toolbar',\n forceLtr ? 'fc-toolbar-ltr' : '',\n ];\n return (createElement(\"div\", { className: classNames.join(' ') },\n this.renderSection('start', startContent || []),\n this.renderSection('center', centerContent || []),\n this.renderSection('end', endContent || [])));\n }\n renderSection(key, widgetGroups) {\n let { props } = this;\n 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 }));\n }\n}\n\nclass ViewHarness extends BaseComponent {\n constructor() {\n super(...arguments);\n this.state = {\n availableWidth: null,\n };\n this.handleEl = (el) => {\n this.el = el;\n setRef(this.props.elRef, el);\n this.updateAvailableWidth();\n };\n this.handleResize = () => {\n this.updateAvailableWidth();\n };\n }\n render() {\n let { props, state } = this;\n let { aspectRatio } = props;\n let classNames = [\n 'fc-view-harness',\n (aspectRatio || props.liquid || props.height)\n ? 'fc-view-harness-active' // harness controls the height\n : 'fc-view-harness-passive', // let the view do the height\n ];\n let height = '';\n let paddingBottom = '';\n if (aspectRatio) {\n if (state.availableWidth !== null) {\n height = state.availableWidth / aspectRatio;\n }\n else {\n // while waiting to know availableWidth, we can't set height to *zero*\n // because will cause lots of unnecessary scrollbars within scrollgrid.\n // BETTER: don't start rendering ANYTHING yet until we know container width\n // NOTE: why not always use paddingBottom? Causes height oscillation (issue 5606)\n paddingBottom = `${(1 / aspectRatio) * 100}%`;\n }\n }\n else {\n height = props.height || '';\n }\n return (createElement(\"div\", { \"aria-labelledby\": props.labeledById, ref: this.handleEl, className: classNames.join(' '), style: { height, paddingBottom } }, props.children));\n }\n componentDidMount() {\n this.context.addResizeHandler(this.handleResize);\n }\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleResize);\n }\n updateAvailableWidth() {\n if (this.el && // needed. but why?\n this.props.aspectRatio // aspectRatio is the only height setting that needs availableWidth\n ) {\n this.setState({ availableWidth: this.el.offsetWidth });\n }\n }\n}\n\n/*\nDetects when the user clicks on an event within a DateComponent\n*/\nclass EventClicking extends Interaction {\n constructor(settings) {\n super(settings);\n this.handleSegClick = (ev, segEl) => {\n let { component } = this;\n let { context } = component;\n let seg = getElSeg(segEl);\n if (seg && // might be the <div> surrounding the more link\n component.isValidSegDownEl(ev.target)) {\n // our way to simulate a link click for elements that can't be <a> tags\n // grab before trigger fired in case trigger trashes DOM thru rerendering\n let hasUrlContainer = elementClosest(ev.target, '.fc-event-forced-url');\n let url = hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href : '';\n context.emitter.trigger('eventClick', {\n el: segEl,\n event: new EventImpl(component.context, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: context.viewApi,\n });\n if (url && !ev.defaultPrevented) {\n window.location.href = url;\n }\n }\n };\n this.destroy = listenBySelector(settings.el, 'click', '.fc-event', // on both fg and bg events\n this.handleSegClick);\n }\n}\n\n/*\nTriggers events and adds/removes core classNames when the user's pointer\nenters/leaves event-elements of a component.\n*/\nclass EventHovering extends Interaction {\n constructor(settings) {\n super(settings);\n // for simulating an eventMouseLeave when the event el is destroyed while mouse is over it\n this.handleEventElRemove = (el) => {\n if (el === this.currentSegEl) {\n this.handleSegLeave(null, this.currentSegEl);\n }\n };\n this.handleSegEnter = (ev, segEl) => {\n if (getElSeg(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper\n this.currentSegEl = segEl;\n this.triggerEvent('eventMouseEnter', ev, segEl);\n }\n };\n this.handleSegLeave = (ev, segEl) => {\n if (this.currentSegEl) {\n this.currentSegEl = null;\n this.triggerEvent('eventMouseLeave', ev, segEl);\n }\n };\n this.removeHoverListeners = listenToHoverBySelector(settings.el, '.fc-event', // on both fg and bg events\n this.handleSegEnter, this.handleSegLeave);\n }\n destroy() {\n this.removeHoverListeners();\n }\n triggerEvent(publicEvName, ev, segEl) {\n let { component } = this;\n let { context } = component;\n let seg = getElSeg(segEl);\n if (!ev || component.isValidSegDownEl(ev.target)) {\n context.emitter.trigger(publicEvName, {\n el: segEl,\n event: new EventImpl(context, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: context.viewApi,\n });\n }\n }\n}\n\nclass CalendarContent extends PureComponent {\n constructor() {\n super(...arguments);\n this.buildViewContext = memoize(buildViewContext);\n this.buildViewPropTransformers = memoize(buildViewPropTransformers);\n this.buildToolbarProps = memoize(buildToolbarProps);\n this.headerRef = createRef();\n this.footerRef = createRef();\n this.interactionsStore = {};\n // eslint-disable-next-line\n this.state = {\n viewLabelId: getUniqueDomId(),\n };\n // Component Registration\n // -----------------------------------------------------------------------------------------------------------------\n this.registerInteractiveComponent = (component, settingsInput) => {\n let settings = parseInteractionSettings(component, settingsInput);\n let DEFAULT_INTERACTIONS = [\n EventClicking,\n EventHovering,\n ];\n let interactionClasses = DEFAULT_INTERACTIONS.concat(this.props.pluginHooks.componentInteractions);\n let interactions = interactionClasses.map((TheInteractionClass) => new TheInteractionClass(settings));\n this.interactionsStore[component.uid] = interactions;\n interactionSettingsStore[component.uid] = settings;\n };\n this.unregisterInteractiveComponent = (component) => {\n let listeners = this.interactionsStore[component.uid];\n if (listeners) {\n for (let listener of listeners) {\n listener.destroy();\n }\n delete this.interactionsStore[component.uid];\n }\n delete interactionSettingsStore[component.uid];\n };\n // Resizing\n // -----------------------------------------------------------------------------------------------------------------\n this.resizeRunner = new DelayedRunner(() => {\n this.props.emitter.trigger('_resize', true); // should window resizes be considered \"forced\" ?\n this.props.emitter.trigger('windowResize', { view: this.props.viewApi });\n });\n this.handleWindowResize = (ev) => {\n let { options } = this.props;\n if (options.handleWindowResize &&\n ev.target === window // avoid jqui events\n ) {\n this.resizeRunner.request(options.windowResizeDelay);\n }\n };\n }\n /*\n renders INSIDE of an outer div\n */\n render() {\n let { props } = this;\n let { toolbarConfig, options } = props;\n let toolbarProps = this.buildToolbarProps(props.viewSpec, props.dateProfile, props.dateProfileGenerator, props.currentDate, getNow(props.options.now, props.dateEnv), // TODO: use NowTimer????\n props.viewTitle);\n let viewVGrow = false;\n let viewHeight = '';\n let viewAspectRatio;\n if (props.isHeightAuto || props.forPrint) {\n viewHeight = '';\n }\n else if (options.height != null) {\n viewVGrow = true;\n }\n else if (options.contentHeight != null) {\n viewHeight = options.contentHeight;\n }\n else {\n viewAspectRatio = Math.max(options.aspectRatio, 0.5); // prevent from getting too tall\n }\n let viewContext = this.buildViewContext(props.viewSpec, props.viewApi, props.options, props.dateProfileGenerator, props.dateEnv, props.theme, props.pluginHooks, props.dispatch, props.getCurrentData, props.emitter, props.calendarApi, this.registerInteractiveComponent, this.unregisterInteractiveComponent);\n let viewLabelId = (toolbarConfig.header && toolbarConfig.header.hasTitle)\n ? this.state.viewLabelId\n : undefined;\n return (createElement(ViewContextType.Provider, { value: viewContext },\n toolbarConfig.header && (createElement(Toolbar, Object.assign({ ref: this.headerRef, extraClassName: \"fc-header-toolbar\", model: toolbarConfig.header, titleId: viewLabelId }, toolbarProps))),\n createElement(ViewHarness, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, labeledById: viewLabelId },\n this.renderView(props),\n this.buildAppendContent()),\n toolbarConfig.footer && (createElement(Toolbar, Object.assign({ ref: this.footerRef, extraClassName: \"fc-footer-toolbar\", model: toolbarConfig.footer, titleId: \"\" }, toolbarProps)))));\n }\n componentDidMount() {\n let { props } = this;\n this.calendarInteractions = props.pluginHooks.calendarInteractions\n .map((CalendarInteractionClass) => new CalendarInteractionClass(props));\n window.addEventListener('resize', this.handleWindowResize);\n let { propSetHandlers } = props.pluginHooks;\n for (let propName in propSetHandlers) {\n propSetHandlers[propName](props[propName], props);\n }\n }\n componentDidUpdate(prevProps) {\n let { props } = this;\n let { propSetHandlers } = props.pluginHooks;\n for (let propName in propSetHandlers) {\n if (props[propName] !== prevProps[propName]) {\n propSetHandlers[propName](props[propName], props);\n }\n }\n }\n componentWillUnmount() {\n window.removeEventListener('resize', this.handleWindowResize);\n this.resizeRunner.clear();\n for (let interaction of this.calendarInteractions) {\n interaction.destroy();\n }\n this.props.emitter.trigger('_unmount');\n }\n buildAppendContent() {\n let { props } = this;\n let children = props.pluginHooks.viewContainerAppends.map((buildAppendContent) => buildAppendContent(props));\n return createElement(Fragment, {}, ...children);\n }\n renderView(props) {\n let { pluginHooks } = props;\n let { viewSpec } = props;\n let viewProps = {\n dateProfile: props.dateProfile,\n businessHours: props.businessHours,\n eventStore: props.renderableEventStore,\n eventUiBases: props.eventUiBases,\n dateSelection: props.dateSelection,\n eventSelection: props.eventSelection,\n eventDrag: props.eventDrag,\n eventResize: props.eventResize,\n isHeightAuto: props.isHeightAuto,\n forPrint: props.forPrint,\n };\n let transformers = this.buildViewPropTransformers(pluginHooks.viewPropsTransformers);\n for (let transformer of transformers) {\n Object.assign(viewProps, transformer.transform(viewProps, props));\n }\n let ViewComponent = viewSpec.component;\n return (createElement(ViewComponent, Object.assign({}, viewProps)));\n }\n}\nfunction buildToolbarProps(viewSpec, dateProfile, dateProfileGenerator, currentDate, now, title) {\n // don't force any date-profiles to valid date profiles (the `false`) so that we can tell if it's invalid\n let todayInfo = dateProfileGenerator.build(now, undefined, false); // TODO: need `undefined` or else INFINITE LOOP for some reason\n let prevInfo = dateProfileGenerator.buildPrev(dateProfile, currentDate, false);\n let nextInfo = dateProfileGenerator.buildNext(dateProfile, currentDate, false);\n return {\n title,\n activeButton: viewSpec.type,\n navUnit: viewSpec.singleUnit,\n isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now),\n isPrevEnabled: prevInfo.isValid,\n isNextEnabled: nextInfo.isValid,\n };\n}\n// Plugin\n// -----------------------------------------------------------------------------------------------------------------\nfunction buildViewPropTransformers(theClasses) {\n return theClasses.map((TheClass) => new TheClass());\n}\n\nclass Calendar extends CalendarImpl {\n constructor(el, optionOverrides = {}) {\n super();\n this.isRendering = false;\n this.isRendered = false;\n this.currentClassNames = [];\n this.customContentRenderId = 0;\n this.handleAction = (action) => {\n // actions we know we want to render immediately\n switch (action.type) {\n case 'SET_EVENT_DRAG':\n case 'SET_EVENT_RESIZE':\n this.renderRunner.tryDrain();\n }\n };\n this.handleData = (data) => {\n this.currentData = data;\n this.renderRunner.request(data.calendarOptions.rerenderDelay);\n };\n this.handleRenderRequest = () => {\n if (this.isRendering) {\n this.isRendered = true;\n let { currentData } = this;\n flushSync(() => {\n render(createElement(CalendarRoot, { options: currentData.calendarOptions, theme: currentData.theme, emitter: currentData.emitter }, (classNames, height, isHeightAuto, forPrint) => {\n this.setClassNames(classNames);\n this.setHeight(height);\n return (createElement(RenderId.Provider, { value: this.customContentRenderId },\n createElement(CalendarContent, Object.assign({ isHeightAuto: isHeightAuto, forPrint: forPrint }, currentData))));\n }), this.el);\n });\n }\n else if (this.isRendered) {\n this.isRendered = false;\n render(null, this.el);\n this.setClassNames([]);\n this.setHeight('');\n }\n };\n ensureElHasStyles(el);\n this.el = el;\n this.renderRunner = new DelayedRunner(this.handleRenderRequest);\n new CalendarDataManager({\n optionOverrides,\n calendarApi: this,\n onAction: this.handleAction,\n onData: this.handleData,\n });\n }\n render() {\n let wasRendering = this.isRendering;\n if (!wasRendering) {\n this.isRendering = true;\n }\n else {\n this.customContentRenderId += 1;\n }\n this.renderRunner.request();\n if (wasRendering) {\n this.updateSize();\n }\n }\n destroy() {\n if (this.isRendering) {\n this.isRendering = false;\n this.renderRunner.request();\n }\n }\n updateSize() {\n flushSync(() => {\n super.updateSize();\n });\n }\n batchRendering(func) {\n this.renderRunner.pause('batchRendering');\n func();\n this.renderRunner.resume('batchRendering');\n }\n pauseRendering() {\n this.renderRunner.pause('pauseRendering');\n }\n resumeRendering() {\n this.renderRunner.resume('pauseRendering', true);\n }\n resetOptions(optionOverrides, changedOptionNames) {\n this.currentDataManager.resetOptions(optionOverrides, changedOptionNames);\n }\n setClassNames(classNames) {\n if (!isArraysEqual(classNames, this.currentClassNames)) {\n let { classList } = this.el;\n for (let className of this.currentClassNames) {\n classList.remove(className);\n }\n for (let className of classNames) {\n classList.add(className);\n }\n this.currentClassNames = classNames;\n }\n }\n setHeight(height) {\n applyStyleProp(this.el, 'height', height);\n }\n}\n\nfunction formatDate(dateInput, options = {}) {\n let dateEnv = buildDateEnv(options);\n let formatter = createFormatter(options);\n let dateMeta = dateEnv.createMarkerMeta(dateInput);\n if (!dateMeta) { // TODO: warning?\n return '';\n }\n return dateEnv.format(dateMeta.marker, formatter, {\n forcedTzo: dateMeta.forcedTzo,\n });\n}\nfunction formatRange(startInput, endInput, options) {\n let dateEnv = buildDateEnv(typeof options === 'object' && options ? options : {}); // pass in if non-null object\n let formatter = createFormatter(options);\n let startMeta = dateEnv.createMarkerMeta(startInput);\n let endMeta = dateEnv.createMarkerMeta(endInput);\n if (!startMeta || !endMeta) { // TODO: warning?\n return '';\n }\n return dateEnv.formatRange(startMeta.marker, endMeta.marker, formatter, {\n forcedStartTzo: startMeta.forcedTzo,\n forcedEndTzo: endMeta.forcedTzo,\n isEndExclusive: options.isEndExclusive,\n defaultSeparator: BASE_OPTION_DEFAULTS.defaultRangeSeparator,\n });\n}\n// TODO: more DRY and optimized\nfunction buildDateEnv(settings) {\n let locale = buildLocale(settings.locale || 'en', organizeRawLocales([]).map); // TODO: don't hardcode 'en' everywhere\n return new DateEnv(Object.assign(Object.assign({ timeZone: BASE_OPTION_DEFAULTS.timeZone, calendarSystem: 'gregory' }, settings), { locale }));\n}\n\n// HELPERS\n/*\nif nextDayThreshold is specified, slicing is done in an all-day fashion.\nyou can get nextDayThreshold from context.nextDayThreshold\n*/\nfunction sliceEvents(props, allDay) {\n return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;\n}\n\nconst version = '6.1.13';\n\nexport { Calendar, createPlugin, formatDate, formatRange, globalLocales, globalPlugins, sliceEvents, version };\n"],"names":["globalLocales","MINIMAL_RAW_EN_LOCALE","code","week","dow","doy","direction","buttonText","prev","next","prevYear","nextYear","year","today","month","day","list","weekText","weekTextLong","closeHint","timeHint","eventHint","allDayText","moreLinkText","noEventsText","RAW_EN_LOCALE","Object","assign","buttonHints","unit","concat","viewHint","navLinkHint","moreLinkHint","eventCnt","organizeRawLocales","explicitRawLocales","defaultCode","length","allRawLocales","rawLocaleMap","en","rawLocale","map","buildLocale","inputSingular","available","Array","isArray","codeArg","codes","raw","i","parts","toLocaleLowerCase","split","j","simpleId","slice","join","queryRawLocale","parseLocale","queryLocale","merged","mergeProps","simpleNumberFormat","Intl","NumberFormat","options","createPlugin","input","id","guid","name","premiumReleaseDate","Date","undefined","deps","reducers","isLoadingFuncs","contextInit","eventRefiners","eventDefMemberAdders","eventSourceRefiners","isDraggableTransformers","eventDragMutationMassagers","eventDefMutationAppliers","dateSelectionTransformers","datePointTransforms","dateSpanTransforms","views","viewPropsTransformers","isPropsValid","externalDefTransforms","viewContainerAppends","eventDropTransformers","componentInteractions","calendarInteractions","themeClasses","eventSourceDefs","cmdFormatter","recurringTypes","namedTimeZonedImpl","initialView","elementDraggingImpl","optionChangeHandlers","scrollGridImpl","listenerRefiners","optionRefiners","propSetHandlers","buildBuildPluginHooks","currentHooks","currentOverrideDefs","currentGlobalDefs","overrideDefs","globalDefs","isArraysEqual","pluginDefs","currentPluginIds","hooks","addDefs","defs","def","pluginName","currentId","hooks1","compareOptionalDates","hooks0","console","warn","buildPluginHooks","date0","date1","Math","max","valueOf","StandardTheme","Theme","ensureViewDef","viewType","hash","defaultConfigs","overrideConfigs","viewDef","defaultConfig","overrideConfig","queryProp","theComponent","superType","superDef","Error","component","type","defaults","rawOptions","overrides","buildViewDef","parseViewConfigs","inputs","mapHash","parseViewConfig","content","createViewHookComponent","prototype","BaseComponent","viewProps","createElement","ViewContextType","Consumer","context","ContentContainer","elTag","elClasses","buildViewClassNames","viewSpec","renderProps","nextDayThreshold","generatorName","customGenerator","classNameGenerator","classNames","didMount","willUnmount","buildViewSpecs","defaultInputs","optionOverrides","dynamicOptionOverrides","localeDefaults","viewDefs","compileViewDefs","durationInput","duration","durationUnit","singleUnit","singleUnitOverrides","json","JSON","stringify","res","durationInputMap","createDuration","createDurationCached","denom","greatestDurationDenominator","value","queryButtonText","optionsSubset","buttonTextMap","buttonTextKey","queryButtonTitle","buttonKey","optionDefaults","buttonTextOverride","buttonTextDefault","BASE_OPTION_DEFAULTS","buttonTitleOverride","buttonHint","buttonTitleDefault","buildViewSpec","classes","root","tableCellShaded","buttonGroup","button","buttonActive","baseIconClass","iconClasses","close","rtlIconClasses","iconOverrideOption","iconOverrideCustomButtonOption","iconOverridePrefix","initEventSources","calendarOptions","dateProfile","activeRange","addSources","refiners","buildEventSourceRefiners","rawSources","eventSources","sources","initialEvents","unshift","events","rawSource","source","parseEventSource","push","parseInitialSources","reduceEventSources","action","eventSourceHash","sourceId","filterHash","eventSource","fetchDirtySources","fetchSourcesByIds","sourceIds","arrayToHash","excludeStaticSources","isRefetch","sourceHash","fetchId","fetchRange","latestFetchId","isFetching","receiveResponse","computeEventSourcesLoading","doesSourceNeedRange","lazyFetching","start","end","isSourceDirty","prevSources","sourceIdHash","nextSources","fetchSource","calendarApi","sourceDef","pluginHooks","sourceDefId","fetch","range","rawEvents","eventSourceSuccess","call","response","success","dispatch","error","errorHandled","eventSourceFailure","failure","message","ignoreRange","reduceDateSelection","currentSelection","selection","reduceSelectedEvent","currentInstanceId","eventInstanceId","reduceEventDrag","currentDrag","newDrag","state","affectedEvents","mutatedEvents","isEvent","reduceEventResize","currentResize","newResize","parseToolbars","calendarOptionOverrides","theme","viewSpecs","header","headerToolbar","parseToolbar","footer","footerToolbar","sectionStrHash","sectionWidgets","viewsWithButtons","hasTitle","sectionName","sectionRes","parseSection","widgets","sectionStr","isRtl","calendarCustomButtons","customButtons","calendarButtonTextOverrides","calendarButtonText","calendarButtonHintOverrides","calendarButtonHints","sectionSubstrs","buttonGroupStr","buttonName","customButtonProps","buttonClick","buttonIcon","ev","click","target","getCustomButtonIconClass","getIconClass","text","hint","changeView","textFallback","formatWithOrdinals","prevOrNext","navUnit","ViewImpl","constructor","getCurrentData","dateEnv","this","calendar","title","viewTitle","activeStart","toDate","activeEnd","currentStart","currentRange","currentEnd","getOption","arrayEventSourcePlugin","parseMeta","refined","arg","successCallback","meta","funcEventSourcePlugin","errorCallback","func","unpromisify","bind","buildRangeApiWithTimeZone","jsonFeedEventSourcePlugin","method","String","extraParams","identity","startParam","endParam","timeZoneParam","url","format","toUpperCase","requestParams","customRequestParams","params","formatIso","timeZone","buildRequestParams","requestJson","then","_ref","SIMPLE_RECURRING_REFINERS","daysOfWeek","startTime","endTime","startRecur","endRecur","handleEventSources","unfoundSources","hashValuesToArray","_raw","newInputs","inputFound","splice","unfoundSource","newInput","addEventSource","globalPlugins","parse","recurringData","createMarker","subtractDurations","allDayGuess","Boolean","typeData","expand","framingRange","clippedFramingRange","intersectRanges","dowHash","dayMarker","startOfDay","endMarker","instanceStarts","instanceStart","getUTCDay","add","addDays","expandRanges","emitter","trigger","view","viewApi","eventStore","hasHandlers","buildEventApis","TaskRunner","runTaskOption","drainedOption","queue","delayedRunner","DelayedRunner","drain","request","task","delay","pause","scope","resume","force","completedTasks","shift","runTask","drained","buildTitle","viewOptions","test","currentRangeUnit","formatRange","createFormatter","titleFormat","days","diffWholeDays","buildTitleFormat","isEndExclusive","isRangeAllDay","defaultSeparator","titleRangeSeparator","CalendarDataManager","props","computeCurrentViewData","memoize","_computeCurrentViewData","buildDateEnv","buildDateEnv$1","buildTheme","buildDateProfileGenerator","memoizeObjArg","buildViewApi","buildViewUiProps","buildEventUiBySource","isPropsEqual","buildEventUiBases","parseContextBusinessHours","Emitter","actionRunner","_handleAction","updateData","currentCalendarOptionsInput","currentCalendarOptionsRefined","currentViewOptionsInput","currentViewOptionsRefined","currentCalendarOptionsRefiners","optionsForRefining","optionsForHandling","data","optionsData","computeOptionsData","currentViewType","currentViewData","currentDataManager","setThisContext","setOptions","currentDate","getInitialDate","dateProfileGenerator","build","rangeContainsMarker","calendarContext","callback","initialState","businessHours","eventUiBases","createEmptyEventStore","renderableEventStore","dateSelection","eventSelection","eventDrag","eventResize","selectionConfig","contextAndState","reducer","computeIsLoading","resetOptions","changedOptionNames","optionName","rawOptionValue","reduceDynamicOptionOverrides","reduceViewType","reduceCurrentDate","currentDateProfile","dp","dateMarker","buildPrev","isValid","buildNext","reduceDateProfile","reduceEventStore","progressiveEventRendering","eventUiSingleBase","eventUiBySource","newState","wasLoading","isLoading","onAction","oldData","changeHandlers","oldCalendarOptions","newCalendarOptions","reduceEventSourcesNewTimeZone","rezoneEventStoreDates","indexOf","onData","stableOptionOverrides","stableDynamicOptionOverrides","stableCalendarOptionsData","refinedOptions","availableLocaleData","extra","processRawCalendarOptions","warnUnknownOptions","locale","weekNumberCalculation","firstDay","defaultRangeSeparator","toolbarConfig","availableRawLocales","locales","mergeRawOptions","plugins","BASE_OPTION_REFINERS","CALENDAR_LISTENER_REFINERS","CALENDAR_OPTION_REFINERS","currentRaw","currentRefined","anyChanges","COMPLEX_OPTION_COMPARATORS","processRawViewOptions","dateProfileGeneratorClass","usesMinMaxTime","slotMinTime","slotMaxTime","showNonCurrentDates","dayCount","dateAlignment","dateIncrement","hiddenDays","weekends","nowInput","now","validRangeInput","validRange","visibleRangeInput","visibleRange","fixedWeekCount","VIEW_OPTION_REFINERS","explicitLocale","DateEnv","calendarSystem","namedTimeZoneImpl","themeSystem","DateProfileGenerator","ui","eventDefs","defId","createEventUi","display","eventDisplay","editable","startEditable","eventStartEditable","durationEditable","eventDurationEditable","constraint","eventConstraint","overlap","eventOverlap","allow","eventAllow","backgroundColor","eventBackgroundColor","borderColor","eventBorderColor","textColor","eventTextColor","color","eventColor","selectConstraint","selectOverlap","selectAllow","isLoadingFunc","parseBusinessHours","viewName","ToolbarSection","render","children","widgetGroups","widgetGroup","renderWidgetGroup","className","isOnlyButtons","widget","titleId","isPressed","activeButton","isDisabled","isTodayEnabled","isPrevEnabled","isNextEnabled","buttonClasses","getClass","disabled","onClick","role","groupClassName","Toolbar","startContent","endContent","model","extraClassName","forceLtr","centerContent","center","left","right","renderSection","key","ViewHarness","super","arguments","availableWidth","handleEl","el","setRef","elRef","updateAvailableWidth","handleResize","aspectRatio","liquid","height","paddingBottom","labeledById","ref","style","componentDidMount","addResizeHandler","componentWillUnmount","removeResizeHandler","setState","offsetWidth","EventClicking","Interaction","settings","handleSegClick","segEl","seg","getElSeg","isValidSegDownEl","hasUrlContainer","elementClosest","querySelector","href","event","EventImpl","eventRange","instance","jsEvent","defaultPrevented","window","location","destroy","listenBySelector","EventHovering","handleEventElRemove","currentSegEl","handleSegLeave","handleSegEnter","triggerEvent","removeHoverListeners","listenToHoverBySelector","publicEvName","CalendarContent","PureComponent","buildViewContext","buildViewPropTransformers","buildToolbarProps","headerRef","createRef","footerRef","interactionsStore","viewLabelId","getUniqueDomId","registerInteractiveComponent","settingsInput","parseInteractionSettings","interactions","TheInteractionClass","uid","interactionSettingsStore","unregisterInteractiveComponent","listeners","listener","resizeRunner","handleWindowResize","windowResizeDelay","viewAspectRatio","toolbarProps","getNow","viewVGrow","viewHeight","isHeightAuto","forPrint","contentHeight","viewContext","Provider","renderView","buildAppendContent","CalendarInteractionClass","addEventListener","propName","componentDidUpdate","prevProps","removeEventListener","clear","interaction","Fragment","transformers","transformer","transform","ViewComponent","todayInfo","prevInfo","nextInfo","theClasses","TheClass","Calendar","CalendarImpl","isRendering","isRendered","currentClassNames","customContentRenderId","handleAction","renderRunner","tryDrain","handleData","currentData","rerenderDelay","handleRenderRequest","flushSync","CalendarRoot","setClassNames","setHeight","RenderId","ensureElHasStyles","wasRendering","updateSize","batchRendering","pauseRendering","resumeRendering","classList","remove","applyStyleProp","formatDate","dateInput","formatter","dateMeta","createMarkerMeta","marker","forcedTzo","startInput","endInput","startMeta","endMeta","forcedStartTzo","forcedEndTzo","sliceEvents","allDay","sliceEventStore","fg","version"],"sourceRoot":""}