@fullcalendar/core 6.0.2 → 6.0.3

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 (414) hide show
  1. package/{index.cjs → index.esm.js} +147 -158
  2. package/index.global.js +31 -8
  3. package/index.global.min.js +2 -2
  4. package/index.js +158 -147
  5. package/internal-common.d.ts +9 -7
  6. package/{internal-common.cjs → internal-common.esm.js} +4742 -4955
  7. package/internal-common.js +4930 -4671
  8. package/internal.esm.js +3 -0
  9. package/internal.js +196 -3
  10. package/locales/{af.cjs → af.esm.js} +1 -5
  11. package/locales/af.global.js +1 -1
  12. package/locales/af.global.min.js +1 -1
  13. package/locales/af.js +5 -1
  14. package/locales/{ar-dz.cjs → ar-dz.esm.js} +1 -5
  15. package/locales/ar-dz.global.js +1 -1
  16. package/locales/ar-dz.global.min.js +1 -1
  17. package/locales/ar-dz.js +5 -1
  18. package/locales/{ar-kw.cjs → ar-kw.esm.js} +1 -5
  19. package/locales/ar-kw.global.js +1 -1
  20. package/locales/ar-kw.global.min.js +1 -1
  21. package/locales/ar-kw.js +5 -1
  22. package/locales/{ar-ly.cjs → ar-ly.esm.js} +1 -5
  23. package/locales/ar-ly.global.js +1 -1
  24. package/locales/ar-ly.global.min.js +1 -1
  25. package/locales/ar-ly.js +5 -1
  26. package/locales/{ar-ma.cjs → ar-ma.esm.js} +1 -5
  27. package/locales/ar-ma.global.js +1 -1
  28. package/locales/ar-ma.global.min.js +1 -1
  29. package/locales/ar-ma.js +5 -1
  30. package/locales/{ar-sa.cjs → ar-sa.esm.js} +1 -5
  31. package/locales/ar-sa.global.js +1 -1
  32. package/locales/ar-sa.global.min.js +1 -1
  33. package/locales/ar-sa.js +5 -1
  34. package/locales/{ar-tn.cjs → ar-tn.esm.js} +1 -5
  35. package/locales/ar-tn.global.js +1 -1
  36. package/locales/ar-tn.global.min.js +1 -1
  37. package/locales/ar-tn.js +5 -1
  38. package/locales/{ar.cjs → ar.esm.js} +1 -5
  39. package/locales/ar.global.js +1 -1
  40. package/locales/ar.global.min.js +1 -1
  41. package/locales/ar.js +5 -1
  42. package/locales/{az.cjs → az.esm.js} +1 -5
  43. package/locales/az.global.js +1 -1
  44. package/locales/az.global.min.js +1 -1
  45. package/locales/az.js +5 -1
  46. package/locales/{bg.cjs → bg.esm.js} +1 -5
  47. package/locales/bg.global.js +1 -1
  48. package/locales/bg.global.min.js +1 -1
  49. package/locales/bg.js +5 -1
  50. package/locales/{bn.cjs → bn.esm.js} +1 -5
  51. package/locales/bn.global.js +1 -1
  52. package/locales/bn.global.min.js +1 -1
  53. package/locales/bn.js +5 -1
  54. package/locales/{bs.cjs → bs.esm.js} +1 -5
  55. package/locales/bs.global.js +1 -1
  56. package/locales/bs.global.min.js +1 -1
  57. package/locales/bs.js +5 -1
  58. package/locales/{ca.cjs → ca.esm.js} +1 -5
  59. package/locales/ca.global.js +1 -1
  60. package/locales/ca.global.min.js +1 -1
  61. package/locales/ca.js +5 -1
  62. package/locales/{cs.cjs → cs.esm.js} +1 -5
  63. package/locales/cs.global.js +1 -1
  64. package/locales/cs.global.min.js +1 -1
  65. package/locales/cs.js +5 -1
  66. package/locales/{cy.cjs → cy.esm.js} +1 -5
  67. package/locales/cy.global.js +1 -1
  68. package/locales/cy.global.min.js +1 -1
  69. package/locales/cy.js +5 -1
  70. package/locales/{da.cjs → da.esm.js} +1 -5
  71. package/locales/da.global.js +1 -1
  72. package/locales/da.global.min.js +1 -1
  73. package/locales/da.js +5 -1
  74. package/locales/{de-at.cjs → de-at.esm.js} +1 -5
  75. package/locales/de-at.global.js +1 -1
  76. package/locales/de-at.global.min.js +1 -1
  77. package/locales/de-at.js +5 -1
  78. package/locales/{de.cjs → de.esm.js} +1 -5
  79. package/locales/de.global.js +1 -1
  80. package/locales/de.global.min.js +1 -1
  81. package/locales/de.js +5 -1
  82. package/locales/{el.cjs → el.esm.js} +1 -5
  83. package/locales/el.global.js +1 -1
  84. package/locales/el.global.min.js +1 -1
  85. package/locales/el.js +5 -1
  86. package/locales/{en-au.cjs → en-au.esm.js} +1 -5
  87. package/locales/en-au.global.js +1 -1
  88. package/locales/en-au.global.min.js +1 -1
  89. package/locales/en-au.js +5 -1
  90. package/locales/{en-gb.cjs → en-gb.esm.js} +1 -5
  91. package/locales/en-gb.global.js +1 -1
  92. package/locales/en-gb.global.min.js +1 -1
  93. package/locales/en-gb.js +5 -1
  94. package/locales/{en-nz.cjs → en-nz.esm.js} +1 -5
  95. package/locales/en-nz.global.js +1 -1
  96. package/locales/en-nz.global.min.js +1 -1
  97. package/locales/en-nz.js +5 -1
  98. package/locales/{eo.cjs → eo.esm.js} +1 -5
  99. package/locales/eo.global.js +1 -1
  100. package/locales/eo.global.min.js +1 -1
  101. package/locales/eo.js +5 -1
  102. package/locales/{es-us.cjs → es-us.esm.js} +1 -5
  103. package/locales/es-us.global.js +1 -1
  104. package/locales/es-us.global.min.js +1 -1
  105. package/locales/es-us.js +5 -1
  106. package/locales/{es.cjs → es.esm.js} +1 -5
  107. package/locales/es.global.js +1 -1
  108. package/locales/es.global.min.js +1 -1
  109. package/locales/es.js +5 -1
  110. package/locales/{et.cjs → et.esm.js} +1 -5
  111. package/locales/et.global.js +1 -1
  112. package/locales/et.global.min.js +1 -1
  113. package/locales/et.js +5 -1
  114. package/locales/{eu.cjs → eu.esm.js} +1 -5
  115. package/locales/eu.global.js +1 -1
  116. package/locales/eu.global.min.js +1 -1
  117. package/locales/eu.js +5 -1
  118. package/locales/{fa.cjs → fa.esm.js} +1 -5
  119. package/locales/fa.global.js +1 -1
  120. package/locales/fa.global.min.js +1 -1
  121. package/locales/fa.js +5 -1
  122. package/locales/{fi.cjs → fi.esm.js} +1 -5
  123. package/locales/fi.global.js +1 -1
  124. package/locales/fi.global.min.js +1 -1
  125. package/locales/fi.js +5 -1
  126. package/locales/{fr-ca.cjs → fr-ca.esm.js} +1 -5
  127. package/locales/fr-ca.global.js +1 -1
  128. package/locales/fr-ca.global.min.js +1 -1
  129. package/locales/fr-ca.js +5 -1
  130. package/locales/{fr-ch.cjs → fr-ch.esm.js} +1 -5
  131. package/locales/fr-ch.global.js +1 -1
  132. package/locales/fr-ch.global.min.js +1 -1
  133. package/locales/fr-ch.js +5 -1
  134. package/locales/{fr.cjs → fr.esm.js} +1 -5
  135. package/locales/fr.global.js +1 -1
  136. package/locales/fr.global.min.js +1 -1
  137. package/locales/fr.js +5 -1
  138. package/locales/{gl.cjs → gl.esm.js} +1 -5
  139. package/locales/gl.global.js +1 -1
  140. package/locales/gl.global.min.js +1 -1
  141. package/locales/gl.js +5 -1
  142. package/locales/{he.cjs → he.esm.js} +1 -5
  143. package/locales/he.global.js +1 -1
  144. package/locales/he.global.min.js +1 -1
  145. package/locales/he.js +5 -1
  146. package/locales/{hi.cjs → hi.esm.js} +1 -5
  147. package/locales/hi.global.js +1 -1
  148. package/locales/hi.global.min.js +1 -1
  149. package/locales/hi.js +5 -1
  150. package/locales/{hr.cjs → hr.esm.js} +1 -5
  151. package/locales/hr.global.js +1 -1
  152. package/locales/hr.global.min.js +1 -1
  153. package/locales/hr.js +5 -1
  154. package/locales/{hu.cjs → hu.esm.js} +1 -5
  155. package/locales/hu.global.js +1 -1
  156. package/locales/hu.global.min.js +1 -1
  157. package/locales/hu.js +5 -1
  158. package/locales/{hy-am.cjs → hy-am.esm.js} +1 -5
  159. package/locales/hy-am.global.js +1 -1
  160. package/locales/hy-am.global.min.js +1 -1
  161. package/locales/hy-am.js +5 -1
  162. package/locales/{id.cjs → id.esm.js} +1 -5
  163. package/locales/id.global.js +1 -1
  164. package/locales/id.global.min.js +1 -1
  165. package/locales/id.js +5 -1
  166. package/locales/{is.cjs → is.esm.js} +1 -5
  167. package/locales/is.global.js +1 -1
  168. package/locales/is.global.min.js +1 -1
  169. package/locales/is.js +5 -1
  170. package/locales/{it.cjs → it.esm.js} +1 -5
  171. package/locales/it.global.js +1 -1
  172. package/locales/it.global.min.js +1 -1
  173. package/locales/it.js +5 -1
  174. package/locales/{ja.cjs → ja.esm.js} +1 -5
  175. package/locales/ja.global.js +1 -1
  176. package/locales/ja.global.min.js +1 -1
  177. package/locales/ja.js +5 -1
  178. package/locales/{ka.cjs → ka.esm.js} +1 -5
  179. package/locales/ka.global.js +1 -1
  180. package/locales/ka.global.min.js +1 -1
  181. package/locales/ka.js +5 -1
  182. package/locales/{kk.cjs → kk.esm.js} +1 -5
  183. package/locales/kk.global.js +1 -1
  184. package/locales/kk.global.min.js +1 -1
  185. package/locales/kk.js +5 -1
  186. package/locales/{km.cjs → km.esm.js} +1 -5
  187. package/locales/km.global.js +1 -1
  188. package/locales/km.global.min.js +1 -1
  189. package/locales/km.js +5 -1
  190. package/locales/{ko.cjs → ko.esm.js} +1 -5
  191. package/locales/ko.global.js +1 -1
  192. package/locales/ko.global.min.js +1 -1
  193. package/locales/ko.js +5 -1
  194. package/locales/{ku.cjs → ku.esm.js} +1 -5
  195. package/locales/ku.global.js +1 -1
  196. package/locales/ku.global.min.js +1 -1
  197. package/locales/ku.js +5 -1
  198. package/locales/{lb.cjs → lb.esm.js} +1 -5
  199. package/locales/lb.global.js +1 -1
  200. package/locales/lb.global.min.js +1 -1
  201. package/locales/lb.js +5 -1
  202. package/locales/{lt.cjs → lt.esm.js} +1 -5
  203. package/locales/lt.global.js +1 -1
  204. package/locales/lt.global.min.js +1 -1
  205. package/locales/lt.js +5 -1
  206. package/locales/{lv.cjs → lv.esm.js} +1 -5
  207. package/locales/lv.global.js +1 -1
  208. package/locales/lv.global.min.js +1 -1
  209. package/locales/lv.js +5 -1
  210. package/locales/{mk.cjs → mk.esm.js} +1 -5
  211. package/locales/mk.global.js +1 -1
  212. package/locales/mk.global.min.js +1 -1
  213. package/locales/mk.js +5 -1
  214. package/locales/{ms.cjs → ms.esm.js} +1 -5
  215. package/locales/ms.global.js +1 -1
  216. package/locales/ms.global.min.js +1 -1
  217. package/locales/ms.js +5 -1
  218. package/locales/{nb.cjs → nb.esm.js} +1 -5
  219. package/locales/nb.global.js +1 -1
  220. package/locales/nb.global.min.js +1 -1
  221. package/locales/nb.js +5 -1
  222. package/locales/{ne.cjs → ne.esm.js} +1 -5
  223. package/locales/ne.global.js +1 -1
  224. package/locales/ne.global.min.js +1 -1
  225. package/locales/ne.js +5 -1
  226. package/locales/{nl.cjs → nl.esm.js} +1 -5
  227. package/locales/nl.global.js +1 -1
  228. package/locales/nl.global.min.js +1 -1
  229. package/locales/nl.js +5 -1
  230. package/locales/{nn.cjs → nn.esm.js} +1 -5
  231. package/locales/nn.global.js +1 -1
  232. package/locales/nn.global.min.js +1 -1
  233. package/locales/nn.js +5 -1
  234. package/locales/{pl.cjs → pl.esm.js} +1 -5
  235. package/locales/pl.global.js +1 -1
  236. package/locales/pl.global.min.js +1 -1
  237. package/locales/pl.js +5 -1
  238. package/locales/{pt-br.cjs → pt-br.esm.js} +1 -5
  239. package/locales/pt-br.global.js +1 -1
  240. package/locales/pt-br.global.min.js +1 -1
  241. package/locales/pt-br.js +5 -1
  242. package/locales/{pt.cjs → pt.esm.js} +1 -5
  243. package/locales/pt.global.js +1 -1
  244. package/locales/pt.global.min.js +1 -1
  245. package/locales/pt.js +5 -1
  246. package/locales/{ro.cjs → ro.esm.js} +1 -5
  247. package/locales/ro.global.js +1 -1
  248. package/locales/ro.global.min.js +1 -1
  249. package/locales/ro.js +5 -1
  250. package/locales/{ru.cjs → ru.esm.js} +1 -5
  251. package/locales/ru.global.js +1 -1
  252. package/locales/ru.global.min.js +1 -1
  253. package/locales/ru.js +5 -1
  254. package/locales/{si-lk.cjs → si-lk.esm.js} +1 -5
  255. package/locales/si-lk.global.js +1 -1
  256. package/locales/si-lk.global.min.js +1 -1
  257. package/locales/si-lk.js +5 -1
  258. package/locales/{sk.cjs → sk.esm.js} +1 -5
  259. package/locales/sk.global.js +1 -1
  260. package/locales/sk.global.min.js +1 -1
  261. package/locales/sk.js +5 -1
  262. package/locales/{sl.cjs → sl.esm.js} +1 -5
  263. package/locales/sl.global.js +1 -1
  264. package/locales/sl.global.min.js +1 -1
  265. package/locales/sl.js +5 -1
  266. package/locales/{sm.cjs → sm.esm.js} +1 -5
  267. package/locales/sm.global.js +1 -1
  268. package/locales/sm.global.min.js +1 -1
  269. package/locales/sm.js +5 -1
  270. package/locales/{sq.cjs → sq.esm.js} +1 -5
  271. package/locales/sq.global.js +1 -1
  272. package/locales/sq.global.min.js +1 -1
  273. package/locales/sq.js +5 -1
  274. package/locales/{sr-cyrl.cjs → sr-cyrl.esm.js} +1 -5
  275. package/locales/sr-cyrl.global.js +1 -1
  276. package/locales/sr-cyrl.global.min.js +1 -1
  277. package/locales/sr-cyrl.js +5 -1
  278. package/locales/{sr.cjs → sr.esm.js} +1 -5
  279. package/locales/sr.global.js +1 -1
  280. package/locales/sr.global.min.js +1 -1
  281. package/locales/sr.js +5 -1
  282. package/locales/{sv.cjs → sv.esm.js} +1 -5
  283. package/locales/sv.global.js +1 -1
  284. package/locales/sv.global.min.js +1 -1
  285. package/locales/sv.js +5 -1
  286. package/locales/{ta-in.cjs → ta-in.esm.js} +1 -5
  287. package/locales/ta-in.global.js +1 -1
  288. package/locales/ta-in.global.min.js +1 -1
  289. package/locales/ta-in.js +5 -1
  290. package/locales/{th.cjs → th.esm.js} +1 -5
  291. package/locales/th.global.js +1 -1
  292. package/locales/th.global.min.js +1 -1
  293. package/locales/th.js +5 -1
  294. package/locales/{tr.cjs → tr.esm.js} +1 -5
  295. package/locales/tr.global.js +1 -1
  296. package/locales/tr.global.min.js +1 -1
  297. package/locales/tr.js +5 -1
  298. package/locales/{ug.cjs → ug.esm.js} +1 -5
  299. package/locales/ug.global.js +1 -1
  300. package/locales/ug.global.min.js +1 -1
  301. package/locales/ug.js +5 -1
  302. package/locales/{uk.cjs → uk.esm.js} +1 -5
  303. package/locales/uk.global.js +1 -1
  304. package/locales/uk.global.min.js +1 -1
  305. package/locales/uk.js +5 -1
  306. package/locales/{uz.cjs → uz.esm.js} +1 -5
  307. package/locales/uz.global.js +1 -1
  308. package/locales/uz.global.min.js +1 -1
  309. package/locales/uz.js +5 -1
  310. package/locales/{vi.cjs → vi.esm.js} +1 -5
  311. package/locales/vi.global.js +1 -1
  312. package/locales/vi.global.min.js +1 -1
  313. package/locales/vi.js +5 -1
  314. package/locales/{zh-cn.cjs → zh-cn.esm.js} +1 -5
  315. package/locales/zh-cn.global.js +1 -1
  316. package/locales/zh-cn.global.min.js +1 -1
  317. package/locales/zh-cn.js +5 -1
  318. package/locales/{zh-tw.cjs → zh-tw.esm.js} +1 -5
  319. package/locales/zh-tw.global.js +1 -1
  320. package/locales/zh-tw.global.min.js +1 -1
  321. package/locales/zh-tw.js +5 -1
  322. package/locales-all.esm.js +84 -0
  323. package/locales-all.global.js +1 -1
  324. package/locales-all.global.min.js +1 -1
  325. package/locales-all.js +84 -80
  326. package/package.json +13 -23
  327. package/preact.esm.js +3 -0
  328. package/preact.js +22 -3
  329. package/index.js.map +0 -1
  330. package/internal-common.js.map +0 -1
  331. package/internal.cjs +0 -196
  332. package/internal.js.map +0 -1
  333. package/locales/af.js.map +0 -1
  334. package/locales/ar-dz.js.map +0 -1
  335. package/locales/ar-kw.js.map +0 -1
  336. package/locales/ar-ly.js.map +0 -1
  337. package/locales/ar-ma.js.map +0 -1
  338. package/locales/ar-sa.js.map +0 -1
  339. package/locales/ar-tn.js.map +0 -1
  340. package/locales/ar.js.map +0 -1
  341. package/locales/az.js.map +0 -1
  342. package/locales/bg.js.map +0 -1
  343. package/locales/bn.js.map +0 -1
  344. package/locales/bs.js.map +0 -1
  345. package/locales/ca.js.map +0 -1
  346. package/locales/cs.js.map +0 -1
  347. package/locales/cy.js.map +0 -1
  348. package/locales/da.js.map +0 -1
  349. package/locales/de-at.js.map +0 -1
  350. package/locales/de.js.map +0 -1
  351. package/locales/el.js.map +0 -1
  352. package/locales/en-au.js.map +0 -1
  353. package/locales/en-gb.js.map +0 -1
  354. package/locales/en-nz.js.map +0 -1
  355. package/locales/eo.js.map +0 -1
  356. package/locales/es-us.js.map +0 -1
  357. package/locales/es.js.map +0 -1
  358. package/locales/et.js.map +0 -1
  359. package/locales/eu.js.map +0 -1
  360. package/locales/fa.js.map +0 -1
  361. package/locales/fi.js.map +0 -1
  362. package/locales/fr-ca.js.map +0 -1
  363. package/locales/fr-ch.js.map +0 -1
  364. package/locales/fr.js.map +0 -1
  365. package/locales/gl.js.map +0 -1
  366. package/locales/he.js.map +0 -1
  367. package/locales/hi.js.map +0 -1
  368. package/locales/hr.js.map +0 -1
  369. package/locales/hu.js.map +0 -1
  370. package/locales/hy-am.js.map +0 -1
  371. package/locales/id.js.map +0 -1
  372. package/locales/is.js.map +0 -1
  373. package/locales/it.js.map +0 -1
  374. package/locales/ja.js.map +0 -1
  375. package/locales/ka.js.map +0 -1
  376. package/locales/kk.js.map +0 -1
  377. package/locales/km.js.map +0 -1
  378. package/locales/ko.js.map +0 -1
  379. package/locales/ku.js.map +0 -1
  380. package/locales/lb.js.map +0 -1
  381. package/locales/lt.js.map +0 -1
  382. package/locales/lv.js.map +0 -1
  383. package/locales/mk.js.map +0 -1
  384. package/locales/ms.js.map +0 -1
  385. package/locales/nb.js.map +0 -1
  386. package/locales/ne.js.map +0 -1
  387. package/locales/nl.js.map +0 -1
  388. package/locales/nn.js.map +0 -1
  389. package/locales/pl.js.map +0 -1
  390. package/locales/pt-br.js.map +0 -1
  391. package/locales/pt.js.map +0 -1
  392. package/locales/ro.js.map +0 -1
  393. package/locales/ru.js.map +0 -1
  394. package/locales/si-lk.js.map +0 -1
  395. package/locales/sk.js.map +0 -1
  396. package/locales/sl.js.map +0 -1
  397. package/locales/sm.js.map +0 -1
  398. package/locales/sq.js.map +0 -1
  399. package/locales/sr-cyrl.js.map +0 -1
  400. package/locales/sr.js.map +0 -1
  401. package/locales/sv.js.map +0 -1
  402. package/locales/ta-in.js.map +0 -1
  403. package/locales/th.js.map +0 -1
  404. package/locales/tr.js.map +0 -1
  405. package/locales/ug.js.map +0 -1
  406. package/locales/uk.js.map +0 -1
  407. package/locales/uz.js.map +0 -1
  408. package/locales/vi.js.map +0 -1
  409. package/locales/zh-cn.js.map +0 -1
  410. package/locales/zh-tw.js.map +0 -1
  411. package/locales-all.cjs +0 -88
  412. package/locales-all.js.map +0 -1
  413. package/preact.cjs +0 -22
  414. package/preact.js.map +0 -1
package/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../src/global-locales.ts","../src/datelib/locale.ts","../src/plugin-system.ts","../src/theme/StandardTheme.ts","../src/structs/view-def.ts","../src/structs/view-config.tsx","../src/structs/view-spec.ts","../src/reducers/view-type.ts","../src/reducers/options.ts","../src/reducers/date-profile.ts","../src/reducers/eventSources.ts","../src/reducers/date-selection.ts","../src/reducers/selected-event.ts","../src/reducers/event-drag.ts","../src/reducers/event-resize.ts","../src/toolbar-parse.ts","../src/api/ViewImpl.ts","../src/event-sources/array-event-source.ts","../src/event-sources/func-event-source.ts","../src/event-sources/json-feed-event-source-refiners.ts","../src/event-sources/json-feed-event-source.ts","../src/structs/recurring-event-simple-refiners.ts","../src/structs/recurring-event-simple.ts","../src/option-change-handlers.ts","../src/dates-set.ts","../src/event-crud.ts","../src/global-plugins.ts","../src/util/TaskRunner.ts","../src/reducers/title-formatting.ts","../src/reducers/CalendarDataManager.ts","../src/ToolbarSection.tsx","../src/Toolbar.tsx","../src/ViewContainer.tsx","../src/interactions/EventClicking.ts","../src/interactions/EventHovering.ts","../src/CalendarContent.tsx","../src/Calendar.tsx","../src/formatting-api.ts","../src/View.ts","../src/index.ts"],"sourcesContent":["import { LocaleInput } from './datelib/locale.js'\n\nexport const globalLocales: LocaleInput[] = []\n","import { mergeProps } from '../util/object.js'\nimport { globalLocales } from '../global-locales.js' // weird to be importing this\nimport { CalendarOptions, CalendarOptionsRefined } from '../options.js'\n\nexport type LocaleCodeArg = string | string[]\nexport type LocaleSingularArg = LocaleCodeArg | LocaleInput\n\nexport interface Locale {\n codeArg: LocaleCodeArg\n codes: string[]\n week: { dow: number, doy: number }\n simpleNumberFormat: Intl.NumberFormat\n options: CalendarOptionsRefined\n}\n\nexport interface LocaleInput extends CalendarOptions {\n code: string\n}\n\nexport type LocaleInputMap = { [code: string]: LocaleInput }\n\nexport interface RawLocaleInfo {\n map: LocaleInputMap\n defaultCode: string\n}\n\nconst MINIMAL_RAW_EN_LOCALE = {\n code: 'en',\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 4, // 4 days need to be within the year to be considered the first week\n },\n direction: 'ltr' as ('ltr' | 'rtl'), // TODO: make a real type for this\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}\n\nconst RAW_EN_LOCALE = {\n ...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 },\n viewHint: '$0 view',\n navLinkHint: 'Go to $0',\n moreLinkHint(eventCnt: number) {\n return `Show ${eventCnt} more event${eventCnt === 1 ? '' : 's'}`\n },\n}\n\nexport function organizeRawLocales(explicitRawLocales: LocaleInput[]): RawLocaleInfo {\n let defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en'\n let allRawLocales = globalLocales.concat(explicitRawLocales)\n let rawLocaleMap: LocaleInputMap = {\n en: RAW_EN_LOCALE,\n }\n\n for (let rawLocale of allRawLocales) {\n rawLocaleMap[rawLocale.code] = rawLocale\n }\n\n return {\n map: rawLocaleMap,\n defaultCode,\n }\n}\n\nexport function buildLocale(inputSingular: LocaleSingularArg, available: LocaleInputMap) {\n if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) {\n return parseLocale(\n inputSingular.code,\n [inputSingular.code],\n inputSingular,\n )\n }\n return queryLocale(inputSingular, available)\n}\n\nfunction queryLocale(codeArg: LocaleCodeArg, available: LocaleInputMap): Locale {\n let codes = [].concat(codeArg || []) // will convert to array\n let raw = queryRawLocale(codes, available) || RAW_EN_LOCALE\n\n return parseLocale(codeArg, codes, raw)\n}\n\nfunction queryRawLocale(codes: string[], available: LocaleInputMap): LocaleInput {\n for (let i = 0; i < codes.length; i += 1) {\n let parts = codes[i].toLocaleLowerCase().split('-')\n\n for (let j = parts.length; j > 0; j -= 1) {\n let simpleId = parts.slice(0, j).join('-')\n\n if (available[simpleId]) {\n return available[simpleId]\n }\n }\n }\n return null\n}\n\nfunction parseLocale(codeArg: LocaleCodeArg, codes: string[], raw: LocaleInput): Locale {\n let merged = mergeProps([MINIMAL_RAW_EN_LOCALE, raw], ['buttonText'])\n\n delete merged.code // don't want this part of the options\n let { week } = merged\n delete merged.week\n\n return {\n codeArg,\n codes,\n week,\n simpleNumberFormat: new Intl.NumberFormat(codeArg),\n options: merged,\n }\n}\n","import { guid } from './util/misc.js'\nimport { PluginDefInput, PluginDef, PluginHooks } from './plugin-system-struct.js'\nimport { isArraysEqual } from './util/array.js'\n\n// TODO: easier way to add new hooks? need to update a million things\n\nexport function createPlugin(input: PluginDefInput): PluginDef {\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}\n\nfunction buildPluginHooks(pluginDefs: PluginDef[], globalDefs: PluginDef[]): PluginHooks {\n let currentPluginIds: { [pluginName: string]: string } = {}\n let hooks: PluginHooks = {\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\n function addDefs(defs: PluginDef[]) {\n for (let def of defs) {\n const pluginName = def.name\n const currentId = currentPluginIds[pluginName]\n\n if (currentId === undefined) {\n currentPluginIds[pluginName] = def.id\n addDefs(def.deps)\n hooks = combineHooks(hooks, def)\n } else if (currentId !== def.id) {\n // different ID than the one already added\n console.warn(`Duplicate plugin '${pluginName}'`)\n }\n }\n }\n\n if (pluginDefs) {\n addDefs(pluginDefs)\n }\n\n addDefs(globalDefs)\n\n return hooks\n}\n\nexport function buildBuildPluginHooks() { // memoizes\n let currentOverrideDefs: PluginDef[] = []\n let currentGlobalDefs: PluginDef[] = []\n let currentHooks: PluginHooks\n\n return (overrideDefs: PluginDef[], globalDefs: PluginDef[]) => {\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}\n\nfunction combineHooks(hooks0: PluginHooks, hooks1: PluginHooks): PluginHooks {\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: { ...hooks0.eventRefiners, ...hooks1.eventRefiners },\n eventDefMemberAdders: hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders),\n eventSourceRefiners: { ...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: { ...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: { ...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, // put earlier plugins FIRST\n elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl, // \"\n optionChangeHandlers: { ...hooks0.optionChangeHandlers, ...hooks1.optionChangeHandlers },\n scrollGridImpl: hooks1.scrollGridImpl || hooks0.scrollGridImpl,\n listenerRefiners: { ...hooks0.listenerRefiners, ...hooks1.listenerRefiners },\n optionRefiners: { ...hooks0.optionRefiners, ...hooks1.optionRefiners },\n propSetHandlers: { ...hooks0.propSetHandlers, ...hooks1.propSetHandlers },\n }\n}\n\nfunction compareOptionalDates(\n date0: Date | undefined,\n date1: Date | undefined,\n): Date | undefined {\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","import { Theme } from './Theme.js'\n\nexport class StandardTheme extends Theme {\n}\n\nStandardTheme.prototype.classes = {\n root: 'fc-theme-standard', // TODO: compute this off of registered theme name\n tableCellShaded: 'fc-cell-shaded',\n buttonGroup: 'fc-button-group',\n button: 'fc-button fc-button-primary',\n buttonActive: 'fc-button-active',\n}\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}\n\nStandardTheme.prototype.iconOverrideOption = 'buttonIcons' // TODO: make TS-friendly\nStandardTheme.prototype.iconOverrideCustomButtonOption = 'icon'\nStandardTheme.prototype.iconOverridePrefix = 'fc-icon-'\n","import { ViewConfigHash, ViewComponentType } from './view-config.js'\nimport { ViewOptions } from '../options.js'\n\n/*\nRepresents information for an instantiatable View class along with settings\nthat are specific to that view. No other settings, like calendar-wide settings, are stored.\n*/\nexport interface ViewDef {\n type: string\n component: ViewComponentType\n overrides: ViewOptions\n defaults: ViewOptions\n}\n\nexport type ViewDefHash = { [viewType: string]: ViewDef }\n\nexport function compileViewDefs(defaultConfigs: ViewConfigHash, overrideConfigs: ViewConfigHash): ViewDefHash {\n let hash: ViewDefHash = {}\n let viewType: string\n\n for (viewType in defaultConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs)\n }\n\n for (viewType in overrideConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs)\n }\n\n return hash\n}\n\nfunction ensureViewDef(\n viewType: string,\n hash: ViewDefHash,\n defaultConfigs: ViewConfigHash,\n overrideConfigs: ViewConfigHash,\n): ViewDef | null {\n if (hash[viewType]) {\n return hash[viewType]\n }\n\n let viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs)\n\n if (viewDef) {\n hash[viewType] = viewDef\n }\n\n return viewDef\n}\n\nfunction buildViewDef(\n viewType: string,\n hash: ViewDefHash,\n defaultConfigs: ViewConfigHash,\n overrideConfigs: ViewConfigHash,\n): ViewDef | null {\n let defaultConfig = defaultConfigs[viewType]\n let overrideConfig = overrideConfigs[viewType]\n\n let queryProp = (name) => (\n (defaultConfig && defaultConfig[name] !== null) ? defaultConfig[name] :\n ((overrideConfig && overrideConfig[name] !== null) ? overrideConfig[name] : null)\n )\n\n let theComponent = queryProp('component') as ViewComponentType\n let superType = queryProp('superType') as string\n let superDef: ViewDef | null = null\n\n if (superType) {\n if (superType === viewType) {\n throw new Error('Can\\'t have a custom view type that references itself')\n }\n\n superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs)\n }\n\n if (!theComponent && superDef) {\n theComponent = superDef.component\n }\n\n if (!theComponent) {\n return null // don't throw a warning, might be settings for a single-unit view\n }\n\n return {\n type: viewType,\n component: theComponent,\n defaults: {\n ...(superDef ? superDef.defaults : {}),\n ...(defaultConfig ? defaultConfig.rawOptions : {}),\n },\n overrides: {\n ...(superDef ? superDef.overrides : {}),\n ...(overrideConfig ? overrideConfig.rawOptions : {}),\n },\n }\n}\n","import { ViewProps } from '../View.js'\nimport { mapHash } from '../util/object.js'\nimport { ComponentType, Component, createElement } from '../preact.js'\nimport { buildViewClassNames } from '../common/ViewContainer.js'\nimport { MountArg } from '../common/render-hook.js'\nimport { ViewContext, ViewContextType } from '../ViewContext.js'\nimport { ViewOptions } from '../options.js'\nimport { Duration } from '../datelib/duration.js'\nimport { ContentContainer } from '../content-inject/ContentContainer.js'\n\n/*\nA view-config represents information for either:\nA) creating a new instantiatable view class. in which case, supplied a class/type in addition to options, OR\nB) options to customize an existing view, in which case only provides options.\n*/\n\nexport type ViewComponent = Component<ViewProps> // an instance\nexport type ViewComponentType = ComponentType<ViewProps>\n\nexport type ViewConfigInput = ViewComponentType | ViewOptions\nexport type ViewConfigInputHash = { [viewType: string]: ViewConfigInput }\n\nexport interface ViewConfig {\n superType: string\n component: ViewComponentType | null\n rawOptions: ViewOptions\n}\n\nexport type ViewConfigHash = { [viewType: string]: ViewConfig }\n\nexport function parseViewConfigs(inputs: ViewConfigInputHash): ViewConfigHash {\n return mapHash(inputs, parseViewConfig)\n}\n\nfunction parseViewConfig(input: ViewConfigInput): ViewConfig {\n let rawOptions: ViewOptions = typeof input === 'function' ?\n { component: input } :\n input\n let { component } = rawOptions\n\n if (rawOptions.content) {\n component = createViewHookComponent(rawOptions)\n // TODO: remove content/classNames/didMount/etc from options?\n }\n\n return {\n superType: rawOptions.type as any,\n component: component as any,\n rawOptions, // includes type and component too :(\n }\n}\n\nexport interface SpecificViewContentArg extends ViewProps {\n nextDayThreshold: Duration\n}\n\nexport type SpecificViewMountArg = MountArg<SpecificViewContentArg>\n\nfunction createViewHookComponent(options: ViewOptions) {\n return (viewProps: ViewProps) => (\n <ViewContextType.Consumer>\n {(context: ViewContext) => (\n <ContentContainer\n elTag=\"div\"\n elClasses={buildViewClassNames(context.viewSpec)}\n renderProps={{\n ...viewProps,\n nextDayThreshold: context.options.nextDayThreshold,\n }}\n generatorName={undefined}\n generator={options.content as any}\n classNameGenerator={options.classNames as any}\n didMount={options.didMount as any}\n willUnmount={options.willUnmount as any}\n />\n )}\n </ViewContextType.Consumer>\n )\n}\n","import { ViewDef, compileViewDefs } from './view-def.js'\nimport { Duration, createDuration, greatestDurationDenominator, DurationInput } from '../datelib/duration.js'\nimport { mapHash } from '../util/object.js'\nimport { ViewOptions, CalendarOptions, BASE_OPTION_DEFAULTS } from '../options.js'\nimport { ViewConfigInputHash, parseViewConfigs, ViewConfigHash, ViewComponentType } from './view-config.js'\n\n/*\nRepresents everything needed to instantiate a new view instance,\nincluding options that have been compiled from view-specific and calendar-wide options,\nas well as duration information.\n\nOverall flow:\nViewConfig -> ViewDef -> ViewSpec\n*/\nexport interface ViewSpec {\n type: string\n component: ViewComponentType\n duration: Duration\n durationUnit: string\n singleUnit: string\n optionDefaults: ViewOptions\n optionOverrides: ViewOptions\n buttonTextOverride: string\n buttonTextDefault: string\n buttonTitleOverride: string | ((...args: any[]) => string)\n buttonTitleDefault: string | ((...args: any[]) => string)\n}\n\nexport type ViewSpecHash = { [viewType: string]: ViewSpec }\n\nexport function buildViewSpecs(\n defaultInputs: ViewConfigInputHash,\n optionOverrides: CalendarOptions,\n dynamicOptionOverrides: CalendarOptions,\n localeDefaults,\n): ViewSpecHash {\n let defaultConfigs = parseViewConfigs(defaultInputs)\n let overrideConfigs = parseViewConfigs(optionOverrides.views)\n let viewDefs = compileViewDefs(defaultConfigs, overrideConfigs)\n\n return mapHash(viewDefs, (viewDef) => buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults))\n}\n\nfunction buildViewSpec(\n viewDef: ViewDef,\n overrideConfigs: ViewConfigHash,\n optionOverrides: CalendarOptions,\n dynamicOptionOverrides: CalendarOptions,\n localeDefaults,\n): ViewSpec {\n let durationInput =\n viewDef.overrides.duration ||\n viewDef.defaults.duration ||\n dynamicOptionOverrides.duration ||\n optionOverrides.duration\n\n let duration = null\n let durationUnit = ''\n let singleUnit = ''\n let singleUnitOverrides: ViewOptions = {}\n\n if (durationInput) {\n duration = createDurationCached(durationInput)\n\n if (duration) { // valid?\n let denom = greatestDurationDenominator(duration)\n durationUnit = denom.unit\n\n if (denom.value === 1) {\n singleUnit = durationUnit\n singleUnitOverrides = overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].rawOptions : {}\n }\n }\n }\n\n let queryButtonText = (optionsSubset) => {\n let buttonTextMap = optionsSubset.buttonText || {}\n let buttonTextKey = viewDef.defaults.buttonTextKey as string\n\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\n let queryButtonTitle = (optionsSubset) => { // TODO: more DRY with queryButtonText\n let buttonHints = optionsSubset.buttonHints || {}\n let buttonKey = viewDef.defaults.buttonTextKey as string // use same key as text\n\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\n return {\n type: viewDef.type,\n component: viewDef.component,\n duration,\n durationUnit,\n singleUnit,\n optionDefaults: viewDef.defaults,\n optionOverrides: { ...singleUnitOverrides, ...viewDef.overrides },\n\n buttonTextOverride:\n queryButtonText(dynamicOptionOverrides) ||\n queryButtonText(optionOverrides) || // constructor-specified buttonText lookup hash takes precedence\n viewDef.overrides.buttonText, // `buttonText` for view-specific options is a string\n buttonTextDefault:\n queryButtonText(localeDefaults) ||\n viewDef.defaults.buttonText ||\n queryButtonText(BASE_OPTION_DEFAULTS) ||\n viewDef.type, // fall back to given view name\n\n // not DRY\n buttonTitleOverride:\n queryButtonTitle(dynamicOptionOverrides) ||\n queryButtonTitle(optionOverrides) ||\n viewDef.overrides.buttonHint,\n buttonTitleDefault:\n queryButtonTitle(localeDefaults) ||\n viewDef.defaults.buttonHint ||\n queryButtonTitle(BASE_OPTION_DEFAULTS),\n // will eventually fall back to buttonText\n }\n}\n\n// hack to get memoization working\n\nlet durationInputMap: { [json: string]: Duration } = {}\n\nfunction createDurationCached(durationInput: DurationInput) {\n let json = JSON.stringify(durationInput)\n let res = durationInputMap[json]\n\n if (res === undefined) {\n res = createDuration(durationInput)\n durationInputMap[json] = res\n }\n\n return res\n}\n","import { Action } from './Action.js'\n\nexport function reduceViewType(viewType: string, action: Action): string {\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n viewType = action.viewType\n }\n\n return viewType\n}\n","import { Action } from './Action.js'\n\nexport function reduceDynamicOptionOverrides(dynamicOptionOverrides, action: Action) {\n switch (action.type) {\n case 'SET_OPTION':\n return { ...dynamicOptionOverrides, [action.optionName]: action.rawOptionValue }\n default:\n return dynamicOptionOverrides\n }\n}\n","import { DateProfile, DateProfileGenerator } from '../DateProfileGenerator.js'\nimport { Action } from './Action.js'\nimport { DateMarker } from '../datelib/marker.js'\n\nexport function reduceDateProfile(\n currentDateProfile: DateProfile | null,\n action: Action,\n currentDate: DateMarker,\n dateProfileGenerator: DateProfileGenerator,\n): DateProfile {\n let dp: DateProfile\n\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n return dateProfileGenerator.build(action.dateMarker || currentDate)\n\n case 'CHANGE_DATE':\n return dateProfileGenerator.build(action.dateMarker)\n\n case 'PREV':\n dp = dateProfileGenerator.buildPrev(currentDateProfile, currentDate)\n if (dp.isValid) {\n return dp\n }\n break\n\n case 'NEXT':\n dp = dateProfileGenerator.buildNext(currentDateProfile, currentDate)\n if (dp.isValid) {\n return dp\n }\n break\n }\n\n return currentDateProfile\n}\n","import { EventSource, EventSourceHash } from '../structs/event-source.js'\nimport { parseEventSource, buildEventSourceRefiners } from '../structs/event-source-parse.js'\nimport { arrayToHash, filterHash } from '../util/object.js'\nimport { DateRange } from '../datelib/date-range.js'\nimport { DateProfile } from '../DateProfileGenerator.js'\nimport { Action } from './Action.js'\nimport { guid } from '../util/misc.js'\nimport { CalendarContext } from '../CalendarContext.js'\nimport { CalendarOptions } from '../options.js'\n\nexport function initEventSources(calendarOptions, dateProfile: DateProfile, context: CalendarContext) {\n let activeRange = dateProfile ? dateProfile.activeRange : null\n\n return addSources(\n {},\n parseInitialSources(calendarOptions, context),\n activeRange,\n context,\n )\n}\n\nexport function reduceEventSources(\n eventSources: EventSourceHash,\n action: Action,\n dateProfile: DateProfile,\n context: CalendarContext,\n): EventSourceHash {\n let activeRange = dateProfile ? dateProfile.activeRange : null // need this check?\n\n switch (action.type) {\n case 'ADD_EVENT_SOURCES': // already parsed\n return addSources(eventSources, action.sources, activeRange, context)\n\n case 'REMOVE_EVENT_SOURCE':\n return removeSource(eventSources, action.sourceId)\n\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\n case 'FETCH_EVENT_SOURCES':\n return fetchSourcesByIds(\n eventSources,\n (action as any).sourceIds ? // why no type?\n arrayToHash((action as any).sourceIds) :\n excludeStaticSources(eventSources, context),\n activeRange,\n action.isRefetch || false,\n context,\n )\n\n case 'RECEIVE_EVENTS':\n case 'RECEIVE_EVENT_ERROR':\n return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange)\n\n case 'REMOVE_ALL_EVENT_SOURCES':\n return {}\n\n default:\n return eventSources\n }\n}\n\nexport function reduceEventSourcesNewTimeZone(eventSources: EventSourceHash, dateProfile: DateProfile, context: CalendarContext) {\n let activeRange = dateProfile ? dateProfile.activeRange : null // need this check?\n\n return fetchSourcesByIds(\n eventSources,\n excludeStaticSources(eventSources, context),\n activeRange,\n true,\n context,\n )\n}\n\nexport function computeEventSourcesLoading(eventSources: EventSourceHash): boolean {\n for (let sourceId in eventSources) {\n if (eventSources[sourceId].isFetching) {\n return true\n }\n }\n\n return false\n}\n\nfunction addSources(\n eventSourceHash: EventSourceHash,\n sources: EventSource<any>[],\n fetchRange: DateRange | null,\n context: CalendarContext,\n): EventSourceHash {\n let hash: EventSourceHash = {}\n\n for (let source of sources) {\n hash[source.sourceId] = source\n }\n\n if (fetchRange) {\n hash = fetchDirtySources(hash, fetchRange, context)\n }\n\n return { ...eventSourceHash, ...hash }\n}\n\nfunction removeSource(eventSourceHash: EventSourceHash, sourceId: string): EventSourceHash {\n return filterHash(eventSourceHash, (eventSource: EventSource<any>) => eventSource.sourceId !== sourceId)\n}\n\nfunction fetchDirtySources(sourceHash: EventSourceHash, fetchRange: DateRange, context: CalendarContext): EventSourceHash {\n return fetchSourcesByIds(\n sourceHash,\n filterHash(sourceHash, (eventSource) => isSourceDirty(eventSource, fetchRange, context)),\n fetchRange,\n false,\n context,\n )\n}\n\nfunction isSourceDirty(eventSource: EventSource<any>, fetchRange: DateRange, context: CalendarContext) {\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}\n\nfunction fetchSourcesByIds(\n prevSources: EventSourceHash,\n sourceIdHash: { [sourceId: string]: any },\n fetchRange: DateRange,\n isRefetch: boolean,\n context: CalendarContext,\n): EventSourceHash {\n let nextSources: EventSourceHash = {}\n\n for (let sourceId in prevSources) {\n let source = prevSources[sourceId]\n\n if (sourceIdHash[sourceId]) {\n nextSources[sourceId] = fetchSource(source, fetchRange, isRefetch, context)\n } else {\n nextSources[sourceId] = source\n }\n }\n\n return nextSources\n}\n\nfunction fetchSource(eventSource: EventSource<any>, fetchRange: DateRange, isRefetch: boolean, context: CalendarContext) {\n let { options, calendarApi } = context\n let sourceDef = context.pluginHooks.eventSourceDefs[eventSource.sourceDefId]\n let fetchId = guid()\n\n sourceDef.fetch(\n {\n eventSource,\n range: fetchRange,\n isRefetch,\n context,\n },\n (res) => {\n let { rawEvents } = res\n\n if (options.eventSourceSuccess) {\n rawEvents = options.eventSourceSuccess.call(calendarApi, rawEvents, res.response) || rawEvents\n }\n\n if (eventSource.success) {\n rawEvents = eventSource.success.call(calendarApi, rawEvents, res.response) || rawEvents\n }\n\n context.dispatch({\n type: 'RECEIVE_EVENTS',\n sourceId: eventSource.sourceId,\n fetchId,\n fetchRange,\n rawEvents,\n })\n },\n (error) => {\n let errorHandled = false\n\n if (options.eventSourceFailure) {\n options.eventSourceFailure.call(calendarApi, error)\n errorHandled = true\n }\n\n if (eventSource.failure) {\n eventSource.failure(error)\n errorHandled = true\n }\n\n if (!errorHandled) {\n console.warn(error.message, error)\n }\n\n context.dispatch({\n type: 'RECEIVE_EVENT_ERROR',\n sourceId: eventSource.sourceId,\n fetchId,\n fetchRange,\n error,\n })\n },\n )\n\n return {\n ...eventSource,\n isFetching: true,\n latestFetchId: fetchId,\n }\n}\n\nfunction receiveResponse(sourceHash: EventSourceHash, sourceId: string, fetchId: string, fetchRange: DateRange) {\n let eventSource: EventSource<any> = sourceHash[sourceId]\n\n if (\n eventSource && // not already removed\n fetchId === eventSource.latestFetchId\n ) {\n return {\n ...sourceHash,\n [sourceId]: {\n ...eventSource,\n isFetching: false,\n fetchRange, // also serves as a marker that at least one fetch has completed\n },\n }\n }\n\n return sourceHash\n}\n\nfunction excludeStaticSources(eventSources: EventSourceHash, context: CalendarContext): EventSourceHash {\n return filterHash(eventSources, (eventSource) => doesSourceNeedRange(eventSource, context))\n}\n\nfunction parseInitialSources(rawOptions: CalendarOptions, context: CalendarContext) {\n let refiners = buildEventSourceRefiners(context)\n let rawSources = [].concat(rawOptions.eventSources || [])\n let sources = [] // parsed\n\n if (rawOptions.initialEvents) {\n rawSources.unshift(rawOptions.initialEvents)\n }\n\n if (rawOptions.events) {\n rawSources.unshift(rawOptions.events)\n }\n\n for (let rawSource of rawSources) {\n let source = parseEventSource(rawSource, context, refiners)\n if (source) {\n sources.push(source)\n }\n }\n\n return sources\n}\n\nfunction doesSourceNeedRange(eventSource: EventSource<any>, context: CalendarContext) {\n let defs = context.pluginHooks.eventSourceDefs\n\n return !defs[eventSource.sourceDefId].ignoreRange\n}\n","import { DateSpan } from '../structs/date-span.js'\nimport { Action } from './Action.js'\n\nexport function reduceDateSelection(currentSelection: DateSpan | null, action: Action) {\n switch (action.type) {\n case 'UNSELECT_DATES':\n return null\n\n case 'SELECT_DATES':\n return action.selection\n\n default:\n return currentSelection\n }\n}\n","import { Action } from './Action.js'\n\nexport function reduceSelectedEvent(currentInstanceId: string, action: Action): string {\n switch (action.type) {\n case 'UNSELECT_EVENT':\n return ''\n\n case 'SELECT_EVENT':\n return action.eventInstanceId\n\n default:\n return currentInstanceId\n }\n}\n","import { Action } from './Action.js'\nimport { EventInteractionState } from '../interactions/event-interaction-state.js'\n\nexport function reduceEventDrag(currentDrag: EventInteractionState | null, action: Action): EventInteractionState | null {\n let newDrag: EventInteractionState\n\n switch (action.type) {\n case 'UNSET_EVENT_DRAG':\n return null\n\n case 'SET_EVENT_DRAG':\n newDrag = action.state\n\n return {\n affectedEvents: newDrag.affectedEvents,\n mutatedEvents: newDrag.mutatedEvents,\n isEvent: newDrag.isEvent,\n }\n\n default:\n return currentDrag\n }\n}\n","import { EventInteractionState } from '../interactions/event-interaction-state.js'\nimport { Action } from './Action.js'\n\nexport function reduceEventResize(currentResize: EventInteractionState | null, action: Action): EventInteractionState | null {\n let newResize: EventInteractionState\n\n switch (action.type) {\n case 'UNSET_EVENT_RESIZE':\n return null\n\n case 'SET_EVENT_RESIZE':\n newResize = action.state\n\n return {\n affectedEvents: newResize.affectedEvents,\n mutatedEvents: newResize.mutatedEvents,\n isEvent: newResize.isEvent,\n }\n\n default:\n return currentResize\n }\n}\n","import { ViewSpec, ViewSpecHash } from './structs/view-spec.js'\nimport { Theme } from './theme/Theme.js'\nimport { CalendarImpl } from './api/CalendarImpl.js'\nimport { CalendarOptionsRefined, CalendarOptions } from './options.js'\nimport { ToolbarInput, ToolbarModel, ToolbarWidget, CustomButtonInput } from './toolbar-struct.js'\nimport { formatWithOrdinals } from './util/misc.js'\n\nexport function parseToolbars(\n calendarOptions: CalendarOptionsRefined,\n calendarOptionOverrides: CalendarOptions,\n theme: Theme,\n viewSpecs: ViewSpecHash,\n calendarApi: CalendarImpl,\n) {\n let header = calendarOptions.headerToolbar ? parseToolbar(\n calendarOptions.headerToolbar,\n calendarOptions,\n calendarOptionOverrides,\n theme,\n viewSpecs,\n calendarApi,\n ) : null\n let footer = calendarOptions.footerToolbar ? parseToolbar(\n calendarOptions.footerToolbar,\n calendarOptions,\n calendarOptionOverrides,\n theme,\n viewSpecs,\n calendarApi,\n ) : null\n\n return { header, footer }\n}\n\nfunction parseToolbar(\n sectionStrHash: ToolbarInput,\n calendarOptions: CalendarOptionsRefined,\n calendarOptionOverrides: CalendarOptions,\n theme: Theme,\n viewSpecs: ViewSpecHash,\n calendarApi: CalendarImpl,\n) : ToolbarModel {\n let sectionWidgets: { [sectionName: string]: ToolbarWidget[][] } = {}\n let viewsWithButtons: string[] = []\n let hasTitle = false\n\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\n return { sectionWidgets, viewsWithButtons, hasTitle }\n}\n\n/*\nBAD: querying icons and text here. should be done at render time\n*/\nfunction parseSection(\n sectionStr: string,\n calendarOptions: CalendarOptionsRefined, // defaults+overrides, then refined\n calendarOptionOverrides: CalendarOptions, // overrides only!, unrefined :(\n theme: Theme,\n viewSpecs: ViewSpecHash,\n calendarApi: CalendarImpl,\n): { widgets: ToolbarWidget[][], viewsWithButtons: string[], hasTitle: boolean } {\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: string[] = []\n let hasTitle = false\n\n let widgets = sectionSubstrs.map(\n (buttonGroupStr): ToolbarWidget[] => (\n buttonGroupStr.split(',').map((buttonName): ToolbarWidget => {\n if (buttonName === 'title') {\n hasTitle = true\n return { buttonName }\n }\n\n let customButtonProps: CustomButtonInput\n let viewSpec: ViewSpec\n let buttonClick\n let buttonIcon // only one of these will be set\n let buttonText // \"\n let buttonHint: string | ((navUnit: string) => string)\n // ^ for the title=\"\" attribute, for accessibility\n\n if ((customButtonProps = calendarCustomButtons[buttonName])) {\n buttonClick = (ev: UIEvent) => {\n if (customButtonProps.click) {\n customButtonProps.click.call(ev.target, ev, ev.target) // TODO: use Calendar this context?\n }\n };\n\n (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = customButtonProps.text)\n\n buttonHint = customButtonProps.hint || customButtonProps.text\n } else if ((viewSpec = viewSpecs[buttonName])) {\n viewsWithButtons.push(buttonName)\n\n buttonClick = () => {\n calendarApi.changeView(buttonName)\n };\n\n (buttonText = viewSpec.buttonTextOverride) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = viewSpec.buttonTextDefault)\n\n let textFallback =\n viewSpec.buttonTextOverride ||\n viewSpec.buttonTextDefault\n\n buttonHint = formatWithOrdinals(\n viewSpec.buttonTitleOverride ||\n viewSpec.buttonTitleDefault ||\n calendarOptions.viewHint,\n [textFallback, buttonName], // view-name = buttonName\n textFallback,\n )\n } else if (calendarApi[buttonName]) { // a calendarApi method\n buttonClick = () => {\n calendarApi[buttonName]()\n };\n\n (buttonText = calendarButtonTextOverrides[buttonName]) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = calendarButtonText[buttonName]) // everything else is considered default\n\n if (buttonName === 'prevYear' || buttonName === 'nextYear') {\n let prevOrNext = buttonName === 'prevYear' ? 'prev' : 'next'\n buttonHint = formatWithOrdinals(\n calendarButtonHintOverrides[prevOrNext] ||\n calendarButtonHints[prevOrNext],\n [\n calendarButtonText.year || 'year', // localize unit\n 'year',\n ],\n calendarButtonText[buttonName],\n )\n } else {\n buttonHint = (navUnit: string) => formatWithOrdinals(\n calendarButtonHintOverrides[buttonName] ||\n calendarButtonHints[buttonName],\n [\n calendarButtonText[navUnit] || navUnit, // localized unit\n navUnit,\n ],\n calendarButtonText[buttonName],\n )\n }\n }\n\n return { buttonName, buttonClick, buttonIcon, buttonText, buttonHint }\n })\n ),\n )\n\n return { widgets, viewsWithButtons, hasTitle }\n}\n","import { DateEnv } from '../datelib/env.js'\nimport { CalendarData } from '../reducers/data-types.js'\nimport { CalendarApi } from './CalendarApi.js'\nimport { ViewApi } from './ViewApi.js'\n\n// always represents the current view. otherwise, it'd need to change value every time date changes\nexport class ViewImpl implements ViewApi {\n constructor(\n public type: string,\n private getCurrentData: () => CalendarData,\n private dateEnv: DateEnv,\n ) {\n }\n\n get calendar(): CalendarApi {\n return this.getCurrentData().calendarApi\n }\n\n get title(): string {\n return this.getCurrentData().viewTitle\n }\n\n get activeStart(): Date {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start)\n }\n\n get activeEnd(): Date {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end)\n }\n\n get currentStart(): Date {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start)\n }\n\n get currentEnd(): Date {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end)\n }\n\n getOption(name: string): any {\n return this.getCurrentData().options[name] // are the view-specific options\n }\n}\n","import { createPlugin } from '../plugin-system.js'\nimport { EventSourceDef } from '../structs/event-source-def.js'\nimport { EventInput } from '../structs/event-parse.js'\n\nlet eventSourceDef: EventSourceDef<EventInput[]> = {\n ignoreRange: true,\n\n parseMeta(refined) {\n if (Array.isArray(refined.events)) {\n return refined.events\n }\n return null\n },\n\n fetch(arg, successCallback) {\n successCallback({\n rawEvents: arg.eventSource.meta,\n })\n },\n}\n\nexport const arrayEventSourcePlugin = createPlugin({\n name: 'array-event-source',\n eventSourceDefs: [eventSourceDef],\n})\n","import { EventSourceDef } from '../structs/event-source-def.js'\nimport { EventInput } from '../structs/event-parse.js'\nimport { createPlugin } from '../plugin-system.js'\nimport { buildRangeApiWithTimeZone } from '../structs/date-span.js'\nimport { unpromisify } from '../util/promise.js'\n\nexport type EventSourceFuncArg = {\n start: Date\n end: Date\n startStr: string\n endStr: string\n timeZone: string\n}\n\nexport type EventSourceFunc =\n ((\n arg: EventSourceFuncArg,\n successCallback: (eventInputs: EventInput[]) => void,\n failureCallback: (error: Error) => void,\n ) => void) |\n ((arg: EventSourceFuncArg) => Promise<EventInput[]>)\n\nlet eventSourceDef: EventSourceDef<EventSourceFunc> = {\n\n parseMeta(refined) {\n if (typeof refined.events === 'function') {\n return refined.events\n }\n return null\n },\n\n fetch(arg, successCallback, errorCallback) {\n const { dateEnv } = arg.context\n const func = arg.eventSource.meta\n\n unpromisify(\n func.bind(null, buildRangeApiWithTimeZone(arg.range, dateEnv)),\n (rawEvents) => successCallback({ rawEvents }),\n errorCallback,\n )\n },\n\n}\n\nexport const funcEventSourcePlugin = createPlugin({\n name: 'func-event-source',\n eventSourceDefs: [eventSourceDef],\n})\n","import { identity, Identity, Dictionary } from '../options.js'\n\nexport const JSON_FEED_EVENT_SOURCE_REFINERS = {\n method: String,\n extraParams: identity as Identity<Dictionary | (() => Dictionary)>,\n startParam: String,\n endParam: String,\n timeZoneParam: String,\n}\n","import { requestJson } from '../util/requestJson.js'\nimport { CalendarContext } from '../CalendarContext.js'\nimport { EventSourceDef } from '../structs/event-source-def.js'\nimport { DateRange } from '../datelib/date-range.js'\nimport { createPlugin } from '../plugin-system.js'\nimport { JSON_FEED_EVENT_SOURCE_REFINERS } from './json-feed-event-source-refiners.js'\nimport { EventInput } from '../api/structs.js'\n\ninterface JsonFeedMeta {\n url: string\n format: 'json' // for EventSourceImpl\n method: string\n extraParams?: any\n startParam?: string\n endParam?: string\n timeZoneParam?: string\n}\n\nlet eventSourceDef: EventSourceDef<JsonFeedMeta> = {\n\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\n fetch(arg, successCallback, errorCallback) {\n const { meta } = arg.eventSource\n const requestParams = buildRequestParams(meta, arg.range, arg.context)\n\n requestJson(\n meta.method,\n meta.url,\n requestParams,\n ).then(\n ([rawEvents, response]: [EventInput[], Response]) => {\n successCallback({ rawEvents, response })\n },\n errorCallback,\n )\n },\n\n}\n\nexport const jsonFeedEventSourcePlugin = createPlugin({\n name: 'json-event-source',\n eventSourceRefiners: JSON_FEED_EVENT_SOURCE_REFINERS,\n eventSourceDefs: [eventSourceDef],\n})\n\nfunction buildRequestParams(meta: JsonFeedMeta, range: DateRange, context: CalendarContext) {\n let { dateEnv, options } = context\n let startParam\n let endParam\n let timeZoneParam\n let customRequestParams\n let params = {}\n\n startParam = meta.startParam\n if (startParam == null) {\n startParam = options.startParam\n }\n\n endParam = meta.endParam\n if (endParam == null) {\n endParam = options.endParam\n }\n\n timeZoneParam = meta.timeZoneParam\n if (timeZoneParam == null) {\n timeZoneParam = options.timeZoneParam\n }\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 } else {\n // probably supplied as a straight key/value object\n customRequestParams = meta.extraParams || {}\n }\n\n Object.assign(params, customRequestParams)\n\n params[startParam] = dateEnv.formatIso(range.start)\n params[endParam] = dateEnv.formatIso(range.end)\n\n if (dateEnv.timeZone !== 'local') {\n params[timeZoneParam] = dateEnv.timeZone\n }\n\n return params\n}\n","import { createDuration } from '../datelib/duration.js'\nimport { DateInput } from '../datelib/env.js'\nimport { identity, Identity } from '../options.js'\n\nexport const SIMPLE_RECURRING_REFINERS = {\n daysOfWeek: identity as Identity<number[]>,\n startTime: createDuration,\n endTime: createDuration,\n duration: createDuration,\n startRecur: identity as Identity<DateInput>,\n endRecur: identity as Identity<DateInput>,\n}\n","import { startOfDay, addDays, DateMarker } from '../datelib/marker.js'\nimport { Duration, subtractDurations } from '../datelib/duration.js'\nimport { arrayToHash } from '../util/object.js'\nimport { RecurringType } from './recurring-event.js'\nimport { EventRefined } from './event-parse.js'\nimport { DateRange, intersectRanges } from '../datelib/date-range.js'\nimport { DateEnv } from '../datelib/env.js'\nimport { createPlugin } from '../plugin-system.js'\nimport { SIMPLE_RECURRING_REFINERS } from './recurring-event-simple-refiners.js'\nimport './recurring-event-simple-declare.js'\n\n/*\nAn implementation of recurring events that only supports every-day or weekly recurrences.\n*/\n\ninterface SimpleRecurringData {\n daysOfWeek: number[] | null\n startTime: Duration | null\n endTime: Duration | null\n startRecur: DateMarker | null\n endRecur: DateMarker | null\n}\n\nlet recurring: RecurringType<SimpleRecurringData> = {\n\n parse(refined: EventRefined, dateEnv: DateEnv) {\n if (refined.daysOfWeek || refined.startTime || refined.endTime || refined.startRecur || refined.endRecur) {\n let recurringData: SimpleRecurringData = {\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\n let duration: Duration\n\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\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\n return null\n },\n\n expand(typeData: SimpleRecurringData, framingRange: DateRange, dateEnv: DateEnv): DateMarker[] {\n let clippedFramingRange = intersectRanges(\n framingRange,\n { start: typeData.startRecur, end: typeData.endRecur },\n )\n\n if (clippedFramingRange) {\n return expandRanges(\n typeData.daysOfWeek,\n typeData.startTime,\n clippedFramingRange,\n dateEnv,\n )\n }\n return []\n },\n\n}\n\nexport const simpleRecurringEventsPlugin = createPlugin({\n name: 'simple-recurring-event',\n recurringTypes: [recurring],\n eventRefiners: SIMPLE_RECURRING_REFINERS,\n})\n\nfunction expandRanges(\n daysOfWeek: number[] | null,\n startTime: Duration | null,\n framingRange: DateRange,\n dateEnv: DateEnv,\n): DateMarker[] {\n let dowHash: { [num: string]: true } | null = daysOfWeek ? arrayToHash(daysOfWeek) : null\n let dayMarker = startOfDay(framingRange.start)\n let endMarker = framingRange.end\n let instanceStarts: DateMarker[] = []\n\n while (dayMarker < endMarker) {\n let instanceStart\n\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 } else {\n instanceStart = dayMarker\n }\n\n instanceStarts.push(instanceStart)\n }\n\n dayMarker = addDays(dayMarker, 1)\n }\n\n return instanceStarts\n}\n","import { createPlugin } from './plugin-system.js'\nimport { hashValuesToArray } from './util/object.js'\nimport { EventSource } from './structs/event-source.js'\nimport { CalendarContext } from './CalendarContext.js'\n\nexport const changeHandlerPlugin = createPlugin({\n name: 'change-handler',\n optionChangeHandlers: {\n events(events, context) {\n handleEventSources([events], context)\n },\n eventSources: handleEventSources,\n },\n})\n\n/*\nBUG: if `event` was supplied, all previously-given `eventSources` will be wiped out\n*/\nfunction handleEventSources(inputs, context: CalendarContext) {\n let unfoundSources: EventSource<any>[] = hashValuesToArray(context.getCurrentData().eventSources)\n let newInputs = []\n\n for (let input of inputs) {\n let inputFound = false\n\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\n if (!inputFound) {\n newInputs.push(input)\n }\n }\n\n for (let unfoundSource of unfoundSources) {\n context.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: unfoundSource.sourceId,\n })\n }\n\n for (let newInput of newInputs) {\n context.calendarApi.addEventSource(newInput)\n }\n}\n","import { DateProfile } from './DateProfileGenerator.js'\nimport { CalendarData } from './reducers/data-types.js'\nimport { RangeApiWithTimeZone, buildRangeApiWithTimeZone } from './structs/date-span.js'\nimport { ViewApi } from './api/ViewApi.js'\n\nexport type DatesSetArg = RangeApiWithTimeZone & { view: ViewApi }\n\nexport function handleDateProfile(dateProfile: DateProfile, context: CalendarData) {\n context.emitter.trigger('datesSet', {\n ...buildRangeApiWithTimeZone(dateProfile.activeRange, context.dateEnv),\n view: context.viewApi,\n })\n}\n","import { EventStore } from './structs/event-store.js'\nimport { CalendarData } from './reducers/data-types.js'\nimport { EventImpl, buildEventApis } from './api/EventImpl.js'\nimport { Duration } from './datelib/duration.js'\nimport { ViewApi } from './index.js'\n\nexport interface EventAddArg {\n event: EventImpl\n relatedEvents: EventImpl[]\n revert: () => void\n}\n\nexport interface EventChangeArg {\n oldEvent: EventImpl\n event: EventImpl\n relatedEvents: EventImpl[]\n revert: () => void\n}\n\nexport interface EventDropArg extends EventChangeArg { // not best place. deals w/ UI\n el: HTMLElement\n delta: Duration\n jsEvent: MouseEvent\n view: ViewApi\n // and other \"transformed\" things\n}\n\nexport interface EventRemoveArg {\n event: EventImpl\n relatedEvents: EventImpl[]\n revert: () => void\n}\n\nexport function handleEventStore(eventStore: EventStore, context: CalendarData) {\n let { emitter } = context\n\n if (emitter.hasHandlers('eventsSet')) {\n emitter.trigger('eventsSet', buildEventApis(eventStore, context))\n }\n}\n","import { PluginDef } from './plugin-system-struct.js'\nimport { createPlugin } from './plugin-system.js'\nimport { arrayEventSourcePlugin } from './event-sources/array-event-source.js'\nimport { funcEventSourcePlugin } from './event-sources/func-event-source.js'\nimport { jsonFeedEventSourcePlugin } from './event-sources/json-feed-event-source.js'\nimport { simpleRecurringEventsPlugin } from './structs/recurring-event-simple.js'\nimport { changeHandlerPlugin } from './option-change-handlers.js'\nimport { handleDateProfile } from './dates-set.js'\nimport { handleEventStore } from './event-crud.js'\nimport { computeEventSourcesLoading } from './reducers/eventSources.js'\nimport { CalendarDataManagerState } from './reducers/data-types.js'\n\n/*\nthis array is exposed on the root namespace so that UMD plugins can add to it.\nsee the rollup-bundles script.\n*/\nexport const globalPlugins: PluginDef[] = [\n arrayEventSourcePlugin,\n funcEventSourcePlugin,\n jsonFeedEventSourcePlugin,\n simpleRecurringEventsPlugin,\n changeHandlerPlugin,\n createPlugin({\n name: 'misc',\n isLoadingFuncs: [\n (state: CalendarDataManagerState) => computeEventSourcesLoading(state.eventSources),\n ],\n propSetHandlers: {\n dateProfile: handleDateProfile,\n eventStore: handleEventStore,\n },\n }),\n]\n","import { DelayedRunner } from './DelayedRunner.js'\n\nexport class TaskRunner<Task> { // this class USES the DelayedRunner\n private queue: Task[] = []\n\n private delayedRunner: DelayedRunner // will most likely be used WITHOUT any delay\n\n constructor(\n private runTaskOption?: (task: Task) => void,\n private drainedOption?: (completedTasks: Task[]) => void,\n ) {\n this.delayedRunner = new DelayedRunner(this.drain.bind(this))\n }\n\n request(task: Task, delay?: number) {\n this.queue.push(task)\n this.delayedRunner.request(delay)\n }\n\n pause(scope?: string) {\n this.delayedRunner.pause(scope)\n }\n\n resume(scope?: string, force?: boolean) {\n this.delayedRunner.resume(scope, force)\n }\n\n drain() {\n let { queue } = this\n\n while (queue.length) {\n let completedTasks: Task[] = []\n let task: Task\n\n while ((task = queue.shift())) {\n this.runTask(task)\n completedTasks.push(task)\n }\n\n this.drained(completedTasks)\n } // keep going, in case new tasks were added in the drained handler\n }\n\n protected runTask(task: Task) { // subclasses can implement\n if (this.runTaskOption) {\n this.runTaskOption(task)\n }\n }\n\n protected drained(completedTasks: Task[]) { // subclasses can implement\n if (this.drainedOption) {\n this.drainedOption(completedTasks)\n }\n }\n}\n","import { DateProfile } from '../DateProfileGenerator.js'\nimport { diffWholeDays } from '../datelib/marker.js'\nimport { createFormatter, FormatterInput } from '../datelib/formatting.js'\nimport { DateRange } from '../datelib/date-range.js'\nimport { DateEnv } from '../datelib/env.js'\nimport { BaseOptions } from '../options.js'\n\n// Computes what the title at the top of the calendarApi should be for this view\nexport function buildTitle(dateProfile: DateProfile, viewOptions: BaseOptions, dateEnv: DateEnv) {\n let range: DateRange\n\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 } else { // for day units or smaller, use the actual day range\n range = dateProfile.activeRange\n }\n\n return dateEnv.formatRange(\n range.start,\n range.end,\n createFormatter(viewOptions.titleFormat || buildTitleFormat(dateProfile)),\n {\n isEndExclusive: dateProfile.isRangeAllDay,\n defaultSeparator: viewOptions.titleRangeSeparator,\n },\n )\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: DateProfile): FormatterInput {\n let { currentRangeUnit } = dateProfile\n\n if (currentRangeUnit === 'year') {\n return { year: 'numeric' }\n }\n\n if (currentRangeUnit === 'month') {\n return { year: 'numeric', month: 'long' } // like \"September 2014\"\n }\n\n let days = diffWholeDays(\n dateProfile.currentRange.start,\n dateProfile.currentRange.end,\n )\n\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\n // one day. longer, like \"September 9 2014\"\n return { year: 'numeric', month: 'long', day: 'numeric' }\n}\n","import { buildLocale, RawLocaleInfo, organizeRawLocales, LocaleSingularArg } from '../datelib/locale.js'\nimport { memoize, memoizeObjArg } from '../util/memoize.js'\nimport { Action } from './Action.js'\nimport { buildBuildPluginHooks } from '../plugin-system.js'\nimport { PluginHooks } from '../plugin-system-struct.js'\nimport { DateEnv } from '../datelib/env.js'\nimport { CalendarImpl } from '../api/CalendarImpl.js'\nimport { StandardTheme } from '../theme/StandardTheme.js'\nimport { EventSourceHash } from '../structs/event-source.js'\nimport { buildViewSpecs, ViewSpec } from '../structs/view-spec.js'\nimport { mapHash, isPropsEqual } from '../util/object.js'\nimport { DateProfileGenerator, DateProfileGeneratorProps } from '../DateProfileGenerator.js'\nimport { reduceViewType } from './view-type.js'\nimport { getInitialDate, reduceCurrentDate } from './current-date.js'\nimport { reduceDynamicOptionOverrides } from './options.js'\nimport { reduceDateProfile } from './date-profile.js'\nimport { reduceEventSources, initEventSources, reduceEventSourcesNewTimeZone, computeEventSourcesLoading } from './eventSources.js'\nimport { reduceEventStore, rezoneEventStoreDates } from './eventStore.js'\nimport { reduceDateSelection } from './date-selection.js'\nimport { reduceSelectedEvent } from './selected-event.js'\nimport { reduceEventDrag } from './event-drag.js'\nimport { reduceEventResize } from './event-resize.js'\nimport { Emitter } from '../common/Emitter.js'\nimport { EventUiHash, EventUi, createEventUi } from '../component/event-ui.js'\nimport { EventDefHash } from '../structs/event-def.js'\nimport { parseToolbars } from '../toolbar-parse.js'\nimport {\n CalendarOptionsRefined, CalendarOptions,\n CALENDAR_OPTION_REFINERS, COMPLEX_OPTION_COMPARATORS,\n ViewOptions, ViewOptionsRefined,\n BASE_OPTION_DEFAULTS, mergeRawOptions,\n BASE_OPTION_REFINERS, VIEW_OPTION_REFINERS,\n CalendarListeners, CALENDAR_LISTENER_REFINERS, Dictionary,\n} from '../options.js'\nimport { rangeContainsMarker } from '../datelib/date-range.js'\nimport { ViewImpl } from '../api/ViewImpl.js'\nimport { parseBusinessHours } from '../structs/business-hours.js'\nimport { globalPlugins } from '../global-plugins.js'\nimport { createEmptyEventStore } from '../structs/event-store.js'\nimport { CalendarContext } from '../CalendarContext.js'\nimport { CalendarDataManagerState, CalendarOptionsData, CalendarCurrentViewData, CalendarData } from './data-types.js'\nimport { TaskRunner } from '../util/TaskRunner.js'\nimport { buildTitle } from './title-formatting.js'\n\nexport interface CalendarDataManagerProps {\n optionOverrides: CalendarOptions\n calendarApi: CalendarImpl\n onAction?: (action: Action) => void\n onData?: (data: CalendarData) => void\n}\n\nexport type ReducerFunc = ( // TODO: rename to CalendarDataInjector. move view-props-manip hook here as well?\n currentState: Dictionary | null,\n action: Action | null,\n context: CalendarContext & CalendarDataManagerState // more than just context\n) => Dictionary\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\n\nexport class CalendarDataManager {\n private computeOptionsData = memoize(this._computeOptionsData)\n private computeCurrentViewData = memoize(this._computeCurrentViewData)\n private organizeRawLocales = memoize(organizeRawLocales)\n private buildLocale = memoize(buildLocale)\n private buildPluginHooks = buildBuildPluginHooks()\n private buildDateEnv = memoize(buildDateEnv)\n private buildTheme = memoize(buildTheme)\n private parseToolbars = memoize(parseToolbars)\n private buildViewSpecs = memoize(buildViewSpecs)\n private buildDateProfileGenerator = memoizeObjArg(buildDateProfileGenerator)\n private buildViewApi = memoize(buildViewApi)\n private buildViewUiProps = memoizeObjArg(buildViewUiProps)\n private buildEventUiBySource = memoize(buildEventUiBySource, isPropsEqual)\n private buildEventUiBases = memoize(buildEventUiBases)\n private parseContextBusinessHours = memoizeObjArg(parseContextBusinessHours)\n private buildTitle = memoize(buildTitle)\n\n public emitter = new Emitter<CalendarListeners>()\n private actionRunner = new TaskRunner(this._handleAction.bind(this), this.updateData.bind(this))\n private props: CalendarDataManagerProps\n private state: CalendarDataManagerState\n private data: CalendarData\n\n public currentCalendarOptionsInput: CalendarOptions = {}\n private currentCalendarOptionsRefined: CalendarOptionsRefined = ({} as any)\n private currentViewOptionsInput: ViewOptions = {}\n private currentViewOptionsRefined: ViewOptionsRefined = ({} as any)\n public currentCalendarOptionsRefiners: any = {}\n\n constructor(props: CalendarDataManagerProps) {\n this.props = props\n this.actionRunner.pause()\n\n let dynamicOptionOverrides: CalendarOptions = {}\n let optionsData = this.computeOptionsData(\n props.optionOverrides,\n dynamicOptionOverrides,\n props.calendarApi,\n )\n\n let currentViewType = optionsData.calendarOptions.initialView || optionsData.pluginHooks.initialView\n let currentViewData = this.computeCurrentViewData(\n currentViewType,\n optionsData,\n props.optionOverrides,\n dynamicOptionOverrides,\n )\n\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\n let currentDate = getInitialDate(optionsData.calendarOptions, optionsData.dateEnv)\n let dateProfile = currentViewData.dateProfileGenerator.build(currentDate)\n\n if (!rangeContainsMarker(dateProfile.activeRange, currentDate)) {\n currentDate = dateProfile.currentRange.start\n }\n\n let calendarContext: 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\n // needs to be after setThisContext\n for (let callback of optionsData.pluginHooks.contextInit) {\n callback(calendarContext)\n }\n\n // NOT DRY\n let eventSources = initEventSources(optionsData.calendarOptions, dateProfile, calendarContext)\n\n let initialState: CalendarDataManagerState = {\n dynamicOptionOverrides,\n currentViewType,\n currentDate,\n dateProfile,\n businessHours: this.parseContextBusinessHours(calendarContext), // weird to have this in state\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 = { ...calendarContext, ...initialState }\n\n for (let reducer of optionsData.pluginHooks.reducers) {\n Object.assign(initialState, reducer(null, null, contextAndState))\n }\n\n if (computeIsLoading(initialState, calendarContext)) {\n this.emitter.trigger('loading', true) // NOT DRY\n }\n\n this.state = initialState\n this.updateData()\n this.actionRunner.resume()\n }\n\n getCurrentData = () => this.data\n\n dispatch = (action: Action) => {\n this.actionRunner.request(action) // protects against recursive calls to _handleAction\n }\n\n resetOptions(optionOverrides: CalendarOptions, append?: boolean) {\n let { props } = this\n\n props.optionOverrides = append\n ? { ...props.optionOverrides, ...optionOverrides }\n : optionOverrides\n\n this.actionRunner.request({ // hack. will cause updateData\n type: 'NOTHING',\n })\n }\n\n _handleAction(action: Action) {\n let { props, state, emitter } = this\n\n let dynamicOptionOverrides = reduceDynamicOptionOverrides(state.dynamicOptionOverrides, action)\n let optionsData = this.computeOptionsData(\n props.optionOverrides,\n dynamicOptionOverrides,\n props.calendarApi,\n )\n\n let currentViewType = reduceViewType(state.currentViewType, action)\n let currentViewData = this.computeCurrentViewData(\n currentViewType,\n optionsData,\n props.optionOverrides,\n dynamicOptionOverrides,\n )\n\n // wire things up\n // TODO: not DRY\n props.calendarApi.currentDataManager = this\n emitter.setThisContext(props.calendarApi)\n emitter.setOptions(currentViewData.options)\n\n let calendarContext: 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\n let { currentDate, dateProfile } = state\n\n if (this.data && this.data.dateProfileGenerator !== currentViewData.dateProfileGenerator) { // hack\n dateProfile = currentViewData.dateProfileGenerator.build(currentDate)\n }\n\n currentDate = reduceCurrentDate(currentDate, action)\n dateProfile = reduceDateProfile(dateProfile, action, currentDate, currentViewData.dateProfileGenerator)\n\n if (\n action.type === 'PREV' || // TODO: move this logic into DateProfileGenerator\n action.type === 'NEXT' || // \"\n !rangeContainsMarker(dateProfile.currentRange, currentDate)\n ) {\n currentDate = dateProfile.currentRange.start\n }\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\n let renderableEventStore =\n (isEventsLoading && !currentViewData.options.progressiveEventRendering) ?\n (state.renderableEventStore || eventStore) : // try from previous state\n eventStore\n\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\n let newState: CalendarDataManagerState = {\n dynamicOptionOverrides,\n currentViewType,\n currentDate,\n dateProfile,\n eventSources,\n eventStore,\n renderableEventStore,\n selectionConfig,\n eventUiBases,\n businessHours: this.parseContextBusinessHours(calendarContext), // will memoize obj\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 = { ...calendarContext, ...newState }\n\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\n let wasLoading = computeIsLoading(state, calendarContext)\n let isLoading = computeIsLoading(newState, calendarContext)\n\n // TODO: use propSetHandlers in plugin system\n if (!wasLoading && isLoading) {\n emitter.trigger('loading', true)\n } else if (wasLoading && !isLoading) {\n emitter.trigger('loading', false)\n }\n\n this.state = newState\n\n if (props.onAction) {\n props.onAction(action)\n }\n }\n\n updateData() {\n let { props, state } = this\n let oldData = this.data\n\n let optionsData = this.computeOptionsData(\n props.optionOverrides,\n state.dynamicOptionOverrides,\n props.calendarApi,\n )\n\n let currentViewData = this.computeCurrentViewData(\n state.currentViewType,\n optionsData,\n props.optionOverrides,\n state.dynamicOptionOverrides,\n )\n\n let data: CalendarData = this.data = {\n viewTitle: this.buildTitle(state.dateProfile, currentViewData.options, optionsData.dateEnv),\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter: this.emitter,\n getCurrentData: this.getCurrentData,\n ...optionsData,\n ...currentViewData,\n ...state,\n }\n\n let changeHandlers = optionsData.pluginHooks.optionChangeHandlers\n let oldCalendarOptions = oldData && oldData.calendarOptions\n let newCalendarOptions = optionsData.calendarOptions\n\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 }\n\n for (let optionName in changeHandlers) {\n if (oldCalendarOptions[optionName] !== newCalendarOptions[optionName]) {\n changeHandlers[optionName](newCalendarOptions[optionName], data)\n }\n }\n }\n\n if (props.onData) {\n props.onData(data)\n }\n }\n\n _computeOptionsData(\n optionOverrides: CalendarOptions,\n dynamicOptionOverrides: CalendarOptions,\n calendarApi: CalendarImpl,\n ): CalendarOptionsData {\n // TODO: blacklist options that are handled by optionChangeHandlers\n\n let {\n refinedOptions, pluginHooks, localeDefaults, availableLocaleData, extra,\n } = this.processRawCalendarOptions(optionOverrides, dynamicOptionOverrides)\n\n warnUnknownOptions(extra)\n\n let dateEnv = this.buildDateEnv(\n refinedOptions.timeZone,\n refinedOptions.locale,\n refinedOptions.weekNumberCalculation,\n refinedOptions.firstDay,\n refinedOptions.weekText,\n pluginHooks,\n availableLocaleData,\n refinedOptions.defaultRangeSeparator,\n )\n\n let viewSpecs = this.buildViewSpecs(pluginHooks.views, optionOverrides, dynamicOptionOverrides, localeDefaults)\n let theme = this.buildTheme(refinedOptions, pluginHooks)\n let toolbarConfig = this.parseToolbars(refinedOptions, optionOverrides, theme, viewSpecs, calendarApi)\n\n return {\n calendarOptions: refinedOptions,\n pluginHooks,\n dateEnv,\n viewSpecs,\n theme,\n toolbarConfig,\n localeDefaults,\n availableRawLocales: availableLocaleData.map,\n }\n }\n\n // always called from behind a memoizer\n processRawCalendarOptions(optionOverrides: CalendarOptions, dynamicOptionOverrides: CalendarOptions) {\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 = {\n ...BASE_OPTION_REFINERS,\n ...CALENDAR_LISTENER_REFINERS,\n ...CALENDAR_OPTION_REFINERS,\n ...pluginHooks.listenerRefiners,\n ...pluginHooks.optionRefiners,\n }\n let extra = {}\n\n let raw = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n localeDefaults,\n optionOverrides,\n dynamicOptionOverrides,\n ])\n let refined: Partial<CalendarOptionsRefined> = {}\n let currentRaw = this.currentCalendarOptionsInput\n let currentRefined = this.currentCalendarOptionsRefined\n let anyChanges = false\n\n for (let optionName in raw) {\n if (optionName !== 'plugins') { // because plugins is special-cased\n if (\n raw[optionName] === currentRaw[optionName] ||\n (\n COMPLEX_OPTION_COMPARATORS[optionName] &&\n (optionName in currentRaw) &&\n COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName])\n )\n ) {\n refined[optionName] = currentRefined[optionName]\n } else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName])\n anyChanges = true\n } else {\n extra[optionName] = currentRaw[optionName]\n }\n }\n }\n\n if (anyChanges) {\n this.currentCalendarOptionsInput = raw\n this.currentCalendarOptionsRefined = refined as CalendarOptionsRefined\n }\n\n return {\n rawOptions: this.currentCalendarOptionsInput,\n refinedOptions: this.currentCalendarOptionsRefined,\n pluginHooks,\n availableLocaleData,\n localeDefaults,\n extra,\n }\n }\n\n _computeCurrentViewData(\n viewType: string,\n optionsData: CalendarOptionsData,\n optionOverrides: CalendarOptions,\n dynamicOptionOverrides: CalendarOptions,\n ): CalendarCurrentViewData {\n let viewSpec = optionsData.viewSpecs[viewType]\n\n if (!viewSpec) {\n throw new Error(`viewType \"${viewType}\" is not available. Please make sure you've loaded all neccessary plugins`)\n }\n\n let { refinedOptions, extra } = this.processRawViewOptions(\n viewSpec,\n optionsData.pluginHooks,\n optionsData.localeDefaults,\n optionOverrides,\n dynamicOptionOverrides,\n )\n\n warnUnknownOptions(extra)\n\n let dateProfileGenerator = this.buildDateProfileGenerator({\n dateProfileGeneratorClass: viewSpec.optionDefaults.dateProfileGeneratorClass as any,\n duration: viewSpec.duration,\n durationUnit: viewSpec.durationUnit,\n usesMinMaxTime: viewSpec.optionDefaults.usesMinMaxTime as any,\n dateEnv: optionsData.dateEnv,\n calendarApi: this.props.calendarApi, // should come from elsewhere?\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 monthMode: refinedOptions.monthMode,\n fixedWeekCount: refinedOptions.fixedWeekCount,\n })\n\n let viewApi = this.buildViewApi(viewType, this.getCurrentData, optionsData.dateEnv)\n\n return { viewSpec, options: refinedOptions, dateProfileGenerator, viewApi }\n }\n\n processRawViewOptions(\n viewSpec: ViewSpec,\n pluginHooks: PluginHooks,\n localeDefaults: CalendarOptions,\n optionOverrides: CalendarOptions,\n dynamicOptionOverrides: CalendarOptions,\n ) {\n let raw = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n viewSpec.optionDefaults,\n localeDefaults,\n optionOverrides,\n viewSpec.optionOverrides,\n dynamicOptionOverrides,\n ])\n let refiners = {\n ...BASE_OPTION_REFINERS,\n ...CALENDAR_LISTENER_REFINERS,\n ...CALENDAR_OPTION_REFINERS,\n ...VIEW_OPTION_REFINERS,\n ...pluginHooks.listenerRefiners,\n ...pluginHooks.optionRefiners,\n }\n let refined: Partial<ViewOptionsRefined> = {}\n let currentRaw = this.currentViewOptionsInput\n let currentRefined = this.currentViewOptionsRefined\n let anyChanges = false\n let extra = {}\n\n for (let optionName in raw) {\n if (\n raw[optionName] === currentRaw[optionName] ||\n (COMPLEX_OPTION_COMPARATORS[optionName] &&\n COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], currentRaw[optionName]))\n ) {\n refined[optionName] = currentRefined[optionName]\n } else {\n if (\n raw[optionName] === this.currentCalendarOptionsInput[optionName] ||\n (COMPLEX_OPTION_COMPARATORS[optionName] &&\n COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], this.currentCalendarOptionsInput[optionName]))\n ) {\n if (optionName in this.currentCalendarOptionsRefined) { // might be an \"extra\" prop\n refined[optionName] = this.currentCalendarOptionsRefined[optionName]\n }\n } else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName])\n } else {\n extra[optionName] = raw[optionName]\n }\n\n anyChanges = true\n }\n }\n\n if (anyChanges) {\n this.currentViewOptionsInput = raw\n this.currentViewOptionsRefined = refined as ViewOptionsRefined\n }\n\n return {\n rawOptions: this.currentViewOptionsInput,\n refinedOptions: this.currentViewOptionsRefined,\n extra,\n }\n }\n}\n\nfunction buildDateEnv(\n timeZone: string,\n explicitLocale: LocaleSingularArg,\n weekNumberCalculation,\n firstDay: number | undefined,\n weekText,\n pluginHooks: PluginHooks,\n availableLocaleData: RawLocaleInfo,\n defaultSeparator: string,\n) {\n let locale = buildLocale(explicitLocale || availableLocaleData.defaultCode, availableLocaleData.map)\n\n return new DateEnv({\n calendarSystem: 'gregory', // TODO: make this a setting\n timeZone,\n namedTimeZoneImpl: pluginHooks.namedTimeZonedImpl,\n locale,\n weekNumberCalculation,\n firstDay,\n weekText,\n cmdFormatter: pluginHooks.cmdFormatter,\n defaultSeparator,\n })\n}\n\nfunction buildTheme(options: CalendarOptionsRefined, pluginHooks: PluginHooks) {\n let ThemeClass = pluginHooks.themeClasses[options.themeSystem] || StandardTheme\n\n return new ThemeClass(options)\n}\n\nfunction buildDateProfileGenerator(props: DateProfileGeneratorProps): DateProfileGenerator {\n let DateProfileGeneratorClass = props.dateProfileGeneratorClass || DateProfileGenerator\n\n return new DateProfileGeneratorClass(props)\n}\n\nfunction buildViewApi(type: string, getCurrentData: () => CalendarData, dateEnv: DateEnv) {\n return new ViewImpl(type, getCurrentData, dateEnv)\n}\n\nfunction buildEventUiBySource(eventSources: EventSourceHash): EventUiHash {\n return mapHash(eventSources, (eventSource) => eventSource.ui)\n}\n\nfunction buildEventUiBases(eventDefs: EventDefHash, eventUiSingleBase: EventUi, eventUiBySource: EventUiHash) {\n let eventUiBases: EventUiHash = { '': eventUiSingleBase }\n\n for (let defId in eventDefs) {\n let def = eventDefs[defId]\n\n if (def.sourceId && eventUiBySource[def.sourceId]) {\n eventUiBases[defId] = eventUiBySource[def.sourceId]\n }\n }\n\n return eventUiBases\n}\n\nfunction buildViewUiProps(calendarContext: CalendarContext) {\n let { options } = calendarContext\n\n return {\n eventUiSingleBase: createEventUi(\n {\n display: options.eventDisplay,\n editable: options.editable, // without \"event\" at start\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 },\n calendarContext,\n ),\n selectionConfig: createEventUi(\n {\n constraint: options.selectConstraint,\n overlap: typeof options.selectOverlap === 'boolean' ? options.selectOverlap : undefined,\n allow: options.selectAllow,\n },\n calendarContext,\n ),\n }\n}\n\nfunction computeIsLoading(state: CalendarDataManagerState, context: CalendarContext) {\n for (let isLoadingFunc of context.pluginHooks.isLoadingFuncs) {\n if (isLoadingFunc(state)) {\n return true\n }\n }\n\n return false\n}\n\nfunction parseContextBusinessHours(calendarContext: CalendarContext) {\n return parseBusinessHours(calendarContext.options.businessHours, calendarContext)\n}\n\nfunction warnUnknownOptions(options: any, viewName?: string) {\n for (let optionName in options) {\n console.warn(\n `Unknown option '${optionName}'` +\n (viewName ? ` for view '${viewName}'` : ''),\n )\n }\n}\n","import { createElement, VNode } from './preact.js'\nimport { BaseComponent } from './vdom-util.js'\nimport { ToolbarWidget } from './toolbar-struct.js'\n\nexport interface ToolbarContent {\n title: string\n titleId: string\n navUnit: string\n activeButton: string\n isTodayEnabled: boolean\n isPrevEnabled: boolean\n isNextEnabled: boolean\n}\n\nexport interface ToolbarSectionProps extends ToolbarContent {\n widgetGroups: ToolbarWidget[][]\n}\n\nexport class ToolbarSection extends BaseComponent<ToolbarSectionProps> {\n render(): any {\n let children = this.props.widgetGroups.map((widgetGroup) => this.renderWidgetGroup(widgetGroup))\n\n return createElement('div', { className: 'fc-toolbar-chunk' }, ...children)\n }\n\n renderWidgetGroup(widgetGroup: ToolbarWidget[]): any {\n let { props } = this\n let { theme } = this.context\n let children: VNode[] = []\n let isOnlyButtons = true\n\n for (let widget of widgetGroup) {\n let { buttonName, buttonClick, buttonText, buttonIcon, buttonHint } = widget\n\n if (buttonName === 'title') {\n isOnlyButtons = false\n children.push(\n <h2 className=\"fc-toolbar-title\" id={props.titleId}>{props.title}</h2>,\n )\n } else {\n let isPressed = buttonName === props.activeButton\n let isDisabled =\n (!props.isTodayEnabled && buttonName === 'today') ||\n (!props.isPrevEnabled && buttonName === 'prev') ||\n (!props.isNextEnabled && buttonName === 'next')\n\n let buttonClasses = [`fc-${buttonName}-button`, theme.getClass('button')]\n if (isPressed) {\n buttonClasses.push(theme.getClass('buttonActive'))\n }\n\n children.push(\n <button\n type=\"button\"\n title={typeof buttonHint === 'function' ? buttonHint(props.navUnit) : buttonHint}\n disabled={isDisabled}\n aria-pressed={isPressed}\n className={buttonClasses.join(' ')}\n onClick={buttonClick}\n >\n {buttonText || (buttonIcon ? <span className={buttonIcon} /> : '')}\n </button>,\n )\n }\n }\n\n if (children.length > 1) {\n let groupClassName = (isOnlyButtons && theme.getClass('buttonGroup')) || ''\n\n return createElement('div', { className: groupClassName }, ...children)\n }\n return children[0]\n }\n}\n","import { createElement } from './preact.js'\nimport { BaseComponent } from './vdom-util.js'\nimport { ToolbarModel, ToolbarWidget } from './toolbar-struct.js'\nimport { ToolbarSection, ToolbarContent } from './ToolbarSection.js'\n\nexport interface ToolbarProps extends ToolbarContent {\n extraClassName: string // wish this could be array, but easier for pureness\n model: ToolbarModel\n titleId: string\n}\n\nexport class Toolbar extends BaseComponent<ToolbarProps> {\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\n if (sectionWidgets.left) {\n forceLtr = true\n startContent = sectionWidgets.left\n } else {\n startContent = sectionWidgets.start\n }\n\n if (sectionWidgets.right) {\n forceLtr = true\n endContent = sectionWidgets.right\n } else {\n endContent = sectionWidgets.end\n }\n\n let classNames = [\n extraClassName || '',\n 'fc-toolbar',\n forceLtr ? 'fc-toolbar-ltr' : '',\n ]\n\n return (\n <div className={classNames.join(' ')}>\n {this.renderSection('start', startContent || [])}\n {this.renderSection('center', centerContent || [])}\n {this.renderSection('end', endContent || [])}\n </div>\n )\n }\n\n renderSection(key: string, widgetGroups: ToolbarWidget[][]) {\n let { props } = this\n\n return (\n <ToolbarSection\n key={key}\n widgetGroups={widgetGroups}\n title={props.title}\n navUnit={props.navUnit}\n activeButton={props.activeButton}\n isTodayEnabled={props.isTodayEnabled}\n isPrevEnabled={props.isPrevEnabled}\n isNextEnabled={props.isNextEnabled}\n titleId={props.titleId}\n />\n )\n }\n}\n","import { BaseComponent, setRef } from './vdom-util.js'\nimport { ComponentChildren, Ref, createElement } from './preact.js'\nimport { CssDimValue } from './scrollgrid/util.js'\n\nexport interface ViewContainerProps {\n elRef?: Ref<HTMLDivElement>\n labeledById: string\n liquid?: boolean\n height?: CssDimValue\n aspectRatio?: number\n children?: ComponentChildren\n}\n\ninterface ViewContainerState {\n availableWidth: number | null\n}\n\n// TODO: do function component?\nexport class ViewContainer extends BaseComponent<ViewContainerProps, ViewContainerState> {\n el: HTMLElement\n\n state: ViewContainerState = {\n availableWidth: null,\n }\n\n render() {\n let { props, state } = this\n let { aspectRatio } = props\n\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: CssDimValue = ''\n let paddingBottom: CssDimValue = ''\n\n if (aspectRatio) {\n if (state.availableWidth !== null) {\n height = state.availableWidth / aspectRatio\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 } else {\n height = props.height || ''\n }\n\n return (\n <div\n aria-labelledby={props.labeledById}\n ref={this.handleEl}\n className={classNames.join(' ')}\n style={{ height, paddingBottom }}\n >\n {props.children}\n </div>\n )\n }\n\n componentDidMount() {\n this.context.addResizeHandler(this.handleResize)\n }\n\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleResize)\n }\n\n handleEl = (el: HTMLElement | null) => {\n this.el = el\n setRef(this.props.elRef, el)\n this.updateAvailableWidth()\n }\n\n handleResize = () => {\n this.updateAvailableWidth()\n }\n\n updateAvailableWidth() {\n if (\n 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","import { listenBySelector } from '../util/dom-event.js'\nimport { EventImpl } from '../api/EventImpl.js'\nimport { elementClosest } from '../util/dom-manip.js'\nimport { getElSeg } from '../component/event-rendering.js'\nimport { Interaction, InteractionSettings } from './interaction.js'\nimport { ViewApi } from '../api/ViewApi.js'\n\nexport interface EventClickArg {\n el: HTMLElement\n event: EventImpl\n jsEvent: MouseEvent\n view: ViewApi\n}\n\n/*\nDetects when the user clicks on an event within a DateComponent\n*/\nexport class EventClicking extends Interaction {\n constructor(settings: InteractionSettings) {\n super(settings)\n\n this.destroy = listenBySelector(\n settings.el,\n 'click',\n '.fc-event', // on both fg and bg events\n this.handleSegClick,\n )\n }\n\n handleSegClick = (ev: Event, segEl: HTMLElement) => {\n let { component } = this\n let { context } = component\n let seg = getElSeg(segEl)\n\n if (\n seg && // might be the <div> surrounding the more link\n component.isValidSegDownEl(ev.target as HTMLElement)\n ) {\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 as HTMLElement, '.fc-event-forced-url')\n let url = hasUrlContainer ? (hasUrlContainer.querySelector('a[href]') as any).href : ''\n\n context.emitter.trigger('eventClick', {\n el: segEl,\n event: new EventImpl(\n component.context,\n seg.eventRange.def,\n seg.eventRange.instance,\n ),\n jsEvent: ev as MouseEvent, // Is this always a mouse event? See #4655\n view: context.viewApi,\n } as EventClickArg)\n\n if (url && !ev.defaultPrevented) {\n window.location.href = url\n }\n }\n }\n}\n","import { listenToHoverBySelector } from '../util/dom-event.js'\nimport { EventImpl } from '../api/EventImpl.js'\nimport { getElSeg } from '../component/event-rendering.js'\nimport { Interaction, InteractionSettings } from './interaction.js'\nimport { ViewApi } from '../api/ViewApi.js'\n\nexport interface EventHoveringArg {\n el: HTMLElement\n event: EventImpl\n jsEvent: MouseEvent\n view: ViewApi\n}\n\n/*\nTriggers events and adds/removes core classNames when the user's pointer\nenters/leaves event-elements of a component.\n*/\nexport class EventHovering extends Interaction {\n removeHoverListeners: () => void\n\n currentSegEl: HTMLElement\n\n constructor(settings: InteractionSettings) {\n super(settings)\n\n this.removeHoverListeners = listenToHoverBySelector(\n settings.el,\n '.fc-event', // on both fg and bg events\n this.handleSegEnter,\n this.handleSegLeave,\n )\n }\n\n destroy() {\n this.removeHoverListeners()\n }\n\n // for simulating an eventMouseLeave when the event el is destroyed while mouse is over it\n handleEventElRemove = (el: HTMLElement) => {\n if (el === this.currentSegEl) {\n this.handleSegLeave(null, this.currentSegEl)\n }\n }\n\n handleSegEnter = (ev: Event, segEl: HTMLElement) => {\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\n handleSegLeave = (ev: Event | null, segEl: HTMLElement) => {\n if (this.currentSegEl) {\n this.currentSegEl = null\n this.triggerEvent('eventMouseLeave', ev, segEl)\n }\n }\n\n triggerEvent(publicEvName: 'eventMouseEnter' | 'eventMouseLeave', ev: Event | null, segEl: HTMLElement) {\n let { component } = this\n let { context } = component\n let seg = getElSeg(segEl)!\n\n if (!ev || component.isValidSegDownEl(ev.target as HTMLElement)) {\n context.emitter.trigger(publicEvName, {\n el: segEl,\n event: new EventImpl(\n context,\n seg.eventRange.def,\n seg.eventRange.instance,\n ),\n jsEvent: ev as MouseEvent, // Is this always a mouse event? See #4655\n view: context.viewApi,\n } as EventHoveringArg)\n }\n }\n}\n","import { ViewContextType, buildViewContext } from './ViewContext.js'\nimport { ViewSpec } from './structs/view-spec.js'\nimport { ViewProps } from './View.js'\nimport { Toolbar } from './Toolbar.js'\nimport { DateProfileGenerator, DateProfile } from './DateProfileGenerator.js'\nimport { rangeContainsMarker } from './datelib/date-range.js'\nimport { memoize } from './util/memoize.js'\nimport { DateMarker } from './datelib/marker.js'\nimport { CalendarData } from './reducers/data-types.js'\nimport { ViewPropsTransformerClass } from './plugin-system-struct.js'\nimport { createElement, createRef, Fragment, VNode } from './preact.js'\nimport { ViewContainer } from './ViewContainer.js'\nimport {\n Interaction,\n InteractionSettingsInput,\n InteractionClass,\n parseInteractionSettings,\n interactionSettingsStore,\n} from './interactions/interaction.js'\nimport { DateComponent } from './component/DateComponent.js'\nimport { EventClicking } from './interactions/EventClicking.js'\nimport { EventHovering } from './interactions/EventHovering.js'\nimport { getNow } from './reducers/current-date.js'\nimport { CalendarInteraction } from './calendar-utils.js'\nimport { DelayedRunner } from './util/DelayedRunner.js'\nimport { PureComponent } from './vdom-util.js'\nimport { getUniqueDomId } from './util/dom-manip.js'\n\nexport interface CalendarContentProps extends CalendarData {\n forPrint: boolean\n isHeightAuto: boolean\n}\n\nexport class CalendarContent extends PureComponent<CalendarContentProps> {\n private buildViewContext = memoize(buildViewContext)\n private buildViewPropTransformers = memoize(buildViewPropTransformers)\n private buildToolbarProps = memoize(buildToolbarProps)\n private headerRef = createRef<Toolbar>()\n private footerRef = createRef<Toolbar>()\n private interactionsStore: { [componentUid: string]: Interaction[] } = {}\n private calendarInteractions: CalendarInteraction[]\n\n // eslint-disable-next-line\n state = {\n viewLabelId: getUniqueDomId(),\n }\n\n /*\n renders INSIDE of an outer div\n */\n render() {\n let { props } = this\n let { toolbarConfig, options } = props\n\n let toolbarProps = this.buildToolbarProps(\n props.viewSpec,\n props.dateProfile,\n props.dateProfileGenerator,\n props.currentDate,\n getNow(props.options.now, props.dateEnv), // TODO: use NowTimer????\n props.viewTitle,\n )\n\n let viewVGrow = false\n let viewHeight: string | number = ''\n let viewAspectRatio: number | undefined\n\n if (props.isHeightAuto || props.forPrint) {\n viewHeight = ''\n } else if (options.height != null) {\n viewVGrow = true\n } else if (options.contentHeight != null) {\n viewHeight = options.contentHeight\n } else {\n viewAspectRatio = Math.max(options.aspectRatio, 0.5) // prevent from getting too tall\n }\n\n let viewContext = this.buildViewContext(\n props.viewSpec,\n props.viewApi,\n props.options,\n props.dateProfileGenerator,\n props.dateEnv,\n props.theme,\n props.pluginHooks,\n props.dispatch,\n props.getCurrentData,\n props.emitter,\n props.calendarApi,\n this.registerInteractiveComponent,\n this.unregisterInteractiveComponent,\n )\n\n let viewLabelId = (toolbarConfig.header && toolbarConfig.header.hasTitle)\n ? this.state.viewLabelId\n : ''\n\n return (\n <ViewContextType.Provider value={viewContext}>\n {toolbarConfig.header && (\n <Toolbar\n ref={this.headerRef}\n extraClassName=\"fc-header-toolbar\"\n model={toolbarConfig.header}\n titleId={viewLabelId}\n {...toolbarProps}\n />\n )}\n <ViewContainer\n liquid={viewVGrow}\n height={viewHeight}\n aspectRatio={viewAspectRatio}\n labeledById={viewLabelId}\n >\n {this.renderView(props)}\n {this.buildAppendContent()}\n </ViewContainer>\n {toolbarConfig.footer && (\n <Toolbar\n ref={this.footerRef}\n extraClassName=\"fc-footer-toolbar\"\n model={toolbarConfig.footer}\n titleId=\"\"\n {...toolbarProps}\n />\n )}\n </ViewContextType.Provider>\n )\n }\n\n componentDidMount() {\n let { props } = this\n\n this.calendarInteractions = props.pluginHooks.calendarInteractions\n .map((CalendarInteractionClass) => new CalendarInteractionClass(props))\n\n window.addEventListener('resize', this.handleWindowResize)\n\n let { propSetHandlers } = props.pluginHooks\n for (let propName in propSetHandlers) {\n propSetHandlers[propName](props[propName], props)\n }\n }\n\n componentDidUpdate(prevProps: CalendarContentProps) {\n let { props } = this\n\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\n componentWillUnmount() {\n window.removeEventListener('resize', this.handleWindowResize)\n this.resizeRunner.clear()\n\n for (let interaction of this.calendarInteractions) {\n interaction.destroy()\n }\n\n this.props.emitter.trigger('_unmount')\n }\n\n buildAppendContent(): VNode {\n let { props } = this\n\n let children = props.pluginHooks.viewContainerAppends.map(\n (buildAppendContent) => buildAppendContent(props),\n )\n\n return createElement(Fragment, {}, ...children)\n }\n\n renderView(props: CalendarContentProps) {\n let { pluginHooks } = props\n let { viewSpec } = props\n\n let viewProps: 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\n let transformers = this.buildViewPropTransformers(pluginHooks.viewPropsTransformers)\n\n for (let transformer of transformers) {\n Object.assign(\n viewProps,\n transformer.transform(viewProps, props),\n )\n }\n\n let ViewComponent = viewSpec.component\n\n return (\n <ViewComponent {...viewProps} />\n )\n }\n\n // Component Registration\n // -----------------------------------------------------------------------------------------------------------------\n\n registerInteractiveComponent = (component: DateComponent<any>, settingsInput: InteractionSettingsInput) => {\n let settings = parseInteractionSettings(component, settingsInput)\n let DEFAULT_INTERACTIONS: InteractionClass[] = [\n EventClicking,\n EventHovering,\n ]\n let interactionClasses: InteractionClass[] = DEFAULT_INTERACTIONS.concat(\n this.props.pluginHooks.componentInteractions,\n )\n let interactions = interactionClasses.map((TheInteractionClass) => new TheInteractionClass(settings))\n\n this.interactionsStore[component.uid] = interactions\n interactionSettingsStore[component.uid] = settings\n }\n\n unregisterInteractiveComponent = (component: DateComponent<any>) => {\n let listeners = this.interactionsStore[component.uid]\n\n if (listeners) {\n for (let listener of listeners) {\n listener.destroy()\n }\n delete this.interactionsStore[component.uid]\n }\n\n delete interactionSettingsStore[component.uid]\n }\n\n // Resizing\n // -----------------------------------------------------------------------------------------------------------------\n\n 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\n handleWindowResize = (ev: UIEvent) => {\n let { options } = this.props\n\n if (\n options.handleWindowResize &&\n ev.target === window // avoid jqui events\n ) {\n this.resizeRunner.request(options.windowResizeDelay)\n }\n }\n}\n\nfunction buildToolbarProps(\n viewSpec: ViewSpec,\n dateProfile: DateProfile,\n dateProfileGenerator: DateProfileGenerator,\n currentDate: DateMarker,\n now: DateMarker,\n title: string,\n) {\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\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\n// Plugin\n// -----------------------------------------------------------------------------------------------------------------\n\nfunction buildViewPropTransformers(theClasses: ViewPropsTransformerClass[]) {\n return theClasses.map((TheClass) => new TheClass())\n}\n","import { CalendarOptions } from './options.js'\nimport { DelayedRunner } from './util/DelayedRunner.js'\nimport { CalendarDataManager } from './reducers/CalendarDataManager.js'\nimport { Action } from './reducers/Action.js'\nimport { CalendarData } from './reducers/data-types.js'\nimport { CalendarRoot } from './CalendarRoot.js'\nimport { CalendarContent } from './CalendarContent.js'\nimport { createElement, render, flushSync } from './preact.js'\nimport { isArraysEqual } from './util/array.js'\nimport { CssDimValue } from './scrollgrid/util.js'\nimport { applyStyleProp } from './util/dom-manip.js'\nimport { RenderId } from './content-inject/RenderId.js'\nimport { CalendarImpl } from './api/CalendarImpl.js'\n\nexport class Calendar extends CalendarImpl {\n el: HTMLElement\n\n private currentData: CalendarData\n private renderRunner: DelayedRunner\n private isRendering = false\n private isRendered = false\n private currentClassNames: string[] = []\n private customContentRenderId = 0\n\n constructor(el: HTMLElement, optionOverrides: CalendarOptions = {}) {\n super()\n\n this.el = el\n this.renderRunner = new DelayedRunner(this.handleRenderRequest)\n\n new CalendarDataManager({ // eslint-disable-line no-new\n optionOverrides,\n calendarApi: this,\n onAction: this.handleAction,\n onData: this.handleData,\n })\n }\n\n private handleAction = (action: 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\n private handleData = (data: CalendarData) => {\n this.currentData = data\n this.renderRunner.request(data.calendarOptions.rerenderDelay)\n }\n\n private handleRenderRequest = () => {\n if (this.isRendering) {\n this.isRendered = true\n let { currentData } = this\n\n flushSync(() => {\n render(\n <CalendarRoot options={currentData.calendarOptions} theme={currentData.theme} emitter={currentData.emitter}>\n {(classNames, height, isHeightAuto, forPrint) => {\n this.setClassNames(classNames)\n this.setHeight(height)\n\n return (\n <RenderId.Provider value={this.customContentRenderId}>\n <CalendarContent\n isHeightAuto={isHeightAuto}\n forPrint={forPrint}\n {...currentData}\n />\n </RenderId.Provider>\n )\n }}\n </CalendarRoot>,\n this.el,\n )\n })\n } else if (this.isRendered) {\n this.isRendered = false\n render(null, this.el)\n\n this.setClassNames([])\n this.setHeight('')\n }\n }\n\n render() {\n let wasRendering = this.isRendering\n\n if (!wasRendering) {\n this.isRendering = true\n } else {\n this.customContentRenderId += 1\n }\n\n this.renderRunner.request()\n\n if (wasRendering) {\n this.updateSize()\n }\n }\n\n destroy(): void {\n if (this.isRendering) {\n this.isRendering = false\n this.renderRunner.request()\n }\n }\n\n updateSize(): void {\n flushSync(() => {\n super.updateSize()\n })\n }\n\n batchRendering(func): void {\n this.renderRunner.pause('batchRendering')\n func()\n this.renderRunner.resume('batchRendering')\n }\n\n pauseRendering() { // available to plugins\n this.renderRunner.pause('pauseRendering')\n }\n\n resumeRendering() { // available to plugins\n this.renderRunner.resume('pauseRendering', true)\n }\n\n resetOptions(optionOverrides, append?) {\n this.currentDataManager.resetOptions(optionOverrides, append)\n }\n\n private setClassNames(classNames: string[]) {\n if (!isArraysEqual(classNames, this.currentClassNames)) {\n let { classList } = this.el\n\n for (let className of this.currentClassNames) {\n classList.remove(className)\n }\n\n for (let className of classNames) {\n classList.add(className)\n }\n\n this.currentClassNames = classNames\n }\n }\n\n private setHeight(height: CssDimValue) {\n applyStyleProp(this.el, 'height', height)\n }\n}\n","import { DateEnv } from './datelib/env.js'\nimport { createFormatter } from './datelib/formatting.js'\nimport { NativeFormatterOptions } from './datelib/formatting-native.js'\nimport { organizeRawLocales, buildLocale } from './datelib/locale.js'\nimport { BASE_OPTION_DEFAULTS } from './options.js'\n\n// public\nimport { DateInput } from './api/structs.js'\n\nexport interface FormatDateOptions extends NativeFormatterOptions {\n locale?: string\n}\n\nexport interface FormatRangeOptions extends FormatDateOptions {\n separator?: string\n isEndExclusive?: boolean\n}\n\nexport function formatDate(dateInput: DateInput, options: FormatDateOptions = {}) {\n let dateEnv = buildDateEnv(options)\n let formatter = createFormatter(options)\n let dateMeta = dateEnv.createMarkerMeta(dateInput)\n\n if (!dateMeta) { // TODO: warning?\n return ''\n }\n\n return dateEnv.format(dateMeta.marker, formatter, {\n forcedTzo: dateMeta.forcedTzo,\n })\n}\n\nexport function formatRange(\n startInput: DateInput,\n endInput: DateInput,\n options: FormatRangeOptions, // mixture of env and formatter settings\n) {\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\n if (!startMeta || !endMeta) { // TODO: warning?\n return ''\n }\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\n// TODO: more DRY and optimized\nfunction buildDateEnv(settings: FormatRangeOptions) {\n let locale = buildLocale(settings.locale || 'en', organizeRawLocales([]).map) // TODO: don't hardcode 'en' everywhere\n\n return new DateEnv({\n timeZone: BASE_OPTION_DEFAULTS.timeZone,\n calendarSystem: 'gregory',\n ...settings,\n locale,\n })\n}\n","import { DateProfile } from './DateProfileGenerator.js'\nimport { EventStore } from './structs/event-store.js'\nimport { EventUiHash } from './component/event-ui.js'\nimport { sliceEventStore, EventRenderRange } from './component/event-rendering.js'\nimport { DateSpan } from './structs/date-span.js'\nimport { EventInteractionState } from './interactions/event-interaction-state.js'\nimport { Duration } from './datelib/duration.js'\n\nexport interface ViewProps {\n dateProfile: DateProfile\n businessHours: EventStore\n eventStore: EventStore\n eventUiBases: EventUiHash\n dateSelection: DateSpan | null\n eventSelection: string\n eventDrag: EventInteractionState | null\n eventResize: EventInteractionState | null\n isHeightAuto: boolean\n forPrint: boolean\n}\n\n// HELPERS\n\n/*\nif nextDayThreshold is specified, slicing is done in an all-day fashion.\nyou can get nextDayThreshold from context.nextDayThreshold\n*/\nexport function sliceEvents(\n props: ViewProps & { dateProfile: DateProfile, nextDayThreshold: Duration },\n allDay?: boolean,\n): EventRenderRange[] {\n return sliceEventStore(\n props.eventStore,\n props.eventUiBases,\n props.dateProfile.activeRange,\n allDay ? props.nextDayThreshold : null,\n ).fg\n}\n","import './index.css'\n\nexport { Calendar } from './Calendar.js'\n\nexport { CalendarApi } from './api/CalendarApi.js'\nexport { ViewApi } from './api/ViewApi.js'\nexport { EventSourceApi } from './api/EventSourceApi.js'\nexport { EventApi } from './api/EventApi.js'\nexport * from './api/structs.js'\n\nexport { FormatDateOptions, FormatRangeOptions } from './formatting-api.js'\nexport { formatDate, formatRange } from './formatting-api.js'\nexport { createPlugin } from './plugin-system.js'\nexport { sliceEvents } from './View.js'\nexport { EventRenderRange } from './component/event-rendering.js' // for sliceEvents\nexport { JsonRequestError } from './util/requestJson.js'\n\nexport { globalLocales } from './global-locales.js'\nexport { globalPlugins } from './global-plugins.js'\n\nexport const version: string = '<%= pkgVersion %>'\n"],"names":["eventSourceDef","buildDateEnv"],"mappings":"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"}