@zealicsolutions/web-ui 1.0.44 → 1.0.45-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/dist/cjs/containers/types/moleculeTypes.d.ts +16 -10
  2. package/dist/cjs/contexts/hooks/index.d.ts +6 -0
  3. package/dist/cjs/contexts/hooks/useButtonActionsContext.d.ts +1 -0
  4. package/dist/cjs/contexts/hooks/useFormStepContext.d.ts +1 -0
  5. package/dist/cjs/contexts/hooks/useMlrRichTextViewerContext.d.ts +1 -0
  6. package/dist/cjs/contexts/hooks/useOrganismContext.d.ts +1 -0
  7. package/dist/cjs/contexts/hooks/useStateContext.d.ts +1 -0
  8. package/dist/cjs/contexts/index.d.ts +3 -12
  9. package/dist/cjs/index.js +1588 -1588
  10. package/dist/cjs/index.js.map +1 -1
  11. package/dist/cjs/molecules/Calendar/CalendarMolecule.d.ts +54 -0
  12. package/dist/cjs/molecules/Calendar/CalendarMolecule.stories.d.ts +3 -0
  13. package/dist/cjs/molecules/Select/Select.d.ts +3 -2
  14. package/dist/cjs/molecules/Stepper/Stepper.stories.d.ts +5 -5
  15. package/dist/cjs/molecules/Tabs/Tabs.stories.d.ts +5 -5
  16. package/dist/cjs/molecules/Visit/VisitMolecule.d.ts +41 -0
  17. package/dist/cjs/typescript.d.ts +0 -3
  18. package/dist/esm/components/Avatar/Avatar.js +1 -1
  19. package/dist/esm/components/Avatar/Avatar.js.map +1 -1
  20. package/dist/esm/components/Buttons/IconButton.js +1 -1
  21. package/dist/esm/components/Buttons/IconButton.js.map +1 -1
  22. package/dist/esm/components/Circle/Circle.js +1 -1
  23. package/dist/esm/components/Circle/Circle.js.map +1 -1
  24. package/dist/esm/components/RichTextViewer/RichTextViewer.js +1 -1
  25. package/dist/esm/components/RichTextViewer/RichTextViewer.js.map +1 -1
  26. package/dist/esm/components/RichTextViewer/components/Leaf.js +1 -1
  27. package/dist/esm/components/RichTextViewer/components/Leaf.js.map +1 -1
  28. package/dist/esm/components/Toast/ToastContent.js +1 -1
  29. package/dist/esm/components/Toast/ToastContent.js.map +1 -1
  30. package/dist/esm/containers/Container.js +1 -1
  31. package/dist/esm/containers/Container.js.map +1 -1
  32. package/dist/esm/containers/ContainerStoriesComponent.js +1 -1
  33. package/dist/esm/containers/ContainerStoriesComponent.js.map +1 -1
  34. package/dist/esm/containers/FormContainer.js +1 -1
  35. package/dist/esm/containers/FormContainer.js.map +1 -1
  36. package/dist/esm/containers/FormStepContainer.js +1 -1
  37. package/dist/esm/containers/FormStepContainer.js.map +1 -1
  38. package/dist/esm/containers/OrganismItem.js +1 -1
  39. package/dist/esm/containers/OrganismItem.js.map +1 -1
  40. package/dist/esm/containers/hooks/useStateListenerValue.js +1 -1
  41. package/dist/esm/containers/hooks/useStateListenerValue.js.map +1 -1
  42. package/dist/esm/containers/hooks/useStateModifierHandler.js +1 -1
  43. package/dist/esm/containers/hooks/useStateModifierHandler.js.map +1 -1
  44. package/dist/esm/containers/types/moleculeTypes.d.ts +16 -10
  45. package/dist/esm/contexts/ButtonActionsContext/ButtonActionsContextProvider.js +1 -1
  46. package/dist/esm/contexts/ButtonActionsContext/ButtonActionsContextProvider.js.map +1 -1
  47. package/dist/esm/contexts/FormStepContext/FormStepContextProvider.js +1 -1
  48. package/dist/esm/contexts/FormStepContext/FormStepContextProvider.js.map +1 -1
  49. package/dist/esm/contexts/hooks/index.d.ts +6 -0
  50. package/dist/esm/contexts/hooks/useButtonActionsContext.d.ts +1 -0
  51. package/dist/esm/contexts/hooks/useButtonActionsContext.js +2 -0
  52. package/dist/esm/contexts/hooks/useButtonActionsContext.js.map +1 -0
  53. package/dist/esm/contexts/hooks/useFormStepContext.d.ts +1 -0
  54. package/dist/esm/contexts/hooks/useFormStepContext.js +2 -0
  55. package/dist/esm/contexts/hooks/useFormStepContext.js.map +1 -0
  56. package/dist/esm/contexts/hooks/useMlrRichTextViewerContext.d.ts +1 -0
  57. package/dist/esm/contexts/hooks/useMlrRichTextViewerContext.js +2 -0
  58. package/dist/esm/contexts/hooks/useMlrRichTextViewerContext.js.map +1 -0
  59. package/dist/esm/contexts/hooks/useOrganismContext.d.ts +1 -0
  60. package/dist/esm/contexts/hooks/useOrganismContext.js +2 -0
  61. package/dist/esm/contexts/hooks/useOrganismContext.js.map +1 -0
  62. package/dist/esm/contexts/hooks/useStateContext.d.ts +1 -0
  63. package/dist/esm/contexts/hooks/useStateContext.js +2 -0
  64. package/dist/esm/contexts/hooks/useStateContext.js.map +1 -0
  65. package/dist/esm/contexts/index.d.ts +3 -12
  66. package/dist/esm/helpers/utils.js +1 -1
  67. package/dist/esm/helpers/utils.js.map +1 -1
  68. package/dist/esm/index.js +1 -1
  69. package/dist/esm/molecules/Accordion/Accordion.js +1 -1
  70. package/dist/esm/molecules/Accordion/Accordion.js.map +1 -1
  71. package/dist/esm/molecules/Avatar/Avatar.js +1 -1
  72. package/dist/esm/molecules/Avatar/Avatar.js.map +1 -1
  73. package/dist/esm/molecules/BaseMolecule.js +1 -1
  74. package/dist/esm/molecules/BaseMolecule.js.map +1 -1
  75. package/dist/esm/molecules/BasicTextField/BasicTextField.js +1 -1
  76. package/dist/esm/molecules/BasicTextField/BasicTextField.js.map +1 -1
  77. package/dist/esm/molecules/Calendar/CalendarMolecule.d.ts +54 -0
  78. package/dist/esm/molecules/Calendar/CalendarMolecule.js +2 -0
  79. package/dist/esm/molecules/Calendar/CalendarMolecule.js.map +1 -0
  80. package/dist/esm/molecules/Calendar/CalendarMolecule.stories.d.ts +3 -0
  81. package/dist/esm/molecules/Checklist/Checklist.js +1 -1
  82. package/dist/esm/molecules/Checklist/Checklist.js.map +1 -1
  83. package/dist/esm/molecules/Consent/ConsentCapture.js +1 -1
  84. package/dist/esm/molecules/Consent/ConsentCapture.js.map +1 -1
  85. package/dist/esm/molecules/Consent/ConsentMolecule.js +1 -1
  86. package/dist/esm/molecules/Consent/ConsentMolecule.js.map +1 -1
  87. package/dist/esm/molecules/CurrencyInputtField/CurrencyInputField.js +1 -1
  88. package/dist/esm/molecules/CurrencyInputtField/CurrencyInputField.js.map +1 -1
  89. package/dist/esm/molecules/CustomValidation/CustomValidation.js +1 -1
  90. package/dist/esm/molecules/CustomValidation/CustomValidation.js.map +1 -1
  91. package/dist/esm/molecules/DatePicker/DatePicker.js +1 -1
  92. package/dist/esm/molecules/DatePicker/DatePicker.js.map +1 -1
  93. package/dist/esm/molecules/Drawer/styles.js +1 -1
  94. package/dist/esm/molecules/Drawer/styles.js.map +1 -1
  95. package/dist/esm/molecules/EmailInputField/EmailInputField.js +1 -1
  96. package/dist/esm/molecules/EmailInputField/EmailInputField.js.map +1 -1
  97. package/dist/esm/molecules/Menu/Menu.js +1 -1
  98. package/dist/esm/molecules/Menu/Menu.js.map +1 -1
  99. package/dist/esm/molecules/NumericInputField/NumericInputField.js +1 -1
  100. package/dist/esm/molecules/NumericInputField/NumericInputField.js.map +1 -1
  101. package/dist/esm/molecules/PasswordSetup/PasswordSetup.js +1 -1
  102. package/dist/esm/molecules/PasswordSetup/PasswordSetup.js.map +1 -1
  103. package/dist/esm/molecules/PdfDocument/PdfDocument.js +1 -1
  104. package/dist/esm/molecules/PdfDocument/PdfDocument.js.map +1 -1
  105. package/dist/esm/molecules/PhoneNumberInputField/PhoneNumberInputField.js +1 -1
  106. package/dist/esm/molecules/PhoneNumberInputField/PhoneNumberInputField.js.map +1 -1
  107. package/dist/esm/molecules/Select/Select.d.ts +3 -2
  108. package/dist/esm/molecules/Select/Select.js +1 -1
  109. package/dist/esm/molecules/Select/Select.js.map +1 -1
  110. package/dist/esm/molecules/Slider/Slider.js +1 -1
  111. package/dist/esm/molecules/Slider/Slider.js.map +1 -1
  112. package/dist/esm/molecules/Stepper/Stepper.js +1 -1
  113. package/dist/esm/molecules/Stepper/Stepper.js.map +1 -1
  114. package/dist/esm/molecules/Stepper/Stepper.stories.d.ts +5 -5
  115. package/dist/esm/molecules/Switch/Switch.js +1 -1
  116. package/dist/esm/molecules/Switch/Switch.js.map +1 -1
  117. package/dist/esm/molecules/Tabs/Tabs.js +1 -1
  118. package/dist/esm/molecules/Tabs/Tabs.js.map +1 -1
  119. package/dist/esm/molecules/Tabs/Tabs.stories.d.ts +5 -5
  120. package/dist/esm/molecules/Visit/VisitMolecule.d.ts +41 -0
  121. package/dist/esm/molecules/Visit/VisitMolecule.js +2 -0
  122. package/dist/esm/molecules/Visit/VisitMolecule.js.map +1 -0
  123. package/dist/esm/molecules/ZealUIModal/ZealUIModal.js +1 -1
  124. package/dist/esm/molecules/ZealUIModal/ZealUIModal.js.map +1 -1
  125. package/dist/esm/node_modules/@fullcalendar/core/index.js +2 -0
  126. package/dist/esm/node_modules/@fullcalendar/core/index.js.map +1 -0
  127. package/dist/esm/node_modules/@fullcalendar/core/internal-common.js +2 -0
  128. package/dist/esm/node_modules/@fullcalendar/core/internal-common.js.map +1 -0
  129. package/dist/esm/node_modules/@fullcalendar/daygrid/index.js +2 -0
  130. package/dist/esm/node_modules/@fullcalendar/daygrid/index.js.map +1 -0
  131. package/dist/esm/node_modules/@fullcalendar/daygrid/internal.js +2 -0
  132. package/dist/esm/node_modules/@fullcalendar/daygrid/internal.js.map +1 -0
  133. package/dist/esm/node_modules/@fullcalendar/interaction/index.js +2 -0
  134. package/dist/esm/node_modules/@fullcalendar/interaction/index.js.map +1 -0
  135. package/dist/esm/node_modules/@fullcalendar/list/index.js +2 -0
  136. package/dist/esm/node_modules/@fullcalendar/list/index.js.map +1 -0
  137. package/dist/esm/node_modules/@fullcalendar/list/internal.js +2 -0
  138. package/dist/esm/node_modules/@fullcalendar/list/internal.js.map +1 -0
  139. package/dist/esm/node_modules/@fullcalendar/premium-common/index.js +2 -0
  140. package/dist/esm/node_modules/@fullcalendar/premium-common/index.js.map +1 -0
  141. package/dist/esm/node_modules/@fullcalendar/react/dist/index.js +2 -0
  142. package/dist/esm/node_modules/@fullcalendar/react/dist/index.js.map +1 -0
  143. package/dist/esm/node_modules/@fullcalendar/resource/index.js +2 -0
  144. package/dist/esm/node_modules/@fullcalendar/resource/index.js.map +1 -0
  145. package/dist/esm/node_modules/@fullcalendar/resource/internal-common.js +2 -0
  146. package/dist/esm/node_modules/@fullcalendar/resource/internal-common.js.map +1 -0
  147. package/dist/esm/node_modules/@fullcalendar/resource-daygrid/internal.js +2 -0
  148. package/dist/esm/node_modules/@fullcalendar/resource-daygrid/internal.js.map +1 -0
  149. package/dist/esm/node_modules/@fullcalendar/resource-timegrid/index.js +2 -0
  150. package/dist/esm/node_modules/@fullcalendar/resource-timegrid/index.js.map +1 -0
  151. package/dist/esm/node_modules/@fullcalendar/resource-timegrid/internal.js +2 -0
  152. package/dist/esm/node_modules/@fullcalendar/resource-timegrid/internal.js.map +1 -0
  153. package/dist/esm/node_modules/@fullcalendar/resource-timeline/index.js +2 -0
  154. package/dist/esm/node_modules/@fullcalendar/resource-timeline/index.js.map +1 -0
  155. package/dist/esm/node_modules/@fullcalendar/resource-timeline/internal.js +2 -0
  156. package/dist/esm/node_modules/@fullcalendar/resource-timeline/internal.js.map +1 -0
  157. package/dist/esm/node_modules/@fullcalendar/scrollgrid/internal.js +2 -0
  158. package/dist/esm/node_modules/@fullcalendar/scrollgrid/internal.js.map +1 -0
  159. package/dist/esm/node_modules/@fullcalendar/timegrid/index.js +2 -0
  160. package/dist/esm/node_modules/@fullcalendar/timegrid/index.js.map +1 -0
  161. package/dist/esm/node_modules/@fullcalendar/timegrid/internal.js +2 -0
  162. package/dist/esm/node_modules/@fullcalendar/timegrid/internal.js.map +1 -0
  163. package/dist/esm/node_modules/@fullcalendar/timeline/index.js +2 -0
  164. package/dist/esm/node_modules/@fullcalendar/timeline/index.js.map +1 -0
  165. package/dist/esm/node_modules/@fullcalendar/timeline/internal.js +2 -0
  166. package/dist/esm/node_modules/@fullcalendar/timeline/internal.js.map +1 -0
  167. package/dist/esm/node_modules/preact/compat/dist/compat.mjs.js +2 -0
  168. package/dist/esm/node_modules/preact/compat/dist/compat.mjs.js.map +1 -0
  169. package/dist/esm/node_modules/preact/dist/preact.mjs.js +2 -0
  170. package/dist/esm/node_modules/preact/dist/preact.mjs.js.map +1 -0
  171. package/dist/esm/node_modules/preact/hooks/dist/hooks.mjs.js +2 -0
  172. package/dist/esm/node_modules/preact/hooks/dist/hooks.mjs.js.map +1 -0
  173. package/dist/esm/node_modules/react-slick/lib/track.js +1 -1
  174. package/dist/esm/typescript.d.ts +0 -3
  175. package/dist/index.d.ts +139 -91
  176. package/package.json +11 -3
  177. package/dist/cjs/contexts/ApiContext/ApiContext.d.ts +0 -12
  178. package/dist/cjs/contexts/ApiContext/ApiProvider.d.ts +0 -6
  179. package/dist/cjs/contexts/ApiContext/queries/index.d.ts +0 -1
  180. package/dist/cjs/contexts/ApiContext/queries/queryKeys.d.ts +0 -3
  181. package/dist/cjs/contexts/ApiContext/queries/useDataModelFieldOptions.d.ts +0 -5
  182. package/dist/cjs/contexts/ApiContext/useApi.d.ts +0 -2
  183. package/dist/cjs/contexts/ButtonActionsContext/useButtonActionsContext.d.ts +0 -1
  184. package/dist/cjs/contexts/FormStepContext/useFormStepContext.d.ts +0 -1
  185. package/dist/cjs/contexts/MlrRichTextViewerContext/useMlrRichTextViewerContext.d.ts +0 -1
  186. package/dist/cjs/contexts/OrganismContext/useOrganismContext.d.ts +0 -1
  187. package/dist/cjs/contexts/StateContext/useStateContext.d.ts +0 -1
  188. package/dist/esm/contexts/AccountButtonContext/useAccountButtonContext.js +0 -2
  189. package/dist/esm/contexts/AccountButtonContext/useAccountButtonContext.js.map +0 -1
  190. package/dist/esm/contexts/ApiContext/ApiContext.d.ts +0 -12
  191. package/dist/esm/contexts/ApiContext/ApiContext.js +0 -2
  192. package/dist/esm/contexts/ApiContext/ApiContext.js.map +0 -1
  193. package/dist/esm/contexts/ApiContext/ApiProvider.d.ts +0 -6
  194. package/dist/esm/contexts/ApiContext/ApiProvider.js +0 -2
  195. package/dist/esm/contexts/ApiContext/ApiProvider.js.map +0 -1
  196. package/dist/esm/contexts/ApiContext/queries/index.d.ts +0 -1
  197. package/dist/esm/contexts/ApiContext/queries/queryKeys.d.ts +0 -3
  198. package/dist/esm/contexts/ApiContext/queries/queryKeys.js +0 -2
  199. package/dist/esm/contexts/ApiContext/queries/queryKeys.js.map +0 -1
  200. package/dist/esm/contexts/ApiContext/queries/useDataModelFieldOptions.d.ts +0 -5
  201. package/dist/esm/contexts/ApiContext/queries/useDataModelFieldOptions.js +0 -2
  202. package/dist/esm/contexts/ApiContext/queries/useDataModelFieldOptions.js.map +0 -1
  203. package/dist/esm/contexts/ApiContext/useApi.d.ts +0 -2
  204. package/dist/esm/contexts/ApiContext/useApi.js +0 -2
  205. package/dist/esm/contexts/ApiContext/useApi.js.map +0 -1
  206. package/dist/esm/contexts/ButtonActionsContext/useButtonActionsContext.d.ts +0 -1
  207. package/dist/esm/contexts/ButtonActionsContext/useButtonActionsContext.js +0 -2
  208. package/dist/esm/contexts/ButtonActionsContext/useButtonActionsContext.js.map +0 -1
  209. package/dist/esm/contexts/FormStepContext/useFormStepContext.d.ts +0 -1
  210. package/dist/esm/contexts/FormStepContext/useFormStepContext.js +0 -2
  211. package/dist/esm/contexts/FormStepContext/useFormStepContext.js.map +0 -1
  212. package/dist/esm/contexts/MlrRichTextViewerContext/useMlrRichTextViewerContext.d.ts +0 -1
  213. package/dist/esm/contexts/MlrRichTextViewerContext/useMlrRichTextViewerContext.js +0 -2
  214. package/dist/esm/contexts/MlrRichTextViewerContext/useMlrRichTextViewerContext.js.map +0 -1
  215. package/dist/esm/contexts/OrganismContext/useOrganismContext.d.ts +0 -1
  216. package/dist/esm/contexts/OrganismContext/useOrganismContext.js +0 -2
  217. package/dist/esm/contexts/OrganismContext/useOrganismContext.js.map +0 -1
  218. package/dist/esm/contexts/StateContext/useStateContext.d.ts +0 -1
  219. package/dist/esm/contexts/StateContext/useStateContext.js +0 -2
  220. package/dist/esm/contexts/StateContext/useStateContext.js.map +0 -1
  221. /package/dist/cjs/contexts/{AccountButtonContext → hooks}/useAccountButtonContext.d.ts +0 -0
  222. /package/dist/esm/contexts/{AccountButtonContext → hooks}/useAccountButtonContext.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ZealUIModal.js","sources":["../../../../../src/molecules/ZealUIModal/ZealUIModal.tsx"],"sourcesContent":[null],"names":["ZealUIModal","_a","children","wrapperStyles","_b","padding","onKeyDown","modalStyles","_c","withCloseIcon","rest","__rest","_jsx","MUIModal","__assign","style","_jsxs","ModalWrapper","IconWrapper","onClick","onClose","Icon","size","name","color","defaultTheme","colors","gray1","styled","div","templateObject_2","__makeTemplateObject","theme","sizes","$styles","css","templateObject_1","XL","L","M","background","TouchableOpacity","templateObject_4","templateObject_3","getSizeStyle"],"mappings":"m15GAqBO,YAAMA,EAAc,SAACC,GAC1B,IAAAC,EAAQD,EAAAC,SACRC,EAAaF,EAAAE,cACbC,EAAwBH,EAAAI,QAAxBA,OAAO,IAAAD,EAAG,eAAcA,EACxBE,EAASL,EAAAK,UACTC,EAAWN,EAAAM,YACXC,EAAAP,EAAAQ,cAAAA,OAAgB,IAAAD,GAAKA,EAClBE,EAAIC,EAAAV,EAPmB,kFAQJ,OACtBW,EAACC,EAAQC,EAAA,CAAA,EAAKJ,EAAI,CAAEK,MAAOR,EAAaD,UAAWA,GACjD,CAAAJ,SAAAc,EAACC,EAAYH,EAAA,CAACC,MAAKD,EAAA,CAAIT,QAAOA,GAAKF,IAAa,CAAAD,SAAA,CAC7CA,EACAO,GACCG,EAACM,EAAYJ,EAAA,CAAAK,QAAST,aAAA,EAAAA,EAAMU,SAC1B,CAAAlB,SAAAU,EAACS,EAAI,CAACC,KAAM,GAAIC,KAAK,QAAQC,MAAOC,EAAaC,OAAOC,mBAOrDV,EAAeW,EAAOC,IAAGC,IAAAA,EAAAC,EAAA,CAAA,4JAAA,MAAA,CAAgB,4JAcnD,SANC,SAAC9B,OAAEG,EAAwBH,EAAA+B,MAAfN,EAAMtB,EAAAsB,OAAEO,EAAK7B,EAAA6B,MAAIC,EAAOjC,EAAAiC,QAAO,OAAAC,EAAGC,IAAAA,EAAAL,EAAA,CAAA,cAAA,wBAAA,2BAAA,8BAAA,UAAA,QAAA,CAAA,cAC/B,wBACM,2BACG,8BACa,UAC5B,UAJFE,EAAMI,GACCJ,EAAMK,EACHL,EAAMM,EACHb,EAAOc,WACzBN,EALyC,IASlChB,EAAcU,EAAOa,EAAPb,CAAwBc,IAAAA,EAAAX,EAAA,CAAA,OAAA,OAAA,CAAA,OAUhD,UATC,SAAC9B,GAAW,IAAAgC,EAAKhC,EAAA+B,MAAAC,MAAS,OAAAE,EAAGQ,IAAAA,EAAAZ,EAAA,CAAA,6BAAA,gGAAA,mBAAA,iCAAA,CAAA,6BAEN,gGAIJ,mBACE,mCALnBa,EAAaX,EAAMK,GAIdL,EAAM,OACJA,EAAM,OAPW"}
1
+ {"version":3,"file":"ZealUIModal.js","sources":["../../../../../src/molecules/ZealUIModal/ZealUIModal.tsx"],"sourcesContent":[null],"names":["ZealUIModal","_a","children","wrapperStyles","_b","padding","onKeyDown","modalStyles","_c","withCloseIcon","rest","__rest","_jsx","MUIModal","__assign","style","_jsxs","ModalWrapper","IconWrapper","onClick","onClose","Icon","size","name","color","defaultTheme","colors","gray1","styled","div","templateObject_2","__makeTemplateObject","theme","sizes","$styles","css","templateObject_1","XL","L","M","background","TouchableOpacity","templateObject_4","templateObject_3","getSizeStyle"],"mappings":"urEAqBO,YAAMA,EAAc,SAACC,GAC1B,IAAAC,EAAQD,EAAAC,SACRC,EAAaF,EAAAE,cACbC,EAAwBH,EAAAI,QAAxBA,OAAO,IAAAD,EAAG,eAAcA,EACxBE,EAASL,EAAAK,UACTC,EAAWN,EAAAM,YACXC,EAAAP,EAAAQ,cAAAA,OAAgB,IAAAD,GAAKA,EAClBE,EAAIC,EAAAV,EAPmB,kFAQJ,OACtBW,EAACC,EAAQC,EAAA,CAAA,EAAKJ,EAAI,CAAEK,MAAOR,EAAaD,UAAWA,GACjD,CAAAJ,SAAAc,EAACC,EAAYH,EAAA,CAACC,MAAKD,EAAA,CAAIT,QAAOA,GAAKF,IAAa,CAAAD,SAAA,CAC7CA,EACAO,GACCG,EAACM,EAAYJ,EAAA,CAAAK,QAAST,aAAA,EAAAA,EAAMU,SAC1B,CAAAlB,SAAAU,EAACS,EAAI,CAACC,KAAM,GAAIC,KAAK,QAAQC,MAAOC,EAAaC,OAAOC,mBAOrDV,EAAeW,EAAOC,IAAGC,IAAAA,EAAAC,EAAA,CAAA,4JAAA,MAAA,CAAgB,4JAcnD,SANC,SAAC9B,OAAEG,EAAwBH,EAAA+B,MAAfN,EAAMtB,EAAAsB,OAAEO,EAAK7B,EAAA6B,MAAIC,EAAOjC,EAAAiC,QAAO,OAAAC,EAAGC,IAAAA,EAAAL,EAAA,CAAA,cAAA,wBAAA,2BAAA,8BAAA,UAAA,QAAA,CAAA,cAC/B,wBACM,2BACG,8BACa,UAC5B,UAJFE,EAAMI,GACCJ,EAAMK,EACHL,EAAMM,EACHb,EAAOc,WACzBN,EALyC,IASlChB,EAAcU,EAAOa,EAAPb,CAAwBc,IAAAA,EAAAX,EAAA,CAAA,OAAA,OAAA,CAAA,OAUhD,UATC,SAAC9B,GAAW,IAAAgC,EAAKhC,EAAA+B,MAAAC,MAAS,OAAAE,EAAGQ,IAAAA,EAAAZ,EAAA,CAAA,6BAAA,gGAAA,mBAAA,iCAAA,CAAA,6BAEN,gGAIJ,mBACE,mCALnBa,EAAaX,EAAMK,GAIdL,EAAM,OACJA,EAAM,OAPW"}
@@ -0,0 +1,2 @@
1
+ import{g as e,v as t,u as n,l as r,n as i,r as s,d as a,s as o,o as l,f as c,q as u,t as d,w as p,a7 as h,a8 as f,ab as v,D as g,i as m,ac as b,z as w,A as E,E as R,F as O,G as T,H as D,I as S,J as C,K as y,L as I,M as x,N as A,O as P,e as H,P as V,Q as k,R as j,a as M,S as N,U as _,aa as L,a9 as F,m as U,T as G,c as W,h as B,j as z,p as Z,k as q,x as $,y as Y,a1 as X,a2 as J,a3 as K,a4 as Q,a5 as ee,a6 as te,V as ne,B as re,C as ie,b as se,W as oe,X as le,Y as ce,Z as ue,_ as de,$ as pe,a0 as he}from"./internal-common.js";export{ae as JsonRequestError}from"./internal-common.js";import{render as fe,createElement as ve,createRef as ge,Fragment as me}from"../../preact/dist/preact.mjs.js";import"../../preact/compat/dist/compat.mjs.js";const be=[],we={code:"en",week:{dow:0,doy:4},direction:"ltr",buttonText:{prev:"prev",next:"next",prevYear:"prev year",nextYear:"next year",year:"year",today:"today",month:"month",week:"week",day:"day",list:"list"},weekText:"W",weekTextLong:"Week",closeHint:"Close",timeHint:"Time",eventHint:"Event",allDayText:"all-day",moreLinkText:"more",noEventsText:"No events to display"},Ee=Object.assign(Object.assign({},we),{buttonHints:{prev:"Previous $0",next:"Next $0",today:(e,t)=>"day"===t?"Today":`This ${e}`},viewHint:"$0 view",navLinkHint:"Go to $0",moreLinkHint:e=>`Show ${e} more event${1===e?"":"s"}`});function Re(e){let t=e.length>0?e[0].code:"en",n=be.concat(e),r={en:Ee};for(let e of n)r[e.code]=e;return{map:r,defaultCode:t}}function Oe(e,t){return"object"!=typeof e||Array.isArray(e)?function(e,t){let n=[].concat(e||[]),r=function(e,t){for(let n=0;n<e.length;n+=1){let r=e[n].toLocaleLowerCase().split("-");for(let e=r.length;e>0;e-=1){let n=r.slice(0,e).join("-");if(t[n])return t[n]}}return null}(n,t)||Ee;return Te(e,n,r)}(e,t):Te(e.code,[e.code],e)}function Te(e,t,n){let r=U([we,n],["buttonText"]);delete r.code;let{week:i}=r;return delete r.week,{codeArg:e,codes:t,week:i,simpleNumberFormat:new Intl.NumberFormat(e),options:r}}function De(t){return{id:e(),name:t.name,premiumReleaseDate:t.premiumReleaseDate?new Date(t.premiumReleaseDate):void 0,deps:t.deps||[],reducers:t.reducers||[],isLoadingFuncs:t.isLoadingFuncs||[],contextInit:[].concat(t.contextInit||[]),eventRefiners:t.eventRefiners||{},eventDefMemberAdders:t.eventDefMemberAdders||[],eventSourceRefiners:t.eventSourceRefiners||{},isDraggableTransformers:t.isDraggableTransformers||[],eventDragMutationMassagers:t.eventDragMutationMassagers||[],eventDefMutationAppliers:t.eventDefMutationAppliers||[],dateSelectionTransformers:t.dateSelectionTransformers||[],datePointTransforms:t.datePointTransforms||[],dateSpanTransforms:t.dateSpanTransforms||[],views:t.views||{},viewPropsTransformers:t.viewPropsTransformers||[],isPropsValid:t.isPropsValid||null,externalDefTransforms:t.externalDefTransforms||[],viewContainerAppends:t.viewContainerAppends||[],eventDropTransformers:t.eventDropTransformers||[],componentInteractions:t.componentInteractions||[],calendarInteractions:t.calendarInteractions||[],themeClasses:t.themeClasses||{},eventSourceDefs:t.eventSourceDefs||[],cmdFormatter:t.cmdFormatter,recurringTypes:t.recurringTypes||[],namedTimeZonedImpl:t.namedTimeZonedImpl,initialView:t.initialView||"",elementDraggingImpl:t.elementDraggingImpl,optionChangeHandlers:t.optionChangeHandlers||{},scrollGridImpl:t.scrollGridImpl||null,listenerRefiners:t.listenerRefiners||{},optionRefiners:t.optionRefiners||{},propSetHandlers:t.propSetHandlers||{}}}function Se(){let e,t=[],n=[];return(r,i)=>(e&&m(r,t)&&m(i,n)||(e=function(e,t){let n={},r={premiumReleaseDate:void 0,reducers:[],isLoadingFuncs:[],contextInit:[],eventRefiners:{},eventDefMemberAdders:[],eventSourceRefiners:{},isDraggableTransformers:[],eventDragMutationMassagers:[],eventDefMutationAppliers:[],dateSelectionTransformers:[],datePointTransforms:[],dateSpanTransforms:[],views:{},viewPropsTransformers:[],isPropsValid:null,externalDefTransforms:[],viewContainerAppends:[],eventDropTransformers:[],componentInteractions:[],calendarInteractions:[],themeClasses:{},eventSourceDefs:[],cmdFormatter:null,recurringTypes:[],namedTimeZonedImpl:null,initialView:"",elementDraggingImpl:null,optionChangeHandlers:{},scrollGridImpl:null,listenerRefiners:{},optionRefiners:{},propSetHandlers:{}};function i(e){for(let a of e){const e=a.name,o=n[e];void 0===o?(n[e]=a.id,i(a.deps),s=a,r={premiumReleaseDate:Ce((t=r).premiumReleaseDate,s.premiumReleaseDate),reducers:t.reducers.concat(s.reducers),isLoadingFuncs:t.isLoadingFuncs.concat(s.isLoadingFuncs),contextInit:t.contextInit.concat(s.contextInit),eventRefiners:Object.assign(Object.assign({},t.eventRefiners),s.eventRefiners),eventDefMemberAdders:t.eventDefMemberAdders.concat(s.eventDefMemberAdders),eventSourceRefiners:Object.assign(Object.assign({},t.eventSourceRefiners),s.eventSourceRefiners),isDraggableTransformers:t.isDraggableTransformers.concat(s.isDraggableTransformers),eventDragMutationMassagers:t.eventDragMutationMassagers.concat(s.eventDragMutationMassagers),eventDefMutationAppliers:t.eventDefMutationAppliers.concat(s.eventDefMutationAppliers),dateSelectionTransformers:t.dateSelectionTransformers.concat(s.dateSelectionTransformers),datePointTransforms:t.datePointTransforms.concat(s.datePointTransforms),dateSpanTransforms:t.dateSpanTransforms.concat(s.dateSpanTransforms),views:Object.assign(Object.assign({},t.views),s.views),viewPropsTransformers:t.viewPropsTransformers.concat(s.viewPropsTransformers),isPropsValid:s.isPropsValid||t.isPropsValid,externalDefTransforms:t.externalDefTransforms.concat(s.externalDefTransforms),viewContainerAppends:t.viewContainerAppends.concat(s.viewContainerAppends),eventDropTransformers:t.eventDropTransformers.concat(s.eventDropTransformers),calendarInteractions:t.calendarInteractions.concat(s.calendarInteractions),componentInteractions:t.componentInteractions.concat(s.componentInteractions),themeClasses:Object.assign(Object.assign({},t.themeClasses),s.themeClasses),eventSourceDefs:t.eventSourceDefs.concat(s.eventSourceDefs),cmdFormatter:s.cmdFormatter||t.cmdFormatter,recurringTypes:t.recurringTypes.concat(s.recurringTypes),namedTimeZonedImpl:s.namedTimeZonedImpl||t.namedTimeZonedImpl,initialView:t.initialView||s.initialView,elementDraggingImpl:t.elementDraggingImpl||s.elementDraggingImpl,optionChangeHandlers:Object.assign(Object.assign({},t.optionChangeHandlers),s.optionChangeHandlers),scrollGridImpl:s.scrollGridImpl||t.scrollGridImpl,listenerRefiners:Object.assign(Object.assign({},t.listenerRefiners),s.listenerRefiners),optionRefiners:Object.assign(Object.assign({},t.optionRefiners),s.optionRefiners),propSetHandlers:Object.assign(Object.assign({},t.propSetHandlers),s.propSetHandlers)}):o!==a.id&&console.warn(`Duplicate plugin '${e}'`)}var t,s}return e&&i(e),i(t),r}(r,i)),t=r,n=i,e)}function Ce(e,t){return void 0===e?t:void 0===t?e:new Date(Math.max(e.valueOf(),t.valueOf()))}class ye extends G{}function Ie(e,t,n,r){if(t[e])return t[e];let i=function(e,t,n,r){let i=n[e],s=r[e],a=e=>i&&null!==i[e]?i[e]:s&&null!==s[e]?s[e]:null,o=a("component"),l=a("superType"),c=null;if(l){if(l===e)throw new Error("Can't have a custom view type that references itself");c=Ie(l,t,n,r)}!o&&c&&(o=c.component);if(!o)return null;return{type:e,component:o,defaults:Object.assign(Object.assign({},c?c.defaults:{}),i?i.rawOptions:{}),overrides:Object.assign(Object.assign({},c?c.overrides:{}),s?s.rawOptions:{})}}(e,t,n,r);return i&&(t[e]=i),i}function xe(e){return M(e,Ae)}function Ae(e){let t="function"==typeof e?{component:e}:e,{component:n}=t;return t.content?n=Pe(t):!n||n.prototype instanceof re||(n=Pe(Object.assign(Object.assign({},t),{content:n}))),{superType:t.type,component:n,rawOptions:t}}function Pe(e){return t=>ve(ne.Consumer,null,(n=>ve(ie,{elTag:"div",elClasses:se(n.viewSpec),renderProps:Object.assign(Object.assign({},t),{nextDayThreshold:n.options.nextDayThreshold}),generatorName:void 0,customGenerator:e.content,classNameGenerator:e.classNames,didMount:e.didMount,willUnmount:e.willUnmount})))}function He(e,t,n,r){let i=xe(e),s=xe(t.views),o=function(e,t){let n,r={};for(n in e)Ie(n,r,e,t);for(n in t)Ie(n,r,e,t);return r}(i,s);return M(o,(e=>function(e,t,n,r,i){let s=e.overrides.duration||e.defaults.duration||r.duration||n.duration,o=null,l="",c="",u={};if(s&&(o=function(e){let t=JSON.stringify(e),n=Ve[t];void 0===n&&(n=a(e),Ve[t]=n);return n}(s),o)){let e=W(o);l=e.unit,1===e.value&&(c=l,u=t[l]?t[l].rawOptions:{})}let d=t=>{let n=t.buttonText||{},r=e.defaults.buttonTextKey;return null!=r&&null!=n[r]?n[r]:null!=n[e.type]?n[e.type]:null!=n[c]?n[c]:null},p=t=>{let n=t.buttonHints||{},r=e.defaults.buttonTextKey;return null!=r&&null!=n[r]?n[r]:null!=n[e.type]?n[e.type]:null!=n[c]?n[c]:null};return{type:e.type,component:e.component,duration:o,durationUnit:l,singleUnit:c,optionDefaults:e.defaults,optionOverrides:Object.assign(Object.assign({},u),e.overrides),buttonTextOverride:d(r)||d(n)||e.overrides.buttonText,buttonTextDefault:d(i)||e.defaults.buttonText||d(H)||e.type,buttonTitleOverride:p(r)||p(n)||e.overrides.buttonHint,buttonTitleDefault:p(i)||e.defaults.buttonHint||p(H)}}(e,s,t,n,r)))}ye.prototype.classes={root:"fc-theme-standard",tableCellShaded:"fc-cell-shaded",buttonGroup:"fc-button-group",button:"fc-button fc-button-primary",buttonActive:"fc-button-active"},ye.prototype.baseIconClass="fc-icon",ye.prototype.iconClasses={close:"fc-icon-x",prev:"fc-icon-chevron-left",next:"fc-icon-chevron-right",prevYear:"fc-icon-chevrons-left",nextYear:"fc-icon-chevrons-right"},ye.prototype.rtlIconClasses={prev:"fc-icon-chevron-right",next:"fc-icon-chevron-left",prevYear:"fc-icon-chevrons-right",nextYear:"fc-icon-chevrons-left"},ye.prototype.iconOverrideOption="buttonIcons",ye.prototype.iconOverrideCustomButtonOption="icon",ye.prototype.iconOverridePrefix="fc-icon-";let Ve={};function ke(e,t,n){let r=t?t.activeRange:null;return Ne({},function(e,t){let n=z(t),r=[].concat(e.eventSources||[]),i=[];e.initialEvents&&r.unshift(e.initialEvents);e.events&&r.unshift(e.events);for(let e of r){let r=Z(e,t,n);r&&i.push(r)}return i}(e,n),r,n)}function je(e,t,n,r){let i=n?n.activeRange:null;switch(t.type){case"ADD_EVENT_SOURCES":return Ne(e,t.sources,i,r);case"REMOVE_EVENT_SOURCE":return s=e,a=t.sourceId,B(s,(e=>e.sourceId!==a));case"PREV":case"NEXT":case"CHANGE_DATE":case"CHANGE_VIEW_TYPE":return n?_e(e,i,r):e;case"FETCH_EVENT_SOURCES":return Le(e,t.sourceIds?c(t.sourceIds):Ue(e,r),i,t.isRefetch||!1,r);case"RECEIVE_EVENTS":case"RECEIVE_EVENT_ERROR":return function(e,t,n,r){let i=e[t];if(i&&n===i.latestFetchId)return Object.assign(Object.assign({},e),{[t]:Object.assign(Object.assign({},i),{isFetching:!1,fetchRange:r})});return e}(e,t.sourceId,t.fetchId,t.fetchRange);case"REMOVE_ALL_EVENT_SOURCES":return{};default:return e}var s,a}function Me(e){for(let t in e)if(e[t].isFetching)return!0;return!1}function Ne(e,t,n,r){let i={};for(let e of t)i[e.sourceId]=e;return n&&(i=_e(i,n,r)),Object.assign(Object.assign({},e),i)}function _e(e,t,n){return Le(e,B(e,(e=>function(e,t,n){if(!Ge(e,n))return!e.latestFetchId;return!n.options.lazyFetching||!e.fetchRange||e.isFetching||t.start<e.fetchRange.start||t.end>e.fetchRange.end}(e,t,n))),t,!1,n)}function Le(e,t,n,r,i){let s={};for(let a in e){let o=e[a];t[a]?s[a]=Fe(o,n,r,i):s[a]=o}return s}function Fe(t,n,r,i){let{options:s,calendarApi:a}=i,o=i.pluginHooks.eventSourceDefs[t.sourceDefId],l=e();return o.fetch({eventSource:t,range:n,isRefetch:r,context:i},(e=>{let{rawEvents:r}=e;s.eventSourceSuccess&&(r=s.eventSourceSuccess.call(a,r,e.response)||r),t.success&&(r=t.success.call(a,r,e.response)||r),i.dispatch({type:"RECEIVE_EVENTS",sourceId:t.sourceId,fetchId:l,fetchRange:n,rawEvents:r})}),(e=>{let r=!1;s.eventSourceFailure&&(s.eventSourceFailure.call(a,e),r=!0),t.failure&&(t.failure(e),r=!0),r||console.warn(e.message,e),i.dispatch({type:"RECEIVE_EVENT_ERROR",sourceId:t.sourceId,fetchId:l,fetchRange:n,error:e})})),Object.assign(Object.assign({},t),{isFetching:!0,latestFetchId:l})}function Ue(e,t){return B(e,(e=>Ge(e,t)))}function Ge(e,t){return!t.pluginHooks.eventSourceDefs[e.sourceDefId].ignoreRange}function We(e,t){switch(t.type){case"UNSELECT_DATES":return null;case"SELECT_DATES":return t.selection;default:return e}}function Be(e,t){switch(t.type){case"UNSELECT_EVENT":return"";case"SELECT_EVENT":return t.eventInstanceId;default:return e}}function ze(e,t){let n;switch(t.type){case"UNSET_EVENT_DRAG":return null;case"SET_EVENT_DRAG":return n=t.state,{affectedEvents:n.affectedEvents,mutatedEvents:n.mutatedEvents,isEvent:n.isEvent};default:return e}}function Ze(e,t){let n;switch(t.type){case"UNSET_EVENT_RESIZE":return null;case"SET_EVENT_RESIZE":return n=t.state,{affectedEvents:n.affectedEvents,mutatedEvents:n.mutatedEvents,isEvent:n.isEvent};default:return e}}function qe(e,t,n,r,i){return{header:e.headerToolbar?$e(e.headerToolbar,e,t,n,r,i):null,footer:e.footerToolbar?$e(e.footerToolbar,e,t,n,r,i):null}}function $e(e,t,n,r,i,s){let a={},o=[],l=!1;for(let c in e){let u=Ye(e[c],t,n,r,i,s);a[c]=u.widgets,o.push(...u.viewsWithButtons),l=l||u.hasTitle}return{sectionWidgets:a,viewsWithButtons:o,hasTitle:l}}function Ye(e,t,n,r,i,s){let a="rtl"===t.direction,o=t.customButtons||{},l=n.buttonText||{},c=t.buttonText||{},u=n.buttonHints||{},d=t.buttonHints||{},p=e?e.split(" "):[],h=[],f=!1;return{widgets:p.map((e=>e.split(",").map((e=>{if("title"===e)return f=!0,{buttonName:e};let n,p,v,g,m,b;if(n=o[e])v=e=>{n.click&&n.click.call(e.target,e,e.target)},(g=r.getCustomButtonIconClass(n))||(g=r.getIconClass(e,a))||(m=n.text),b=n.hint||n.text;else if(p=i[e]){h.push(e),v=()=>{s.changeView(e)},(m=p.buttonTextOverride)||(g=r.getIconClass(e,a))||(m=p.buttonTextDefault);let n=p.buttonTextOverride||p.buttonTextDefault;b=q(p.buttonTitleOverride||p.buttonTitleDefault||t.viewHint,[n,e],n)}else if(s[e])if(v=()=>{s[e]()},(m=l[e])||(g=r.getIconClass(e,a))||(m=c[e]),"prevYear"===e||"nextYear"===e){let t="prevYear"===e?"prev":"next";b=q(u[t]||d[t],[c.year||"year","year"],c[e])}else b=t=>q(u[e]||d[e],[c[t]||t,t],c[e]);return{buttonName:e,buttonClick:v,buttonIcon:g,buttonText:m,buttonHint:b}})))),viewsWithButtons:h,hasTitle:f}}class Xe{constructor(e,t,n){this.type=e,this.getCurrentData=t,this.dateEnv=n}get calendar(){return this.getCurrentData().calendarApi}get title(){return this.getCurrentData().viewTitle}get activeStart(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start)}get activeEnd(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end)}get currentStart(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start)}get currentEnd(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end)}getOption(e){return this.getCurrentData().options[e]}}const Je=De({name:"array-event-source",eventSourceDefs:[{ignoreRange:!0,parseMeta:e=>Array.isArray(e.events)?e.events:null,fetch(e,t){t({rawEvents:e.eventSource.meta})}}]});const Ke=De({name:"func-event-source",eventSourceDefs:[{parseMeta:e=>"function"==typeof e.events?e.events:null,fetch(e,t,i){const{dateEnv:s}=e.context,a=e.eventSource.meta;n(a.bind(null,r(e.range,s)),(e=>t({rawEvents:e})),i)}}]});const Qe=De({name:"json-event-source",eventSourceRefiners:{method:String,extraParams:i,startParam:String,endParam:String,timeZoneParam:String},eventSourceDefs:[{parseMeta:e=>!e.url||"json"!==e.format&&e.format?null:{url:e.url,format:"json",method:(e.method||"GET").toUpperCase(),extraParams:e.extraParams,startParam:e.startParam,endParam:e.endParam,timeZoneParam:e.timeZoneParam},fetch(e,t,n){const{meta:r}=e.eventSource,i=function(e,t,n){let r,i,s,a,{dateEnv:o,options:l}=n,c={};r=e.startParam,null==r&&(r=l.startParam);i=e.endParam,null==i&&(i=l.endParam);s=e.timeZoneParam,null==s&&(s=l.timeZoneParam);a="function"==typeof e.extraParams?e.extraParams():e.extraParams||{};Object.assign(c,a),c[r]=o.formatIso(t.start),c[i]=o.formatIso(t.end),"local"!==o.timeZone&&(c[s]=o.timeZone);return c}(r,e.range,e.context);s(r.method,r.url,i).then((([e,n])=>{t({rawEvents:e,response:n})}),n)}}]});const et={daysOfWeek:i,startTime:a,endTime:a,duration:a,startRecur:i,endRecur:i};function tt(e,n){let r=t(n.getCurrentData().eventSources);if(1===r.length&&1===e.length&&Array.isArray(r[0]._raw)&&Array.isArray(e[0]))return void n.dispatch({type:"RESET_RAW_EVENTS",sourceId:r[0].sourceId,rawEvents:e[0]});let i=[];for(let t of e){let e=!1;for(let n=0;n<r.length;n+=1)if(r[n]._raw===t){r.splice(n,1),e=!0;break}e||i.push(t)}for(let e of r)n.dispatch({type:"REMOVE_EVENT_SOURCE",sourceId:e.sourceId});for(let e of i)n.calendarApi.addEventSource(e)}const nt=[Je,Ke,Qe,De({name:"simple-recurring-event",recurringTypes:[{parse(e,t){if(e.daysOfWeek||e.startTime||e.endTime||e.startRecur||e.endRecur){let n,r={daysOfWeek:e.daysOfWeek||null,startTime:e.startTime||null,endTime:e.endTime||null,startRecur:e.startRecur?t.createMarker(e.startRecur):null,endRecur:e.endRecur?t.createMarker(e.endRecur):null,dateEnv:t};return e.duration&&(n=e.duration),!n&&e.startTime&&e.endTime&&(n=o(e.endTime,e.startTime)),{allDayGuess:Boolean(!e.startTime&&!e.endTime),duration:n,typeData:r}}return null},expand(e,t,n){let r=l(t,{start:e.startRecur,end:e.endRecur});return r?function(e,t,n,r,i){let s=e?c(e):null,a=u(i.start),o=i.end,l=[];for(;a<o;){let e;s&&!s[a.getUTCDay()]||(e=t?r.add(a,t):a,l.push(r.createMarker(n.toDate(e)))),a=d(a,1)}return l}(e.daysOfWeek,e.startTime,e.dateEnv,n,r):[]}}],eventRefiners:et}),De({name:"change-handler",optionChangeHandlers:{events(e,t){tt([e],t)},eventSources:tt}}),De({name:"misc",isLoadingFuncs:[e=>Me(e.eventSources)],propSetHandlers:{dateProfile:function(e,t){t.emitter.trigger("datesSet",Object.assign(Object.assign({},r(e.activeRange,t.dateEnv)),{view:t.viewApi}))},eventStore:function(e,t){let{emitter:n}=t;n.hasHandlers("eventsSet")&&n.trigger("eventsSet",p(e,t))}}})];class rt{constructor(e,t){this.runTaskOption=e,this.drainedOption=t,this.queue=[],this.delayedRunner=new g(this.drain.bind(this))}request(e,t){this.queue.push(e),this.delayedRunner.request(t)}pause(e){this.delayedRunner.pause(e)}resume(e,t){this.delayedRunner.resume(e,t)}drain(){let{queue:e}=this;for(;e.length;){let t,n=[];for(;t=e.shift();)this.runTask(t),n.push(t);this.drained(n)}}runTask(e){this.runTaskOption&&this.runTaskOption(e)}drained(e){this.drainedOption&&this.drainedOption(e)}}function it(e,t,n){let r;return r=/^(year|month)$/.test(e.currentRangeUnit)?e.currentRange:e.activeRange,n.formatRange(r.start,r.end,$(t.titleFormat||function(e){let{currentRangeUnit:t}=e;if("year"===t)return{year:"numeric"};if("month"===t)return{year:"numeric",month:"long"};let n=Y(e.currentRange.start,e.currentRange.end);if(null!==n&&n>1)return{year:"numeric",month:"short",day:"numeric"};return{year:"numeric",month:"long",day:"numeric"}}(e)),{isEndExclusive:e.isRangeAllDay,defaultSeparator:t.titleRangeSeparator})}class st{constructor(){this.resetListeners=new Set}handleInput(e,t){const n=this.dateEnv;if(e!==n&&("function"==typeof t?this.nowFn=t:n||(this.nowAnchorDate=e.toDate(t?e.createMarker(t):e.createNowMarker()),this.nowAnchorQueried=Date.now()),this.dateEnv=e,n))for(const e of this.resetListeners.values())e()}getDateMarker(){return this.nowAnchorDate?this.dateEnv.timestampToMarker(this.nowAnchorDate.valueOf()+(Date.now()-this.nowAnchorQueried)):this.dateEnv.createMarker(this.nowFn())}addResetListener(e){this.resetListeners.add(e)}removeResetListener(e){this.resetListeners.delete(e)}}class at{constructor(e){this.computeCurrentViewData=w(this._computeCurrentViewData),this.organizeRawLocales=w(Re),this.buildLocale=w(Oe),this.buildPluginHooks=Se(),this.buildDateEnv=w(ot),this.buildTheme=w(lt),this.parseToolbars=w(qe),this.buildViewSpecs=w(He),this.buildDateProfileGenerator=E(ct),this.buildViewApi=w(ut),this.buildViewUiProps=E(ht),this.buildEventUiBySource=w(dt,R),this.buildEventUiBases=w(pt),this.parseContextBusinessHours=E(vt),this.buildTitle=w(it),this.nowManager=new st,this.emitter=new O,this.actionRunner=new rt(this._handleAction.bind(this),this.updateData.bind(this)),this.currentCalendarOptionsInput={},this.currentCalendarOptionsRefined={},this.currentViewOptionsInput={},this.currentViewOptionsRefined={},this.currentCalendarOptionsRefiners={},this.optionsForRefining=[],this.optionsForHandling=[],this.getCurrentData=()=>this.data,this.dispatch=e=>{this.actionRunner.request(e)},this.props=e,this.actionRunner.pause(),this.nowManager=new st;let t={},n=this.computeOptionsData(e.optionOverrides,t,e.calendarApi),r=n.calendarOptions.initialView||n.pluginHooks.initialView,i=this.computeCurrentViewData(r,n,e.optionOverrides,t);e.calendarApi.currentDataManager=this,this.emitter.setThisContext(e.calendarApi),this.emitter.setOptions(i.options);let s={nowManager:this.nowManager,dateEnv:n.dateEnv,options:n.calendarOptions,pluginHooks:n.pluginHooks,calendarApi:e.calendarApi,dispatch:this.dispatch,emitter:this.emitter,getCurrentData:this.getCurrentData},a=function(e,t,n){let r=e.initialDate;return null!=r?t.createMarker(r):n.getDateMarker()}(n.calendarOptions,n.dateEnv,this.nowManager),o=i.dateProfileGenerator.build(a);T(o.activeRange,a)||(a=o.currentRange.start);for(let e of n.pluginHooks.contextInit)e(s);let l=ke(n.calendarOptions,o,s),c={dynamicOptionOverrides:t,currentViewType:r,currentDate:a,dateProfile:o,businessHours:this.parseContextBusinessHours(s),eventSources:l,eventUiBases:{},eventStore:D(),renderableEventStore:D(),dateSelection:null,eventSelection:"",eventDrag:null,eventResize:null,selectionConfig:this.buildViewUiProps(s).selectionConfig},u=Object.assign(Object.assign({},s),c);for(let e of n.pluginHooks.reducers)Object.assign(c,e(null,null,u));ft(c,s)&&this.emitter.trigger("loading",!0),this.state=c,this.updateData(),this.actionRunner.resume()}resetOptions(e,t){let{props:n}=this;void 0===t?n.optionOverrides=e:(n.optionOverrides=Object.assign(Object.assign({},n.optionOverrides||{}),e),this.optionsForRefining.push(...t)),(void 0===t||t.length)&&this.actionRunner.request({type:"NOTHING"})}_handleAction(e){let{props:t,state:n,emitter:r}=this,i=function(e,t){return"SET_OPTION"===t.type?Object.assign(Object.assign({},e),{[t.optionName]:t.rawOptionValue}):e}(n.dynamicOptionOverrides,e),s=this.computeOptionsData(t.optionOverrides,i,t.calendarApi),a=function(e,t){"CHANGE_VIEW_TYPE"===t.type&&(e=t.viewType);return e}(n.currentViewType,e),o=this.computeCurrentViewData(a,s,t.optionOverrides,i);t.calendarApi.currentDataManager=this,r.setThisContext(t.calendarApi),r.setOptions(o.options);let l={nowManager:this.nowManager,dateEnv:s.dateEnv,options:s.calendarOptions,pluginHooks:s.pluginHooks,calendarApi:t.calendarApi,dispatch:this.dispatch,emitter:r,getCurrentData:this.getCurrentData},{currentDate:c,dateProfile:u}=n;this.data&&this.data.dateProfileGenerator!==o.dateProfileGenerator&&(u=o.dateProfileGenerator.build(c)),c=function(e,t){return"CHANGE_DATE"===t.type?t.dateMarker:e}(c,e),u=function(e,t,n,r){let i;switch(t.type){case"CHANGE_VIEW_TYPE":return r.build(t.dateMarker||n);case"CHANGE_DATE":return r.build(t.dateMarker);case"PREV":if(i=r.buildPrev(e,n),i.isValid)return i;break;case"NEXT":if(i=r.buildNext(e,n),i.isValid)return i}return e}(u,e,c,o.dateProfileGenerator),"PREV"!==e.type&&"NEXT"!==e.type&&T(u.currentRange,c)||(c=u.currentRange.start);let d=je(n.eventSources,e,u,l),p=S(n.eventStore,e,d,u,l),h=Me(d)&&!o.options.progressiveEventRendering&&n.renderableEventStore||p,{eventUiSingleBase:f,selectionConfig:v}=this.buildViewUiProps(l),g=this.buildEventUiBySource(d),m={dynamicOptionOverrides:i,currentViewType:a,currentDate:c,dateProfile:u,eventSources:d,eventStore:p,renderableEventStore:h,selectionConfig:v,eventUiBases:this.buildEventUiBases(h.defs,f,g),businessHours:this.parseContextBusinessHours(l),dateSelection:We(n.dateSelection,e),eventSelection:Be(n.eventSelection,e),eventDrag:ze(n.eventDrag,e),eventResize:Ze(n.eventResize,e)},b=Object.assign(Object.assign({},l),m);for(let t of s.pluginHooks.reducers)Object.assign(m,t(n,e,b));let w=ft(n,l),E=ft(m,l);!w&&E?r.trigger("loading",!0):w&&!E&&r.trigger("loading",!1),this.state=m,t.onAction&&t.onAction(e)}updateData(){let{props:e,state:t}=this,n=this.data,r=this.computeOptionsData(e.optionOverrides,t.dynamicOptionOverrides,e.calendarApi),i=this.computeCurrentViewData(t.currentViewType,r,e.optionOverrides,t.dynamicOptionOverrides),s=this.data=Object.assign(Object.assign(Object.assign({nowManager:this.nowManager,viewTitle:this.buildTitle(t.dateProfile,i.options,r.dateEnv),calendarApi:e.calendarApi,dispatch:this.dispatch,emitter:this.emitter,getCurrentData:this.getCurrentData},r),i),t),a=r.pluginHooks.optionChangeHandlers,o=n&&n.calendarOptions,l=r.calendarOptions;if(o&&o!==l){o.timeZone!==l.timeZone&&(t.eventSources=s.eventSources=function(e,t,n){let r=t?t.activeRange:null;return Le(e,Ue(e,n),r,!0,n)}(s.eventSources,t.dateProfile,s),t.eventStore=s.eventStore=C(s.eventStore,n.dateEnv,s.dateEnv),t.renderableEventStore=s.renderableEventStore=C(s.renderableEventStore,n.dateEnv,s.dateEnv));for(let e in a)-1===this.optionsForHandling.indexOf(e)&&o[e]===l[e]||a[e](l[e],s)}this.optionsForHandling=[],e.onData&&e.onData(s)}computeOptionsData(e,t,n){if(!this.optionsForRefining.length&&e===this.stableOptionOverrides&&t===this.stableDynamicOptionOverrides)return this.stableCalendarOptionsData;let{refinedOptions:r,pluginHooks:i,localeDefaults:s,availableLocaleData:a,extra:o}=this.processRawCalendarOptions(e,t);gt(o);let l=this.buildDateEnv(r.timeZone,r.locale,r.weekNumberCalculation,r.firstDay,r.weekText,i,a,r.defaultRangeSeparator),c=this.buildViewSpecs(i.views,this.stableOptionOverrides,this.stableDynamicOptionOverrides,s),u=this.buildTheme(r,i),d=this.parseToolbars(r,this.stableOptionOverrides,u,c,n);return this.stableCalendarOptionsData={calendarOptions:r,pluginHooks:i,dateEnv:l,viewSpecs:c,theme:u,toolbarConfig:d,localeDefaults:s,availableRawLocales:a.map}}processRawCalendarOptions(e,t){let{locales:n,locale:r}=y([H,e,t]),i=this.organizeRawLocales(n),s=i.map,a=this.buildLocale(r||i.defaultCode,s).options,o=this.buildPluginHooks(e.plugins||[],nt),l=this.currentCalendarOptionsRefiners=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},I),x),A),o.listenerRefiners),o.optionRefiners),c={},u=y([H,a,e,t]),d={},p=this.currentCalendarOptionsInput,h=this.currentCalendarOptionsRefined,f=!1;for(let e in u)-1===this.optionsForRefining.indexOf(e)&&(u[e]===p[e]||P[e]&&e in p&&P[e](p[e],u[e]))?d[e]=h[e]:l[e]?(d[e]=l[e](u[e]),f=!0):c[e]=p[e];return f&&(this.currentCalendarOptionsInput=u,this.currentCalendarOptionsRefined=d,this.stableOptionOverrides=e,this.stableDynamicOptionOverrides=t),this.optionsForHandling.push(...this.optionsForRefining),this.optionsForRefining=[],{rawOptions:this.currentCalendarOptionsInput,refinedOptions:this.currentCalendarOptionsRefined,pluginHooks:o,availableLocaleData:i,localeDefaults:a,extra:c}}_computeCurrentViewData(e,t,n,r){let i=t.viewSpecs[e];if(!i)throw new Error(`viewType "${e}" is not available. Please make sure you've loaded all neccessary plugins`);let{refinedOptions:s,extra:a}=this.processRawViewOptions(i,t.pluginHooks,t.localeDefaults,n,r);return gt(a),this.nowManager.handleInput(t.dateEnv,s.now),{viewSpec:i,options:s,dateProfileGenerator:this.buildDateProfileGenerator({dateProfileGeneratorClass:i.optionDefaults.dateProfileGeneratorClass,nowManager:this.nowManager,duration:i.duration,durationUnit:i.durationUnit,usesMinMaxTime:i.optionDefaults.usesMinMaxTime,dateEnv:t.dateEnv,calendarApi:this.props.calendarApi,slotMinTime:s.slotMinTime,slotMaxTime:s.slotMaxTime,showNonCurrentDates:s.showNonCurrentDates,dayCount:s.dayCount,dateAlignment:s.dateAlignment,dateIncrement:s.dateIncrement,hiddenDays:s.hiddenDays,weekends:s.weekends,validRangeInput:s.validRange,visibleRangeInput:s.visibleRange,fixedWeekCount:s.fixedWeekCount}),viewApi:this.buildViewApi(e,this.getCurrentData,t.dateEnv)}}processRawViewOptions(e,t,n,r,i){let s=y([H,e.optionDefaults,n,r,e.optionOverrides,i]),a=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},I),x),A),V),t.listenerRefiners),t.optionRefiners),o={},l=this.currentViewOptionsInput,c=this.currentViewOptionsRefined,u=!1,d={};for(let e in s)s[e]===l[e]||P[e]&&P[e](s[e],l[e])?o[e]=c[e]:(s[e]===this.currentCalendarOptionsInput[e]||P[e]&&P[e](s[e],this.currentCalendarOptionsInput[e])?e in this.currentCalendarOptionsRefined&&(o[e]=this.currentCalendarOptionsRefined[e]):a[e]?o[e]=a[e](s[e]):d[e]=s[e],u=!0);return u&&(this.currentViewOptionsInput=s,this.currentViewOptionsRefined=o),{rawOptions:this.currentViewOptionsInput,refinedOptions:this.currentViewOptionsRefined,extra:d}}}function ot(e,t,n,r,i,s,a,o){let l=Oe(t||a.defaultCode,a.map);return new k({calendarSystem:"gregory",timeZone:e,namedTimeZoneImpl:s.namedTimeZonedImpl,locale:l,weekNumberCalculation:n,firstDay:r,weekText:i,cmdFormatter:s.cmdFormatter,defaultSeparator:o})}function lt(e,t){return new(t.themeClasses[e.themeSystem]||ye)(e)}function ct(e){return new(e.dateProfileGeneratorClass||j)(e)}function ut(e,t,n){return new Xe(e,t,n)}function dt(e){return M(e,(e=>e.ui))}function pt(e,t,n){let r={"":t};for(let t in e){let i=e[t];i.sourceId&&n[i.sourceId]&&(r[t]=n[i.sourceId])}return r}function ht(e){let{options:t}=e;return{eventUiSingleBase:N({display:t.eventDisplay,editable:t.editable,startEditable:t.eventStartEditable,durationEditable:t.eventDurationEditable,constraint:t.eventConstraint,overlap:"boolean"==typeof t.eventOverlap?t.eventOverlap:void 0,allow:t.eventAllow,backgroundColor:t.eventBackgroundColor,borderColor:t.eventBorderColor,textColor:t.eventTextColor,color:t.eventColor},e),selectionConfig:N({constraint:t.selectConstraint,overlap:"boolean"==typeof t.selectOverlap?t.selectOverlap:void 0,allow:t.selectAllow},e)}}function ft(e,t){for(let n of t.pluginHooks.isLoadingFuncs)if(n(e))return!0;return!1}function vt(e){return _(e.options.businessHours,e)}function gt(e,t){for(let n in e)console.warn(`Unknown option '${n}'`+(t?` for view '${t}'`:""))}class mt extends re{render(){let e=this.props.widgetGroups.map((e=>this.renderWidgetGroup(e)));return ve("div",{className:"fc-toolbar-chunk"},...e)}renderWidgetGroup(e){let{props:t}=this,{theme:n}=this.context,r=[],i=!0;for(let s of e){let{buttonName:e,buttonClick:a,buttonText:o,buttonIcon:l,buttonHint:c}=s;if("title"===e)i=!1,r.push(ve("h2",{className:"fc-toolbar-title",id:t.titleId},t.title));else{let i=e===t.activeButton,s=!t.isTodayEnabled&&"today"===e||!t.isPrevEnabled&&"prev"===e||!t.isNextEnabled&&"next"===e,u=[`fc-${e}-button`,n.getClass("button")];i&&u.push(n.getClass("buttonActive")),r.push(ve("button",{type:"button",title:"function"==typeof c?c(t.navUnit):c,disabled:s,"aria-pressed":i,className:u.join(" "),onClick:a},o||(l?ve("span",{className:l,role:"img"}):"")))}}if(r.length>1){let e=i&&n.getClass("buttonGroup")||"";return ve("div",{className:e},...r)}return r[0]}}class bt extends re{render(){let e,t,{model:n,extraClassName:r}=this.props,i=!1,s=n.sectionWidgets,a=s.center;return s.left?(i=!0,e=s.left):e=s.start,s.right?(i=!0,t=s.right):t=s.end,ve("div",{className:[r||"","fc-toolbar",i?"fc-toolbar-ltr":""].join(" ")},this.renderSection("start",e||[]),this.renderSection("center",a||[]),this.renderSection("end",t||[]))}renderSection(e,t){let{props:n}=this;return ve(mt,{key:e,widgetGroups:t,title:n.title,navUnit:n.navUnit,activeButton:n.activeButton,isTodayEnabled:n.isTodayEnabled,isPrevEnabled:n.isPrevEnabled,isNextEnabled:n.isNextEnabled,titleId:n.titleId})}}class wt extends re{constructor(){super(...arguments),this.state={availableWidth:null},this.handleEl=e=>{this.el=e,oe(this.props.elRef,e),this.updateAvailableWidth()},this.handleResize=()=>{this.updateAvailableWidth()}}render(){let{props:e,state:t}=this,{aspectRatio:n}=e,r=["fc-view-harness",n||e.liquid||e.height?"fc-view-harness-active":"fc-view-harness-passive"],i="",s="";return n?null!==t.availableWidth?i=t.availableWidth/n:s=1/n*100+"%":i=e.height||"",ve("div",{"aria-labelledby":e.labeledById,ref:this.handleEl,className:r.join(" "),style:{height:i,paddingBottom:s}},e.children)}componentDidMount(){this.context.addResizeHandler(this.handleResize)}componentWillUnmount(){this.context.removeResizeHandler(this.handleResize)}updateAvailableWidth(){this.el&&this.props.aspectRatio&&this.setState({availableWidth:this.el.offsetWidth})}}class Et extends le{constructor(e){super(e),this.handleSegClick=(e,t)=>{let{component:n}=this,{context:r}=n,i=ce(t);if(i&&n.isValidSegDownEl(e.target)){let s=ue(e.target,".fc-event-forced-url"),a=s?s.querySelector("a[href]").href:"";r.emitter.trigger("eventClick",{el:t,event:new de(n.context,i.eventRange.def,i.eventRange.instance),jsEvent:e,view:r.viewApi}),a&&!e.defaultPrevented&&(window.location.href=a)}},this.destroy=pe(e.el,"click",".fc-event",this.handleSegClick)}}class Rt extends le{constructor(e){super(e),this.handleEventElRemove=e=>{e===this.currentSegEl&&this.handleSegLeave(null,this.currentSegEl)},this.handleSegEnter=(e,t)=>{ce(t)&&(this.currentSegEl=t,this.triggerEvent("eventMouseEnter",e,t))},this.handleSegLeave=(e,t)=>{this.currentSegEl&&(this.currentSegEl=null,this.triggerEvent("eventMouseLeave",e,t))},this.removeHoverListeners=he(e.el,".fc-event",this.handleSegEnter,this.handleSegLeave)}destroy(){this.removeHoverListeners()}triggerEvent(e,t,n){let{component:r}=this,{context:i}=r,s=ce(n);t&&!r.isValidSegDownEl(t.target)||i.emitter.trigger(e,{el:n,event:new de(i,s.eventRange.def,s.eventRange.instance),jsEvent:t,view:i.viewApi})}}class Ot extends X{constructor(){super(...arguments),this.buildViewContext=w(J),this.buildViewPropTransformers=w(Dt),this.buildToolbarProps=w(Tt),this.headerRef=ge(),this.footerRef=ge(),this.interactionsStore={},this.state={viewLabelId:K()},this.registerInteractiveComponent=(e,t)=>{let n=Q(e,t),r=[Et,Rt].concat(this.props.pluginHooks.componentInteractions).map((e=>new e(n)));this.interactionsStore[e.uid]=r,ee[e.uid]=n},this.unregisterInteractiveComponent=e=>{let t=this.interactionsStore[e.uid];if(t){for(let e of t)e.destroy();delete this.interactionsStore[e.uid]}delete ee[e.uid]},this.resizeRunner=new g((()=>{this.props.emitter.trigger("_resize",!0),this.props.emitter.trigger("windowResize",{view:this.props.viewApi})})),this.handleWindowResize=e=>{let{options:t}=this.props;t.handleWindowResize&&e.target===window&&this.resizeRunner.request(t.windowResizeDelay)}}render(){let e,{props:t}=this,{toolbarConfig:n,options:r}=t,i=!1,s="";t.isHeightAuto||t.forPrint?s="":null!=r.height?i=!0:null!=r.contentHeight?s=r.contentHeight:e=Math.max(r.aspectRatio,.5);let a=this.buildViewContext(t.viewSpec,t.viewApi,t.options,t.dateProfileGenerator,t.dateEnv,t.nowManager,t.theme,t.pluginHooks,t.dispatch,t.getCurrentData,t.emitter,t.calendarApi,this.registerInteractiveComponent,this.unregisterInteractiveComponent),o=n.header&&n.header.hasTitle?this.state.viewLabelId:void 0;return ve(ne.Provider,{value:a},ve(te,{unit:"day"},(r=>{let a=this.buildToolbarProps(t.viewSpec,t.dateProfile,t.dateProfileGenerator,t.currentDate,r,t.viewTitle);return ve(me,null,n.header&&ve(bt,Object.assign({ref:this.headerRef,extraClassName:"fc-header-toolbar",model:n.header,titleId:o},a)),ve(wt,{liquid:i,height:s,aspectRatio:e,labeledById:o},this.renderView(t),this.buildAppendContent()),n.footer&&ve(bt,Object.assign({ref:this.footerRef,extraClassName:"fc-footer-toolbar",model:n.footer,titleId:""},a)))})))}componentDidMount(){let{props:e}=this;this.calendarInteractions=e.pluginHooks.calendarInteractions.map((t=>new t(e))),window.addEventListener("resize",this.handleWindowResize);let{propSetHandlers:t}=e.pluginHooks;for(let n in t)t[n](e[n],e)}componentDidUpdate(e){let{props:t}=this,{propSetHandlers:n}=t.pluginHooks;for(let r in n)t[r]!==e[r]&&n[r](t[r],t)}componentWillUnmount(){window.removeEventListener("resize",this.handleWindowResize),this.resizeRunner.clear();for(let e of this.calendarInteractions)e.destroy();this.props.emitter.trigger("_unmount")}buildAppendContent(){let{props:e}=this,t=e.pluginHooks.viewContainerAppends.map((t=>t(e)));return ve(me,{},...t)}renderView(e){let{pluginHooks:t}=e,{viewSpec:n}=e,r={dateProfile:e.dateProfile,businessHours:e.businessHours,eventStore:e.renderableEventStore,eventUiBases:e.eventUiBases,dateSelection:e.dateSelection,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,isHeightAuto:e.isHeightAuto,forPrint:e.forPrint},i=this.buildViewPropTransformers(t.viewPropsTransformers);for(let t of i)Object.assign(r,t.transform(r,e));let s=n.component;return ve(s,Object.assign({},r))}}function Tt(e,t,n,r,i,s){let a=n.build(i,void 0,!1),o=n.buildPrev(t,r,!1),l=n.buildNext(t,r,!1);return{title:s,activeButton:e.type,navUnit:e.singleUnit,isTodayEnabled:a.isValid&&!T(t.currentRange,i),isPrevEnabled:o.isValid,isNextEnabled:l.isValid}}function Dt(e){return e.map((e=>new e))}class St extends h{constructor(e,t={}){super(),this.isRendering=!1,this.isRendered=!1,this.currentClassNames=[],this.customContentRenderId=0,this.handleAction=e=>{switch(e.type){case"SET_EVENT_DRAG":case"SET_EVENT_RESIZE":this.renderRunner.tryDrain()}},this.handleData=e=>{this.currentData=e,this.renderRunner.request(e.calendarOptions.rerenderDelay)},this.handleRenderRequest=()=>{if(this.isRendering){this.isRendered=!0;let{currentData:e}=this;f((()=>{fe(ve(F,{options:e.calendarOptions,theme:e.theme,emitter:e.emitter},((t,n,r,i)=>(this.setClassNames(t),this.setHeight(n),ve(L.Provider,{value:this.customContentRenderId},ve(Ot,Object.assign({isHeightAuto:r,forPrint:i},e)))))),this.el)}))}else this.isRendered&&(this.isRendered=!1,fe(null,this.el),this.setClassNames([]),this.setHeight(""))},v(e),this.el=e,this.renderRunner=new g(this.handleRenderRequest),new at({optionOverrides:t,calendarApi:this,onAction:this.handleAction,onData:this.handleData})}render(){let e=this.isRendering;e?this.customContentRenderId+=1:this.isRendering=!0,this.renderRunner.request(),e&&this.updateSize()}destroy(){this.isRendering&&(this.isRendering=!1,this.renderRunner.request())}updateSize(){f((()=>{super.updateSize()}))}batchRendering(e){this.renderRunner.pause("batchRendering"),e(),this.renderRunner.resume("batchRendering")}pauseRendering(){this.renderRunner.pause("pauseRendering")}resumeRendering(){this.renderRunner.resume("pauseRendering",!0)}resetOptions(e,t){this.currentDataManager.resetOptions(e,t)}setClassNames(e){if(!m(e,this.currentClassNames)){let{classList:t}=this.el;for(let e of this.currentClassNames)t.remove(e);for(let n of e)t.add(n);this.currentClassNames=e}}setHeight(e){b(this.el,"height",e)}}export{St as Calendar,De as createPlugin,be as globalLocales,nt as globalPlugins};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../node_modules/@fullcalendar/core/index.js"],"sourcesContent":["import { m as mergeProps, g as guid, i as isArraysEqual, T as Theme, a as mapHash, B as BaseComponent, V as ViewContextType, C as ContentContainer, b as buildViewClassNames, c as greatestDurationDenominator, d as createDuration, e as BASE_OPTION_DEFAULTS, f as arrayToHash, h as filterHash, j as buildEventSourceRefiners, p as parseEventSource, k as formatWithOrdinals, u as unpromisify, l as buildRangeApiWithTimeZone, n as identity, r as requestJson, s as subtractDurations, o as intersectRanges, q as startOfDay, t as addDays, v as hashValuesToArray, w as buildEventApis, D as DelayedRunner, x as createFormatter, y as diffWholeDays, z as memoize, A as memoizeObjArg, E as isPropsEqual, F as Emitter, G as rangeContainsMarker, H as createEmptyEventStore, I as reduceEventStore, J as rezoneEventStoreDates, K as mergeRawOptions, L as BASE_OPTION_REFINERS, M as CALENDAR_LISTENER_REFINERS, N as CALENDAR_OPTION_REFINERS, O as COMPLEX_OPTION_COMPARATORS, P as VIEW_OPTION_REFINERS, Q as DateEnv, R as DateProfileGenerator, S as createEventUi, U as parseBusinessHours, W as setRef, X as Interaction, Y as getElSeg, Z as elementClosest, _ as EventImpl, $ as listenBySelector, a0 as listenToHoverBySelector, a1 as PureComponent, a2 as buildViewContext, a3 as getUniqueDomId, a4 as parseInteractionSettings, a5 as interactionSettingsStore, a6 as NowTimer, a7 as CalendarImpl, a8 as flushSync, a9 as CalendarRoot, aa as RenderId, ab as ensureElHasStyles, ac as applyStyleProp, ad as sliceEventStore } from './internal-common.js';\nexport { ae as JsonRequestError } from './internal-common.js';\nimport { createElement, createRef, Fragment, render } from 'preact';\nimport 'preact/compat';\n\nconst globalLocales = [];\n\nconst MINIMAL_RAW_EN_LOCALE = {\n code: 'en',\n week: {\n dow: 0,\n doy: 4, // 4 days need to be within the year to be considered the first week\n },\n direction: 'ltr',\n buttonText: {\n prev: 'prev',\n next: 'next',\n prevYear: 'prev year',\n nextYear: 'next year',\n year: 'year',\n today: 'today',\n month: 'month',\n week: 'week',\n day: 'day',\n list: 'list',\n },\n weekText: 'W',\n weekTextLong: 'Week',\n closeHint: 'Close',\n timeHint: 'Time',\n eventHint: 'Event',\n allDayText: 'all-day',\n moreLinkText: 'more',\n noEventsText: 'No events to display',\n};\nconst RAW_EN_LOCALE = Object.assign(Object.assign({}, MINIMAL_RAW_EN_LOCALE), { \n // Includes things we don't want other locales to inherit,\n // things that derive from other translatable strings.\n buttonHints: {\n prev: 'Previous $0',\n next: 'Next $0',\n today(buttonText, unit) {\n return (unit === 'day')\n ? 'Today'\n : `This ${buttonText}`;\n },\n }, viewHint: '$0 view', navLinkHint: 'Go to $0', moreLinkHint(eventCnt) {\n return `Show ${eventCnt} more event${eventCnt === 1 ? '' : 's'}`;\n } });\nfunction organizeRawLocales(explicitRawLocales) {\n let defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en';\n let allRawLocales = globalLocales.concat(explicitRawLocales);\n let rawLocaleMap = {\n en: RAW_EN_LOCALE,\n };\n for (let rawLocale of allRawLocales) {\n rawLocaleMap[rawLocale.code] = rawLocale;\n }\n return {\n map: rawLocaleMap,\n defaultCode,\n };\n}\nfunction buildLocale(inputSingular, available) {\n if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) {\n return parseLocale(inputSingular.code, [inputSingular.code], inputSingular);\n }\n return queryLocale(inputSingular, available);\n}\nfunction queryLocale(codeArg, available) {\n let codes = [].concat(codeArg || []); // will convert to array\n let raw = queryRawLocale(codes, available) || RAW_EN_LOCALE;\n return parseLocale(codeArg, codes, raw);\n}\nfunction queryRawLocale(codes, available) {\n for (let i = 0; i < codes.length; i += 1) {\n let parts = codes[i].toLocaleLowerCase().split('-');\n for (let j = parts.length; j > 0; j -= 1) {\n let simpleId = parts.slice(0, j).join('-');\n if (available[simpleId]) {\n return available[simpleId];\n }\n }\n }\n return null;\n}\nfunction parseLocale(codeArg, codes, raw) {\n let merged = mergeProps([MINIMAL_RAW_EN_LOCALE, raw], ['buttonText']);\n delete merged.code; // don't want this part of the options\n let { week } = merged;\n delete merged.week;\n return {\n codeArg,\n codes,\n week,\n simpleNumberFormat: new Intl.NumberFormat(codeArg),\n options: merged,\n };\n}\n\n// TODO: easier way to add new hooks? need to update a million things\nfunction createPlugin(input) {\n return {\n id: guid(),\n name: input.name,\n premiumReleaseDate: input.premiumReleaseDate ? new Date(input.premiumReleaseDate) : undefined,\n deps: input.deps || [],\n reducers: input.reducers || [],\n isLoadingFuncs: input.isLoadingFuncs || [],\n contextInit: [].concat(input.contextInit || []),\n eventRefiners: input.eventRefiners || {},\n eventDefMemberAdders: input.eventDefMemberAdders || [],\n eventSourceRefiners: input.eventSourceRefiners || {},\n isDraggableTransformers: input.isDraggableTransformers || [],\n eventDragMutationMassagers: input.eventDragMutationMassagers || [],\n eventDefMutationAppliers: input.eventDefMutationAppliers || [],\n dateSelectionTransformers: input.dateSelectionTransformers || [],\n datePointTransforms: input.datePointTransforms || [],\n dateSpanTransforms: input.dateSpanTransforms || [],\n views: input.views || {},\n viewPropsTransformers: input.viewPropsTransformers || [],\n isPropsValid: input.isPropsValid || null,\n externalDefTransforms: input.externalDefTransforms || [],\n viewContainerAppends: input.viewContainerAppends || [],\n eventDropTransformers: input.eventDropTransformers || [],\n componentInteractions: input.componentInteractions || [],\n calendarInteractions: input.calendarInteractions || [],\n themeClasses: input.themeClasses || {},\n eventSourceDefs: input.eventSourceDefs || [],\n cmdFormatter: input.cmdFormatter,\n recurringTypes: input.recurringTypes || [],\n namedTimeZonedImpl: input.namedTimeZonedImpl,\n initialView: input.initialView || '',\n elementDraggingImpl: input.elementDraggingImpl,\n optionChangeHandlers: input.optionChangeHandlers || {},\n scrollGridImpl: input.scrollGridImpl || null,\n listenerRefiners: input.listenerRefiners || {},\n optionRefiners: input.optionRefiners || {},\n propSetHandlers: input.propSetHandlers || {},\n };\n}\nfunction buildPluginHooks(pluginDefs, globalDefs) {\n let currentPluginIds = {};\n let hooks = {\n premiumReleaseDate: undefined,\n reducers: [],\n isLoadingFuncs: [],\n contextInit: [],\n eventRefiners: {},\n eventDefMemberAdders: [],\n eventSourceRefiners: {},\n isDraggableTransformers: [],\n eventDragMutationMassagers: [],\n eventDefMutationAppliers: [],\n dateSelectionTransformers: [],\n datePointTransforms: [],\n dateSpanTransforms: [],\n views: {},\n viewPropsTransformers: [],\n isPropsValid: null,\n externalDefTransforms: [],\n viewContainerAppends: [],\n eventDropTransformers: [],\n componentInteractions: [],\n calendarInteractions: [],\n themeClasses: {},\n eventSourceDefs: [],\n cmdFormatter: null,\n recurringTypes: [],\n namedTimeZonedImpl: null,\n initialView: '',\n elementDraggingImpl: null,\n optionChangeHandlers: {},\n scrollGridImpl: null,\n listenerRefiners: {},\n optionRefiners: {},\n propSetHandlers: {},\n };\n function addDefs(defs) {\n for (let def of defs) {\n const pluginName = def.name;\n const currentId = currentPluginIds[pluginName];\n if (currentId === undefined) {\n currentPluginIds[pluginName] = def.id;\n addDefs(def.deps);\n hooks = combineHooks(hooks, def);\n }\n else if (currentId !== def.id) {\n // different ID than the one already added\n console.warn(`Duplicate plugin '${pluginName}'`);\n }\n }\n }\n if (pluginDefs) {\n addDefs(pluginDefs);\n }\n addDefs(globalDefs);\n return hooks;\n}\nfunction buildBuildPluginHooks() {\n let currentOverrideDefs = [];\n let currentGlobalDefs = [];\n let currentHooks;\n return (overrideDefs, globalDefs) => {\n if (!currentHooks || !isArraysEqual(overrideDefs, currentOverrideDefs) || !isArraysEqual(globalDefs, currentGlobalDefs)) {\n currentHooks = buildPluginHooks(overrideDefs, globalDefs);\n }\n currentOverrideDefs = overrideDefs;\n currentGlobalDefs = globalDefs;\n return currentHooks;\n };\n}\nfunction combineHooks(hooks0, hooks1) {\n return {\n premiumReleaseDate: compareOptionalDates(hooks0.premiumReleaseDate, hooks1.premiumReleaseDate),\n reducers: hooks0.reducers.concat(hooks1.reducers),\n isLoadingFuncs: hooks0.isLoadingFuncs.concat(hooks1.isLoadingFuncs),\n contextInit: hooks0.contextInit.concat(hooks1.contextInit),\n eventRefiners: Object.assign(Object.assign({}, hooks0.eventRefiners), hooks1.eventRefiners),\n eventDefMemberAdders: hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders),\n eventSourceRefiners: Object.assign(Object.assign({}, hooks0.eventSourceRefiners), hooks1.eventSourceRefiners),\n isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),\n eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),\n eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),\n dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),\n datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms),\n dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),\n views: Object.assign(Object.assign({}, hooks0.views), hooks1.views),\n viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),\n isPropsValid: hooks1.isPropsValid || hooks0.isPropsValid,\n externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),\n viewContainerAppends: hooks0.viewContainerAppends.concat(hooks1.viewContainerAppends),\n eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),\n calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions),\n componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions),\n themeClasses: Object.assign(Object.assign({}, hooks0.themeClasses), hooks1.themeClasses),\n eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),\n cmdFormatter: hooks1.cmdFormatter || hooks0.cmdFormatter,\n recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes),\n namedTimeZonedImpl: hooks1.namedTimeZonedImpl || hooks0.namedTimeZonedImpl,\n initialView: hooks0.initialView || hooks1.initialView,\n elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl,\n optionChangeHandlers: Object.assign(Object.assign({}, hooks0.optionChangeHandlers), hooks1.optionChangeHandlers),\n scrollGridImpl: hooks1.scrollGridImpl || hooks0.scrollGridImpl,\n listenerRefiners: Object.assign(Object.assign({}, hooks0.listenerRefiners), hooks1.listenerRefiners),\n optionRefiners: Object.assign(Object.assign({}, hooks0.optionRefiners), hooks1.optionRefiners),\n propSetHandlers: Object.assign(Object.assign({}, hooks0.propSetHandlers), hooks1.propSetHandlers),\n };\n}\nfunction compareOptionalDates(date0, date1) {\n if (date0 === undefined) {\n return date1;\n }\n if (date1 === undefined) {\n return date0;\n }\n return new Date(Math.max(date0.valueOf(), date1.valueOf()));\n}\n\nclass StandardTheme extends Theme {\n}\nStandardTheme.prototype.classes = {\n root: 'fc-theme-standard',\n tableCellShaded: 'fc-cell-shaded',\n buttonGroup: 'fc-button-group',\n button: 'fc-button fc-button-primary',\n buttonActive: 'fc-button-active',\n};\nStandardTheme.prototype.baseIconClass = 'fc-icon';\nStandardTheme.prototype.iconClasses = {\n close: 'fc-icon-x',\n prev: 'fc-icon-chevron-left',\n next: 'fc-icon-chevron-right',\n prevYear: 'fc-icon-chevrons-left',\n nextYear: 'fc-icon-chevrons-right',\n};\nStandardTheme.prototype.rtlIconClasses = {\n prev: 'fc-icon-chevron-right',\n next: 'fc-icon-chevron-left',\n prevYear: 'fc-icon-chevrons-right',\n nextYear: 'fc-icon-chevrons-left',\n};\nStandardTheme.prototype.iconOverrideOption = 'buttonIcons'; // TODO: make TS-friendly\nStandardTheme.prototype.iconOverrideCustomButtonOption = 'icon';\nStandardTheme.prototype.iconOverridePrefix = 'fc-icon-';\n\nfunction compileViewDefs(defaultConfigs, overrideConfigs) {\n let hash = {};\n let viewType;\n for (viewType in defaultConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n for (viewType in overrideConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n return hash;\n}\nfunction ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n if (hash[viewType]) {\n return hash[viewType];\n }\n let viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n if (viewDef) {\n hash[viewType] = viewDef;\n }\n return viewDef;\n}\nfunction buildViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n let defaultConfig = defaultConfigs[viewType];\n let overrideConfig = overrideConfigs[viewType];\n let queryProp = (name) => ((defaultConfig && defaultConfig[name] !== null) ? defaultConfig[name] :\n ((overrideConfig && overrideConfig[name] !== null) ? overrideConfig[name] : null));\n let theComponent = queryProp('component');\n let superType = queryProp('superType');\n let superDef = null;\n if (superType) {\n if (superType === viewType) {\n throw new Error('Can\\'t have a custom view type that references itself');\n }\n superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs);\n }\n if (!theComponent && superDef) {\n theComponent = superDef.component;\n }\n if (!theComponent) {\n return null; // don't throw a warning, might be settings for a single-unit view\n }\n return {\n type: viewType,\n component: theComponent,\n defaults: Object.assign(Object.assign({}, (superDef ? superDef.defaults : {})), (defaultConfig ? defaultConfig.rawOptions : {})),\n overrides: Object.assign(Object.assign({}, (superDef ? superDef.overrides : {})), (overrideConfig ? overrideConfig.rawOptions : {})),\n };\n}\n\nfunction parseViewConfigs(inputs) {\n return mapHash(inputs, parseViewConfig);\n}\nfunction parseViewConfig(input) {\n let rawOptions = typeof input === 'function' ?\n { component: input } :\n input;\n let { component } = rawOptions;\n if (rawOptions.content) {\n // TODO: remove content/classNames/didMount/etc from options?\n component = createViewHookComponent(rawOptions);\n }\n else if (component && !(component.prototype instanceof BaseComponent)) {\n // WHY?: people were using `component` property for `content`\n // TODO: converge on one setting name\n component = createViewHookComponent(Object.assign(Object.assign({}, rawOptions), { content: component }));\n }\n return {\n superType: rawOptions.type,\n component: component,\n rawOptions, // includes type and component too :(\n };\n}\nfunction createViewHookComponent(options) {\n return (viewProps) => (createElement(ViewContextType.Consumer, null, (context) => (createElement(ContentContainer, { elTag: \"div\", elClasses: buildViewClassNames(context.viewSpec), renderProps: Object.assign(Object.assign({}, viewProps), { nextDayThreshold: context.options.nextDayThreshold }), generatorName: undefined, customGenerator: options.content, classNameGenerator: options.classNames, didMount: options.didMount, willUnmount: options.willUnmount }))));\n}\n\nfunction buildViewSpecs(defaultInputs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n let defaultConfigs = parseViewConfigs(defaultInputs);\n let overrideConfigs = parseViewConfigs(optionOverrides.views);\n let viewDefs = compileViewDefs(defaultConfigs, overrideConfigs);\n return mapHash(viewDefs, (viewDef) => buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults));\n}\nfunction buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n let durationInput = viewDef.overrides.duration ||\n viewDef.defaults.duration ||\n dynamicOptionOverrides.duration ||\n optionOverrides.duration;\n let duration = null;\n let durationUnit = '';\n let singleUnit = '';\n let singleUnitOverrides = {};\n if (durationInput) {\n duration = createDurationCached(durationInput);\n if (duration) { // valid?\n let denom = greatestDurationDenominator(duration);\n durationUnit = denom.unit;\n if (denom.value === 1) {\n singleUnit = durationUnit;\n singleUnitOverrides = overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].rawOptions : {};\n }\n }\n }\n let queryButtonText = (optionsSubset) => {\n let buttonTextMap = optionsSubset.buttonText || {};\n let buttonTextKey = viewDef.defaults.buttonTextKey;\n if (buttonTextKey != null && buttonTextMap[buttonTextKey] != null) {\n return buttonTextMap[buttonTextKey];\n }\n if (buttonTextMap[viewDef.type] != null) {\n return buttonTextMap[viewDef.type];\n }\n if (buttonTextMap[singleUnit] != null) {\n return buttonTextMap[singleUnit];\n }\n return null;\n };\n let queryButtonTitle = (optionsSubset) => {\n let buttonHints = optionsSubset.buttonHints || {};\n let buttonKey = viewDef.defaults.buttonTextKey; // use same key as text\n if (buttonKey != null && buttonHints[buttonKey] != null) {\n return buttonHints[buttonKey];\n }\n if (buttonHints[viewDef.type] != null) {\n return buttonHints[viewDef.type];\n }\n if (buttonHints[singleUnit] != null) {\n return buttonHints[singleUnit];\n }\n return null;\n };\n return {\n type: viewDef.type,\n component: viewDef.component,\n duration,\n durationUnit,\n singleUnit,\n optionDefaults: viewDef.defaults,\n optionOverrides: Object.assign(Object.assign({}, singleUnitOverrides), viewDef.overrides),\n buttonTextOverride: queryButtonText(dynamicOptionOverrides) ||\n queryButtonText(optionOverrides) || // constructor-specified buttonText lookup hash takes precedence\n viewDef.overrides.buttonText,\n buttonTextDefault: queryButtonText(localeDefaults) ||\n viewDef.defaults.buttonText ||\n queryButtonText(BASE_OPTION_DEFAULTS) ||\n viewDef.type,\n // not DRY\n buttonTitleOverride: queryButtonTitle(dynamicOptionOverrides) ||\n queryButtonTitle(optionOverrides) ||\n viewDef.overrides.buttonHint,\n buttonTitleDefault: queryButtonTitle(localeDefaults) ||\n viewDef.defaults.buttonHint ||\n queryButtonTitle(BASE_OPTION_DEFAULTS),\n // will eventually fall back to buttonText\n };\n}\n// hack to get memoization working\nlet durationInputMap = {};\nfunction createDurationCached(durationInput) {\n let json = JSON.stringify(durationInput);\n let res = durationInputMap[json];\n if (res === undefined) {\n res = createDuration(durationInput);\n durationInputMap[json] = res;\n }\n return res;\n}\n\nfunction reduceViewType(viewType, action) {\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n viewType = action.viewType;\n }\n return viewType;\n}\n\nfunction reduceCurrentDate(currentDate, action) {\n switch (action.type) {\n case 'CHANGE_DATE':\n return action.dateMarker;\n default:\n return currentDate;\n }\n}\n// should be initialized once and stay constant\n// this will change too\nfunction getInitialDate(options, dateEnv, nowManager) {\n let initialDateInput = options.initialDate;\n // compute the initial ambig-timezone date\n if (initialDateInput != null) {\n return dateEnv.createMarker(initialDateInput);\n }\n return nowManager.getDateMarker();\n}\n\nfunction reduceDynamicOptionOverrides(dynamicOptionOverrides, action) {\n switch (action.type) {\n case 'SET_OPTION':\n return Object.assign(Object.assign({}, dynamicOptionOverrides), { [action.optionName]: action.rawOptionValue });\n default:\n return dynamicOptionOverrides;\n }\n}\n\nfunction reduceDateProfile(currentDateProfile, action, currentDate, dateProfileGenerator) {\n let dp;\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n return dateProfileGenerator.build(action.dateMarker || currentDate);\n case 'CHANGE_DATE':\n return dateProfileGenerator.build(action.dateMarker);\n case 'PREV':\n dp = dateProfileGenerator.buildPrev(currentDateProfile, currentDate);\n if (dp.isValid) {\n return dp;\n }\n break;\n case 'NEXT':\n dp = dateProfileGenerator.buildNext(currentDateProfile, currentDate);\n if (dp.isValid) {\n return dp;\n }\n break;\n }\n return currentDateProfile;\n}\n\nfunction initEventSources(calendarOptions, dateProfile, context) {\n let activeRange = dateProfile ? dateProfile.activeRange : null;\n return addSources({}, parseInitialSources(calendarOptions, context), activeRange, context);\n}\nfunction reduceEventSources(eventSources, action, dateProfile, context) {\n let activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n switch (action.type) {\n case 'ADD_EVENT_SOURCES': // already parsed\n return addSources(eventSources, action.sources, activeRange, context);\n case 'REMOVE_EVENT_SOURCE':\n return removeSource(eventSources, action.sourceId);\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n case 'NEXT':\n case 'CHANGE_DATE':\n case 'CHANGE_VIEW_TYPE':\n if (dateProfile) {\n return fetchDirtySources(eventSources, activeRange, context);\n }\n return eventSources;\n case 'FETCH_EVENT_SOURCES':\n return fetchSourcesByIds(eventSources, action.sourceIds ? // why no type?\n arrayToHash(action.sourceIds) :\n excludeStaticSources(eventSources, context), activeRange, action.isRefetch || false, context);\n case 'RECEIVE_EVENTS':\n case 'RECEIVE_EVENT_ERROR':\n return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange);\n case 'REMOVE_ALL_EVENT_SOURCES':\n return {};\n default:\n return eventSources;\n }\n}\nfunction reduceEventSourcesNewTimeZone(eventSources, dateProfile, context) {\n let activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n return fetchSourcesByIds(eventSources, excludeStaticSources(eventSources, context), activeRange, true, context);\n}\nfunction computeEventSourcesLoading(eventSources) {\n for (let sourceId in eventSources) {\n if (eventSources[sourceId].isFetching) {\n return true;\n }\n }\n return false;\n}\nfunction addSources(eventSourceHash, sources, fetchRange, context) {\n let hash = {};\n for (let source of sources) {\n hash[source.sourceId] = source;\n }\n if (fetchRange) {\n hash = fetchDirtySources(hash, fetchRange, context);\n }\n return Object.assign(Object.assign({}, eventSourceHash), hash);\n}\nfunction removeSource(eventSourceHash, sourceId) {\n return filterHash(eventSourceHash, (eventSource) => eventSource.sourceId !== sourceId);\n}\nfunction fetchDirtySources(sourceHash, fetchRange, context) {\n return fetchSourcesByIds(sourceHash, filterHash(sourceHash, (eventSource) => isSourceDirty(eventSource, fetchRange, context)), fetchRange, false, context);\n}\nfunction isSourceDirty(eventSource, fetchRange, context) {\n if (!doesSourceNeedRange(eventSource, context)) {\n return !eventSource.latestFetchId;\n }\n return !context.options.lazyFetching ||\n !eventSource.fetchRange ||\n eventSource.isFetching || // always cancel outdated in-progress fetches\n fetchRange.start < eventSource.fetchRange.start ||\n fetchRange.end > eventSource.fetchRange.end;\n}\nfunction fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, isRefetch, context) {\n let nextSources = {};\n for (let sourceId in prevSources) {\n let source = prevSources[sourceId];\n if (sourceIdHash[sourceId]) {\n nextSources[sourceId] = fetchSource(source, fetchRange, isRefetch, context);\n }\n else {\n nextSources[sourceId] = source;\n }\n }\n return nextSources;\n}\nfunction fetchSource(eventSource, fetchRange, isRefetch, context) {\n let { options, calendarApi } = context;\n let sourceDef = context.pluginHooks.eventSourceDefs[eventSource.sourceDefId];\n let fetchId = guid();\n sourceDef.fetch({\n eventSource,\n range: fetchRange,\n isRefetch,\n context,\n }, (res) => {\n let { rawEvents } = res;\n if (options.eventSourceSuccess) {\n rawEvents = options.eventSourceSuccess.call(calendarApi, rawEvents, res.response) || rawEvents;\n }\n if (eventSource.success) {\n rawEvents = eventSource.success.call(calendarApi, rawEvents, res.response) || rawEvents;\n }\n context.dispatch({\n type: 'RECEIVE_EVENTS',\n sourceId: eventSource.sourceId,\n fetchId,\n fetchRange,\n rawEvents,\n });\n }, (error) => {\n let errorHandled = false;\n if (options.eventSourceFailure) {\n options.eventSourceFailure.call(calendarApi, error);\n errorHandled = true;\n }\n if (eventSource.failure) {\n eventSource.failure(error);\n errorHandled = true;\n }\n if (!errorHandled) {\n console.warn(error.message, error);\n }\n context.dispatch({\n type: 'RECEIVE_EVENT_ERROR',\n sourceId: eventSource.sourceId,\n fetchId,\n fetchRange,\n error,\n });\n });\n return Object.assign(Object.assign({}, eventSource), { isFetching: true, latestFetchId: fetchId });\n}\nfunction receiveResponse(sourceHash, sourceId, fetchId, fetchRange) {\n let eventSource = sourceHash[sourceId];\n if (eventSource && // not already removed\n fetchId === eventSource.latestFetchId) {\n return Object.assign(Object.assign({}, sourceHash), { [sourceId]: Object.assign(Object.assign({}, eventSource), { isFetching: false, fetchRange }) });\n }\n return sourceHash;\n}\nfunction excludeStaticSources(eventSources, context) {\n return filterHash(eventSources, (eventSource) => doesSourceNeedRange(eventSource, context));\n}\nfunction parseInitialSources(rawOptions, context) {\n let refiners = buildEventSourceRefiners(context);\n let rawSources = [].concat(rawOptions.eventSources || []);\n let sources = []; // parsed\n if (rawOptions.initialEvents) {\n rawSources.unshift(rawOptions.initialEvents);\n }\n if (rawOptions.events) {\n rawSources.unshift(rawOptions.events);\n }\n for (let rawSource of rawSources) {\n let source = parseEventSource(rawSource, context, refiners);\n if (source) {\n sources.push(source);\n }\n }\n return sources;\n}\nfunction doesSourceNeedRange(eventSource, context) {\n let defs = context.pluginHooks.eventSourceDefs;\n return !defs[eventSource.sourceDefId].ignoreRange;\n}\n\nfunction reduceDateSelection(currentSelection, action) {\n switch (action.type) {\n case 'UNSELECT_DATES':\n return null;\n case 'SELECT_DATES':\n return action.selection;\n default:\n return currentSelection;\n }\n}\n\nfunction reduceSelectedEvent(currentInstanceId, action) {\n switch (action.type) {\n case 'UNSELECT_EVENT':\n return '';\n case 'SELECT_EVENT':\n return action.eventInstanceId;\n default:\n return currentInstanceId;\n }\n}\n\nfunction reduceEventDrag(currentDrag, action) {\n let newDrag;\n switch (action.type) {\n case 'UNSET_EVENT_DRAG':\n return null;\n case 'SET_EVENT_DRAG':\n newDrag = action.state;\n return {\n affectedEvents: newDrag.affectedEvents,\n mutatedEvents: newDrag.mutatedEvents,\n isEvent: newDrag.isEvent,\n };\n default:\n return currentDrag;\n }\n}\n\nfunction reduceEventResize(currentResize, action) {\n let newResize;\n switch (action.type) {\n case 'UNSET_EVENT_RESIZE':\n return null;\n case 'SET_EVENT_RESIZE':\n newResize = action.state;\n return {\n affectedEvents: newResize.affectedEvents,\n mutatedEvents: newResize.mutatedEvents,\n isEvent: newResize.isEvent,\n };\n default:\n return currentResize;\n }\n}\n\nfunction parseToolbars(calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n let header = calendarOptions.headerToolbar ? parseToolbar(calendarOptions.headerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n let footer = calendarOptions.footerToolbar ? parseToolbar(calendarOptions.footerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n return { header, footer };\n}\nfunction parseToolbar(sectionStrHash, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n let sectionWidgets = {};\n let viewsWithButtons = [];\n let hasTitle = false;\n for (let sectionName in sectionStrHash) {\n let sectionStr = sectionStrHash[sectionName];\n let sectionRes = parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi);\n sectionWidgets[sectionName] = sectionRes.widgets;\n viewsWithButtons.push(...sectionRes.viewsWithButtons);\n hasTitle = hasTitle || sectionRes.hasTitle;\n }\n return { sectionWidgets, viewsWithButtons, hasTitle };\n}\n/*\nBAD: querying icons and text here. should be done at render time\n*/\nfunction parseSection(sectionStr, calendarOptions, // defaults+overrides, then refined\ncalendarOptionOverrides, // overrides only!, unrefined :(\ntheme, viewSpecs, calendarApi) {\n let isRtl = calendarOptions.direction === 'rtl';\n let calendarCustomButtons = calendarOptions.customButtons || {};\n let calendarButtonTextOverrides = calendarOptionOverrides.buttonText || {};\n let calendarButtonText = calendarOptions.buttonText || {};\n let calendarButtonHintOverrides = calendarOptionOverrides.buttonHints || {};\n let calendarButtonHints = calendarOptions.buttonHints || {};\n let sectionSubstrs = sectionStr ? sectionStr.split(' ') : [];\n let viewsWithButtons = [];\n let hasTitle = false;\n let widgets = sectionSubstrs.map((buttonGroupStr) => (buttonGroupStr.split(',').map((buttonName) => {\n if (buttonName === 'title') {\n hasTitle = true;\n return { buttonName };\n }\n let customButtonProps;\n let viewSpec;\n let buttonClick;\n let buttonIcon; // only one of these will be set\n let buttonText; // \"\n let buttonHint;\n // ^ for the title=\"\" attribute, for accessibility\n if ((customButtonProps = calendarCustomButtons[buttonName])) {\n buttonClick = (ev) => {\n if (customButtonProps.click) {\n customButtonProps.click.call(ev.target, ev, ev.target); // TODO: use Calendar this context?\n }\n };\n (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = customButtonProps.text);\n buttonHint = customButtonProps.hint || customButtonProps.text;\n }\n else if ((viewSpec = viewSpecs[buttonName])) {\n viewsWithButtons.push(buttonName);\n buttonClick = () => {\n calendarApi.changeView(buttonName);\n };\n (buttonText = viewSpec.buttonTextOverride) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = viewSpec.buttonTextDefault);\n let textFallback = viewSpec.buttonTextOverride ||\n viewSpec.buttonTextDefault;\n buttonHint = formatWithOrdinals(viewSpec.buttonTitleOverride ||\n viewSpec.buttonTitleDefault ||\n calendarOptions.viewHint, [textFallback, buttonName], // view-name = buttonName\n textFallback);\n }\n else if (calendarApi[buttonName]) { // a calendarApi method\n buttonClick = () => {\n calendarApi[buttonName]();\n };\n (buttonText = calendarButtonTextOverrides[buttonName]) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = calendarButtonText[buttonName]); // everything else is considered default\n if (buttonName === 'prevYear' || buttonName === 'nextYear') {\n let prevOrNext = buttonName === 'prevYear' ? 'prev' : 'next';\n buttonHint = formatWithOrdinals(calendarButtonHintOverrides[prevOrNext] ||\n calendarButtonHints[prevOrNext], [\n calendarButtonText.year || 'year',\n 'year',\n ], calendarButtonText[buttonName]);\n }\n else {\n buttonHint = (navUnit) => formatWithOrdinals(calendarButtonHintOverrides[buttonName] ||\n calendarButtonHints[buttonName], [\n calendarButtonText[navUnit] || navUnit,\n navUnit,\n ], calendarButtonText[buttonName]);\n }\n }\n return { buttonName, buttonClick, buttonIcon, buttonText, buttonHint };\n })));\n return { widgets, viewsWithButtons, hasTitle };\n}\n\n// always represents the current view. otherwise, it'd need to change value every time date changes\nclass ViewImpl {\n constructor(type, getCurrentData, dateEnv) {\n this.type = type;\n this.getCurrentData = getCurrentData;\n this.dateEnv = dateEnv;\n }\n get calendar() {\n return this.getCurrentData().calendarApi;\n }\n get title() {\n return this.getCurrentData().viewTitle;\n }\n get activeStart() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start);\n }\n get activeEnd() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end);\n }\n get currentStart() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start);\n }\n get currentEnd() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end);\n }\n getOption(name) {\n return this.getCurrentData().options[name]; // are the view-specific options\n }\n}\n\nlet eventSourceDef$2 = {\n ignoreRange: true,\n parseMeta(refined) {\n if (Array.isArray(refined.events)) {\n return refined.events;\n }\n return null;\n },\n fetch(arg, successCallback) {\n successCallback({\n rawEvents: arg.eventSource.meta,\n });\n },\n};\nconst arrayEventSourcePlugin = createPlugin({\n name: 'array-event-source',\n eventSourceDefs: [eventSourceDef$2],\n});\n\nlet eventSourceDef$1 = {\n parseMeta(refined) {\n if (typeof refined.events === 'function') {\n return refined.events;\n }\n return null;\n },\n fetch(arg, successCallback, errorCallback) {\n const { dateEnv } = arg.context;\n const func = arg.eventSource.meta;\n unpromisify(func.bind(null, buildRangeApiWithTimeZone(arg.range, dateEnv)), (rawEvents) => successCallback({ rawEvents }), errorCallback);\n },\n};\nconst funcEventSourcePlugin = createPlugin({\n name: 'func-event-source',\n eventSourceDefs: [eventSourceDef$1],\n});\n\nconst JSON_FEED_EVENT_SOURCE_REFINERS = {\n method: String,\n extraParams: identity,\n startParam: String,\n endParam: String,\n timeZoneParam: String,\n};\n\nlet eventSourceDef = {\n parseMeta(refined) {\n if (refined.url && (refined.format === 'json' || !refined.format)) {\n return {\n url: refined.url,\n format: 'json',\n method: (refined.method || 'GET').toUpperCase(),\n extraParams: refined.extraParams,\n startParam: refined.startParam,\n endParam: refined.endParam,\n timeZoneParam: refined.timeZoneParam,\n };\n }\n return null;\n },\n fetch(arg, successCallback, errorCallback) {\n const { meta } = arg.eventSource;\n const requestParams = buildRequestParams(meta, arg.range, arg.context);\n requestJson(meta.method, meta.url, requestParams).then(([rawEvents, response]) => {\n successCallback({ rawEvents, response });\n }, errorCallback);\n },\n};\nconst jsonFeedEventSourcePlugin = createPlugin({\n name: 'json-event-source',\n eventSourceRefiners: JSON_FEED_EVENT_SOURCE_REFINERS,\n eventSourceDefs: [eventSourceDef],\n});\nfunction buildRequestParams(meta, range, context) {\n let { dateEnv, options } = context;\n let startParam;\n let endParam;\n let timeZoneParam;\n let customRequestParams;\n let params = {};\n startParam = meta.startParam;\n if (startParam == null) {\n startParam = options.startParam;\n }\n endParam = meta.endParam;\n if (endParam == null) {\n endParam = options.endParam;\n }\n timeZoneParam = meta.timeZoneParam;\n if (timeZoneParam == null) {\n timeZoneParam = options.timeZoneParam;\n }\n // retrieve any outbound GET/POST data from the options\n if (typeof meta.extraParams === 'function') {\n // supplied as a function that returns a key/value object\n customRequestParams = meta.extraParams();\n }\n else {\n // probably supplied as a straight key/value object\n customRequestParams = meta.extraParams || {};\n }\n Object.assign(params, customRequestParams);\n params[startParam] = dateEnv.formatIso(range.start);\n params[endParam] = dateEnv.formatIso(range.end);\n if (dateEnv.timeZone !== 'local') {\n params[timeZoneParam] = dateEnv.timeZone;\n }\n return params;\n}\n\nconst SIMPLE_RECURRING_REFINERS = {\n daysOfWeek: identity,\n startTime: createDuration,\n endTime: createDuration,\n duration: createDuration,\n startRecur: identity,\n endRecur: identity,\n};\n\nlet recurring = {\n parse(refined, dateEnv) {\n if (refined.daysOfWeek || refined.startTime || refined.endTime || refined.startRecur || refined.endRecur) {\n let recurringData = {\n daysOfWeek: refined.daysOfWeek || null,\n startTime: refined.startTime || null,\n endTime: refined.endTime || null,\n startRecur: refined.startRecur ? dateEnv.createMarker(refined.startRecur) : null,\n endRecur: refined.endRecur ? dateEnv.createMarker(refined.endRecur) : null,\n dateEnv,\n };\n let duration;\n if (refined.duration) {\n duration = refined.duration;\n }\n if (!duration && refined.startTime && refined.endTime) {\n duration = subtractDurations(refined.endTime, refined.startTime);\n }\n return {\n allDayGuess: Boolean(!refined.startTime && !refined.endTime),\n duration,\n typeData: recurringData, // doesn't need endTime anymore but oh well\n };\n }\n return null;\n },\n expand(typeData, framingRange, dateEnv) {\n let clippedFramingRange = intersectRanges(framingRange, { start: typeData.startRecur, end: typeData.endRecur });\n if (clippedFramingRange) {\n return expandRanges(typeData.daysOfWeek, typeData.startTime, typeData.dateEnv, dateEnv, clippedFramingRange);\n }\n return [];\n },\n};\nconst simpleRecurringEventsPlugin = createPlugin({\n name: 'simple-recurring-event',\n recurringTypes: [recurring],\n eventRefiners: SIMPLE_RECURRING_REFINERS,\n});\nfunction expandRanges(daysOfWeek, startTime, eventDateEnv, calendarDateEnv, framingRange) {\n let dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null;\n let dayMarker = startOfDay(framingRange.start);\n let endMarker = framingRange.end;\n let instanceStarts = [];\n while (dayMarker < endMarker) {\n let instanceStart;\n // if everyday, or this particular day-of-week\n if (!dowHash || dowHash[dayMarker.getUTCDay()]) {\n if (startTime) {\n instanceStart = calendarDateEnv.add(dayMarker, startTime);\n }\n else {\n instanceStart = dayMarker;\n }\n instanceStarts.push(calendarDateEnv.createMarker(eventDateEnv.toDate(instanceStart)));\n }\n dayMarker = addDays(dayMarker, 1);\n }\n return instanceStarts;\n}\n\nconst changeHandlerPlugin = createPlugin({\n name: 'change-handler',\n optionChangeHandlers: {\n events(events, context) {\n handleEventSources([events], context);\n },\n eventSources: handleEventSources,\n },\n});\n/*\nBUG: if `event` was supplied, all previously-given `eventSources` will be wiped out\n*/\nfunction handleEventSources(inputs, context) {\n let unfoundSources = hashValuesToArray(context.getCurrentData().eventSources);\n if (unfoundSources.length === 1 &&\n inputs.length === 1 &&\n Array.isArray(unfoundSources[0]._raw) &&\n Array.isArray(inputs[0])) {\n context.dispatch({\n type: 'RESET_RAW_EVENTS',\n sourceId: unfoundSources[0].sourceId,\n rawEvents: inputs[0],\n });\n return;\n }\n let newInputs = [];\n for (let input of inputs) {\n let inputFound = false;\n for (let i = 0; i < unfoundSources.length; i += 1) {\n if (unfoundSources[i]._raw === input) {\n unfoundSources.splice(i, 1); // delete\n inputFound = true;\n break;\n }\n }\n if (!inputFound) {\n newInputs.push(input);\n }\n }\n for (let unfoundSource of unfoundSources) {\n context.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: unfoundSource.sourceId,\n });\n }\n for (let newInput of newInputs) {\n context.calendarApi.addEventSource(newInput);\n }\n}\n\nfunction handleDateProfile(dateProfile, context) {\n context.emitter.trigger('datesSet', Object.assign(Object.assign({}, buildRangeApiWithTimeZone(dateProfile.activeRange, context.dateEnv)), { view: context.viewApi }));\n}\n\nfunction handleEventStore(eventStore, context) {\n let { emitter } = context;\n if (emitter.hasHandlers('eventsSet')) {\n emitter.trigger('eventsSet', buildEventApis(eventStore, context));\n }\n}\n\n/*\nthis array is exposed on the root namespace so that UMD plugins can add to it.\nsee the rollup-bundles script.\n*/\nconst globalPlugins = [\n arrayEventSourcePlugin,\n funcEventSourcePlugin,\n jsonFeedEventSourcePlugin,\n simpleRecurringEventsPlugin,\n changeHandlerPlugin,\n createPlugin({\n name: 'misc',\n isLoadingFuncs: [\n (state) => computeEventSourcesLoading(state.eventSources),\n ],\n propSetHandlers: {\n dateProfile: handleDateProfile,\n eventStore: handleEventStore,\n },\n }),\n];\n\nclass TaskRunner {\n constructor(runTaskOption, drainedOption) {\n this.runTaskOption = runTaskOption;\n this.drainedOption = drainedOption;\n this.queue = [];\n this.delayedRunner = new DelayedRunner(this.drain.bind(this));\n }\n request(task, delay) {\n this.queue.push(task);\n this.delayedRunner.request(delay);\n }\n pause(scope) {\n this.delayedRunner.pause(scope);\n }\n resume(scope, force) {\n this.delayedRunner.resume(scope, force);\n }\n drain() {\n let { queue } = this;\n while (queue.length) {\n let completedTasks = [];\n let task;\n while ((task = queue.shift())) {\n this.runTask(task);\n completedTasks.push(task);\n }\n this.drained(completedTasks);\n } // keep going, in case new tasks were added in the drained handler\n }\n runTask(task) {\n if (this.runTaskOption) {\n this.runTaskOption(task);\n }\n }\n drained(completedTasks) {\n if (this.drainedOption) {\n this.drainedOption(completedTasks);\n }\n }\n}\n\n// Computes what the title at the top of the calendarApi should be for this view\nfunction buildTitle(dateProfile, viewOptions, dateEnv) {\n let range;\n // for views that span a large unit of time, show the proper interval, ignoring stray days before and after\n if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) {\n range = dateProfile.currentRange;\n }\n else { // for day units or smaller, use the actual day range\n range = dateProfile.activeRange;\n }\n return dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat || buildTitleFormat(dateProfile)), {\n isEndExclusive: dateProfile.isRangeAllDay,\n defaultSeparator: viewOptions.titleRangeSeparator,\n });\n}\n// Generates the format string that should be used to generate the title for the current date range.\n// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\nfunction buildTitleFormat(dateProfile) {\n let { currentRangeUnit } = dateProfile;\n if (currentRangeUnit === 'year') {\n return { year: 'numeric' };\n }\n if (currentRangeUnit === 'month') {\n return { year: 'numeric', month: 'long' }; // like \"September 2014\"\n }\n let days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end);\n if (days !== null && days > 1) {\n // multi-day range. shorter, like \"Sep 9 - 10 2014\"\n return { year: 'numeric', month: 'short', day: 'numeric' };\n }\n // one day. longer, like \"September 9 2014\"\n return { year: 'numeric', month: 'long', day: 'numeric' };\n}\n\n/*\nTODO: test switching timezones when NO timezone plugin\n*/\nclass CalendarNowManager {\n constructor() {\n this.resetListeners = new Set();\n }\n handleInput(dateEnv, // will change if timezone setup changed\n nowInput) {\n const oldDateEnv = this.dateEnv;\n if (dateEnv !== oldDateEnv) {\n if (typeof nowInput === 'function') {\n this.nowFn = nowInput;\n }\n else if (!oldDateEnv) { // first time?\n this.nowAnchorDate = dateEnv.toDate(nowInput\n ? dateEnv.createMarker(nowInput)\n : dateEnv.createNowMarker());\n this.nowAnchorQueried = Date.now();\n }\n this.dateEnv = dateEnv;\n // not first time? fire reset handlers\n if (oldDateEnv) {\n for (const resetListener of this.resetListeners.values()) {\n resetListener();\n }\n }\n }\n }\n getDateMarker() {\n return this.nowAnchorDate\n ? this.dateEnv.timestampToMarker(this.nowAnchorDate.valueOf() +\n (Date.now() - this.nowAnchorQueried))\n : this.dateEnv.createMarker(this.nowFn());\n }\n addResetListener(handler) {\n this.resetListeners.add(handler);\n }\n removeResetListener(handler) {\n this.resetListeners.delete(handler);\n }\n}\n\n// in future refactor, do the redux-style function(state=initial) for initial-state\n// also, whatever is happening in constructor, have it happen in action queue too\nclass CalendarDataManager {\n constructor(props) {\n this.computeCurrentViewData = memoize(this._computeCurrentViewData);\n this.organizeRawLocales = memoize(organizeRawLocales);\n this.buildLocale = memoize(buildLocale);\n this.buildPluginHooks = buildBuildPluginHooks();\n this.buildDateEnv = memoize(buildDateEnv$1);\n this.buildTheme = memoize(buildTheme);\n this.parseToolbars = memoize(parseToolbars);\n this.buildViewSpecs = memoize(buildViewSpecs);\n this.buildDateProfileGenerator = memoizeObjArg(buildDateProfileGenerator);\n this.buildViewApi = memoize(buildViewApi);\n this.buildViewUiProps = memoizeObjArg(buildViewUiProps);\n this.buildEventUiBySource = memoize(buildEventUiBySource, isPropsEqual);\n this.buildEventUiBases = memoize(buildEventUiBases);\n this.parseContextBusinessHours = memoizeObjArg(parseContextBusinessHours);\n this.buildTitle = memoize(buildTitle);\n this.nowManager = new CalendarNowManager();\n this.emitter = new Emitter();\n this.actionRunner = new TaskRunner(this._handleAction.bind(this), this.updateData.bind(this));\n this.currentCalendarOptionsInput = {};\n this.currentCalendarOptionsRefined = {};\n this.currentViewOptionsInput = {};\n this.currentViewOptionsRefined = {};\n this.currentCalendarOptionsRefiners = {};\n this.optionsForRefining = [];\n this.optionsForHandling = [];\n this.getCurrentData = () => this.data;\n this.dispatch = (action) => {\n this.actionRunner.request(action); // protects against recursive calls to _handleAction\n };\n this.props = props;\n this.actionRunner.pause();\n this.nowManager = new CalendarNowManager();\n let dynamicOptionOverrides = {};\n let optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n let currentViewType = optionsData.calendarOptions.initialView || optionsData.pluginHooks.initialView;\n let currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n // wire things up\n // TODO: not DRY\n props.calendarApi.currentDataManager = this;\n this.emitter.setThisContext(props.calendarApi);\n this.emitter.setOptions(currentViewData.options);\n let calendarContext = {\n nowManager: this.nowManager,\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 let currentDate = getInitialDate(optionsData.calendarOptions, optionsData.dateEnv, this.nowManager);\n let dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n if (!rangeContainsMarker(dateProfile.activeRange, currentDate)) {\n currentDate = dateProfile.currentRange.start;\n }\n // needs to be after setThisContext\n for (let callback of optionsData.pluginHooks.contextInit) {\n callback(calendarContext);\n }\n // NOT DRY\n let eventSources = initEventSources(optionsData.calendarOptions, dateProfile, calendarContext);\n let initialState = {\n dynamicOptionOverrides,\n currentViewType,\n currentDate,\n dateProfile,\n businessHours: this.parseContextBusinessHours(calendarContext),\n eventSources,\n eventUiBases: {},\n eventStore: createEmptyEventStore(),\n renderableEventStore: createEmptyEventStore(),\n dateSelection: null,\n eventSelection: '',\n eventDrag: null,\n eventResize: null,\n selectionConfig: this.buildViewUiProps(calendarContext).selectionConfig,\n };\n let contextAndState = Object.assign(Object.assign({}, calendarContext), initialState);\n for (let reducer of optionsData.pluginHooks.reducers) {\n Object.assign(initialState, reducer(null, null, contextAndState));\n }\n if (computeIsLoading(initialState, calendarContext)) {\n this.emitter.trigger('loading', true); // NOT DRY\n }\n this.state = initialState;\n this.updateData();\n this.actionRunner.resume();\n }\n resetOptions(optionOverrides, changedOptionNames) {\n let { props } = this;\n if (changedOptionNames === undefined) {\n props.optionOverrides = optionOverrides;\n }\n else {\n props.optionOverrides = Object.assign(Object.assign({}, (props.optionOverrides || {})), optionOverrides);\n this.optionsForRefining.push(...changedOptionNames);\n }\n if (changedOptionNames === undefined || changedOptionNames.length) {\n this.actionRunner.request({\n type: 'NOTHING',\n });\n }\n }\n _handleAction(action) {\n let { props, state, emitter } = this;\n let dynamicOptionOverrides = reduceDynamicOptionOverrides(state.dynamicOptionOverrides, action);\n let optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n let currentViewType = reduceViewType(state.currentViewType, action);\n let currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n // wire things up\n // TODO: not DRY\n props.calendarApi.currentDataManager = this;\n emitter.setThisContext(props.calendarApi);\n emitter.setOptions(currentViewData.options);\n let calendarContext = {\n nowManager: this.nowManager,\n dateEnv: optionsData.dateEnv,\n options: optionsData.calendarOptions,\n pluginHooks: optionsData.pluginHooks,\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter,\n getCurrentData: this.getCurrentData,\n };\n let { currentDate, dateProfile } = state;\n if (this.data && this.data.dateProfileGenerator !== currentViewData.dateProfileGenerator) { // hack\n dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n }\n currentDate = reduceCurrentDate(currentDate, action);\n dateProfile = reduceDateProfile(dateProfile, action, currentDate, currentViewData.dateProfileGenerator);\n if (action.type === 'PREV' || // TODO: move this logic into DateProfileGenerator\n action.type === 'NEXT' || // \"\n !rangeContainsMarker(dateProfile.currentRange, currentDate)) {\n currentDate = dateProfile.currentRange.start;\n }\n let eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendarContext);\n let eventStore = reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendarContext);\n let isEventsLoading = computeEventSourcesLoading(eventSources); // BAD. also called in this func in computeIsLoading\n let renderableEventStore = (isEventsLoading && !currentViewData.options.progressiveEventRendering) ?\n (state.renderableEventStore || eventStore) : // try from previous state\n eventStore;\n let { eventUiSingleBase, selectionConfig } = this.buildViewUiProps(calendarContext); // will memoize obj\n let eventUiBySource = this.buildEventUiBySource(eventSources);\n let eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource);\n let newState = {\n dynamicOptionOverrides,\n currentViewType,\n currentDate,\n dateProfile,\n eventSources,\n eventStore,\n renderableEventStore,\n selectionConfig,\n eventUiBases,\n businessHours: this.parseContextBusinessHours(calendarContext),\n dateSelection: reduceDateSelection(state.dateSelection, action),\n eventSelection: reduceSelectedEvent(state.eventSelection, action),\n eventDrag: reduceEventDrag(state.eventDrag, action),\n eventResize: reduceEventResize(state.eventResize, action),\n };\n let contextAndState = Object.assign(Object.assign({}, calendarContext), newState);\n for (let reducer of optionsData.pluginHooks.reducers) {\n Object.assign(newState, reducer(state, action, contextAndState)); // give the OLD state, for old value\n }\n let wasLoading = computeIsLoading(state, calendarContext);\n let isLoading = computeIsLoading(newState, calendarContext);\n // TODO: use propSetHandlers in plugin system\n if (!wasLoading && isLoading) {\n emitter.trigger('loading', true);\n }\n else if (wasLoading && !isLoading) {\n emitter.trigger('loading', false);\n }\n this.state = newState;\n if (props.onAction) {\n props.onAction(action);\n }\n }\n updateData() {\n let { props, state } = this;\n let oldData = this.data;\n let optionsData = this.computeOptionsData(props.optionOverrides, state.dynamicOptionOverrides, props.calendarApi);\n let currentViewData = this.computeCurrentViewData(state.currentViewType, optionsData, props.optionOverrides, state.dynamicOptionOverrides);\n let data = this.data = Object.assign(Object.assign(Object.assign({ nowManager: this.nowManager, viewTitle: this.buildTitle(state.dateProfile, currentViewData.options, optionsData.dateEnv), calendarApi: props.calendarApi, dispatch: this.dispatch, emitter: this.emitter, getCurrentData: this.getCurrentData }, optionsData), currentViewData), state);\n let changeHandlers = optionsData.pluginHooks.optionChangeHandlers;\n let oldCalendarOptions = oldData && oldData.calendarOptions;\n let newCalendarOptions = optionsData.calendarOptions;\n if (oldCalendarOptions && oldCalendarOptions !== newCalendarOptions) {\n if (oldCalendarOptions.timeZone !== newCalendarOptions.timeZone) {\n // hack\n state.eventSources = data.eventSources = reduceEventSourcesNewTimeZone(data.eventSources, state.dateProfile, data);\n state.eventStore = data.eventStore = rezoneEventStoreDates(data.eventStore, oldData.dateEnv, data.dateEnv);\n state.renderableEventStore = data.renderableEventStore = rezoneEventStoreDates(data.renderableEventStore, oldData.dateEnv, data.dateEnv);\n }\n for (let optionName in changeHandlers) {\n if (this.optionsForHandling.indexOf(optionName) !== -1 ||\n oldCalendarOptions[optionName] !== newCalendarOptions[optionName]) {\n changeHandlers[optionName](newCalendarOptions[optionName], data);\n }\n }\n }\n this.optionsForHandling = [];\n if (props.onData) {\n props.onData(data);\n }\n }\n computeOptionsData(optionOverrides, dynamicOptionOverrides, calendarApi) {\n // TODO: blacklist options that are handled by optionChangeHandlers\n if (!this.optionsForRefining.length &&\n optionOverrides === this.stableOptionOverrides &&\n dynamicOptionOverrides === this.stableDynamicOptionOverrides) {\n return this.stableCalendarOptionsData;\n }\n let { refinedOptions, pluginHooks, localeDefaults, availableLocaleData, extra, } = this.processRawCalendarOptions(optionOverrides, dynamicOptionOverrides);\n warnUnknownOptions(extra);\n let dateEnv = this.buildDateEnv(refinedOptions.timeZone, refinedOptions.locale, refinedOptions.weekNumberCalculation, refinedOptions.firstDay, refinedOptions.weekText, pluginHooks, availableLocaleData, refinedOptions.defaultRangeSeparator);\n let viewSpecs = this.buildViewSpecs(pluginHooks.views, this.stableOptionOverrides, this.stableDynamicOptionOverrides, localeDefaults);\n let theme = this.buildTheme(refinedOptions, pluginHooks);\n let toolbarConfig = this.parseToolbars(refinedOptions, this.stableOptionOverrides, theme, viewSpecs, calendarApi);\n return this.stableCalendarOptionsData = {\n calendarOptions: refinedOptions,\n pluginHooks,\n dateEnv,\n viewSpecs,\n theme,\n toolbarConfig,\n localeDefaults,\n availableRawLocales: availableLocaleData.map,\n };\n }\n // always called from behind a memoizer\n processRawCalendarOptions(optionOverrides, dynamicOptionOverrides) {\n let { locales, locale } = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n optionOverrides,\n dynamicOptionOverrides,\n ]);\n let availableLocaleData = this.organizeRawLocales(locales);\n let availableRawLocales = availableLocaleData.map;\n let localeDefaults = this.buildLocale(locale || availableLocaleData.defaultCode, availableRawLocales).options;\n let pluginHooks = this.buildPluginHooks(optionOverrides.plugins || [], globalPlugins);\n let refiners = this.currentCalendarOptionsRefiners = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);\n let extra = {};\n let raw = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n localeDefaults,\n optionOverrides,\n dynamicOptionOverrides,\n ]);\n let refined = {};\n let currentRaw = this.currentCalendarOptionsInput;\n let currentRefined = this.currentCalendarOptionsRefined;\n let anyChanges = false;\n for (let optionName in raw) {\n if (this.optionsForRefining.indexOf(optionName) === -1 && (raw[optionName] === currentRaw[optionName] || (COMPLEX_OPTION_COMPARATORS[optionName] &&\n (optionName in currentRaw) &&\n COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName])))) {\n refined[optionName] = currentRefined[optionName];\n }\n else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName]);\n anyChanges = true;\n }\n else {\n extra[optionName] = currentRaw[optionName];\n }\n }\n if (anyChanges) {\n this.currentCalendarOptionsInput = raw;\n this.currentCalendarOptionsRefined = refined;\n this.stableOptionOverrides = optionOverrides;\n this.stableDynamicOptionOverrides = dynamicOptionOverrides;\n }\n this.optionsForHandling.push(...this.optionsForRefining);\n this.optionsForRefining = [];\n return {\n rawOptions: this.currentCalendarOptionsInput,\n refinedOptions: this.currentCalendarOptionsRefined,\n pluginHooks,\n availableLocaleData,\n localeDefaults,\n extra,\n };\n }\n _computeCurrentViewData(viewType, optionsData, optionOverrides, dynamicOptionOverrides) {\n let viewSpec = optionsData.viewSpecs[viewType];\n if (!viewSpec) {\n throw new Error(`viewType \"${viewType}\" is not available. Please make sure you've loaded all neccessary plugins`);\n }\n let { refinedOptions, extra } = this.processRawViewOptions(viewSpec, optionsData.pluginHooks, optionsData.localeDefaults, optionOverrides, dynamicOptionOverrides);\n warnUnknownOptions(extra);\n this.nowManager.handleInput(optionsData.dateEnv, refinedOptions.now);\n let dateProfileGenerator = this.buildDateProfileGenerator({\n dateProfileGeneratorClass: viewSpec.optionDefaults.dateProfileGeneratorClass,\n nowManager: this.nowManager,\n duration: viewSpec.duration,\n durationUnit: viewSpec.durationUnit,\n usesMinMaxTime: viewSpec.optionDefaults.usesMinMaxTime,\n dateEnv: optionsData.dateEnv,\n calendarApi: this.props.calendarApi,\n slotMinTime: refinedOptions.slotMinTime,\n slotMaxTime: refinedOptions.slotMaxTime,\n showNonCurrentDates: refinedOptions.showNonCurrentDates,\n dayCount: refinedOptions.dayCount,\n dateAlignment: refinedOptions.dateAlignment,\n dateIncrement: refinedOptions.dateIncrement,\n hiddenDays: refinedOptions.hiddenDays,\n weekends: refinedOptions.weekends,\n validRangeInput: refinedOptions.validRange,\n visibleRangeInput: refinedOptions.visibleRange,\n fixedWeekCount: refinedOptions.fixedWeekCount,\n });\n let viewApi = this.buildViewApi(viewType, this.getCurrentData, optionsData.dateEnv);\n return { viewSpec, options: refinedOptions, dateProfileGenerator, viewApi };\n }\n processRawViewOptions(viewSpec, pluginHooks, localeDefaults, optionOverrides, dynamicOptionOverrides) {\n let raw = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n viewSpec.optionDefaults,\n localeDefaults,\n optionOverrides,\n viewSpec.optionOverrides,\n dynamicOptionOverrides,\n ]);\n let refiners = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), VIEW_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);\n let refined = {};\n let currentRaw = this.currentViewOptionsInput;\n let currentRefined = this.currentViewOptionsRefined;\n let anyChanges = false;\n let extra = {};\n for (let optionName in raw) {\n if (raw[optionName] === currentRaw[optionName] ||\n (COMPLEX_OPTION_COMPARATORS[optionName] &&\n COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], currentRaw[optionName]))) {\n refined[optionName] = currentRefined[optionName];\n }\n else {\n if (raw[optionName] === this.currentCalendarOptionsInput[optionName] ||\n (COMPLEX_OPTION_COMPARATORS[optionName] &&\n COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], this.currentCalendarOptionsInput[optionName]))) {\n if (optionName in this.currentCalendarOptionsRefined) { // might be an \"extra\" prop\n refined[optionName] = this.currentCalendarOptionsRefined[optionName];\n }\n }\n else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName]);\n }\n else {\n extra[optionName] = raw[optionName];\n }\n anyChanges = true;\n }\n }\n if (anyChanges) {\n this.currentViewOptionsInput = raw;\n this.currentViewOptionsRefined = refined;\n }\n return {\n rawOptions: this.currentViewOptionsInput,\n refinedOptions: this.currentViewOptionsRefined,\n extra,\n };\n }\n}\nfunction buildDateEnv$1(timeZone, explicitLocale, weekNumberCalculation, firstDay, weekText, pluginHooks, availableLocaleData, defaultSeparator) {\n let locale = buildLocale(explicitLocale || availableLocaleData.defaultCode, availableLocaleData.map);\n return new DateEnv({\n calendarSystem: 'gregory',\n timeZone,\n namedTimeZoneImpl: pluginHooks.namedTimeZonedImpl,\n locale,\n weekNumberCalculation,\n firstDay,\n weekText,\n cmdFormatter: pluginHooks.cmdFormatter,\n defaultSeparator,\n });\n}\nfunction buildTheme(options, pluginHooks) {\n let ThemeClass = pluginHooks.themeClasses[options.themeSystem] || StandardTheme;\n return new ThemeClass(options);\n}\nfunction buildDateProfileGenerator(props) {\n let DateProfileGeneratorClass = props.dateProfileGeneratorClass || DateProfileGenerator;\n return new DateProfileGeneratorClass(props);\n}\nfunction buildViewApi(type, getCurrentData, dateEnv) {\n return new ViewImpl(type, getCurrentData, dateEnv);\n}\nfunction buildEventUiBySource(eventSources) {\n return mapHash(eventSources, (eventSource) => eventSource.ui);\n}\nfunction buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) {\n let eventUiBases = { '': eventUiSingleBase };\n for (let defId in eventDefs) {\n let def = eventDefs[defId];\n if (def.sourceId && eventUiBySource[def.sourceId]) {\n eventUiBases[defId] = eventUiBySource[def.sourceId];\n }\n }\n return eventUiBases;\n}\nfunction buildViewUiProps(calendarContext) {\n let { options } = calendarContext;\n return {\n eventUiSingleBase: createEventUi({\n display: options.eventDisplay,\n editable: options.editable,\n startEditable: options.eventStartEditable,\n durationEditable: options.eventDurationEditable,\n constraint: options.eventConstraint,\n overlap: typeof options.eventOverlap === 'boolean' ? options.eventOverlap : undefined,\n allow: options.eventAllow,\n backgroundColor: options.eventBackgroundColor,\n borderColor: options.eventBorderColor,\n textColor: options.eventTextColor,\n color: options.eventColor,\n // classNames: options.eventClassNames // render hook will handle this\n }, calendarContext),\n selectionConfig: createEventUi({\n constraint: options.selectConstraint,\n overlap: typeof options.selectOverlap === 'boolean' ? options.selectOverlap : undefined,\n allow: options.selectAllow,\n }, calendarContext),\n };\n}\nfunction computeIsLoading(state, context) {\n for (let isLoadingFunc of context.pluginHooks.isLoadingFuncs) {\n if (isLoadingFunc(state)) {\n return true;\n }\n }\n return false;\n}\nfunction parseContextBusinessHours(calendarContext) {\n return parseBusinessHours(calendarContext.options.businessHours, calendarContext);\n}\nfunction warnUnknownOptions(options, viewName) {\n for (let optionName in options) {\n console.warn(`Unknown option '${optionName}'` +\n (viewName ? ` for view '${viewName}'` : ''));\n }\n}\n\nclass ToolbarSection extends BaseComponent {\n render() {\n let children = this.props.widgetGroups.map((widgetGroup) => this.renderWidgetGroup(widgetGroup));\n return createElement('div', { className: 'fc-toolbar-chunk' }, ...children);\n }\n renderWidgetGroup(widgetGroup) {\n let { props } = this;\n let { theme } = this.context;\n let children = [];\n let isOnlyButtons = true;\n for (let widget of widgetGroup) {\n let { buttonName, buttonClick, buttonText, buttonIcon, buttonHint } = widget;\n if (buttonName === 'title') {\n isOnlyButtons = false;\n children.push(createElement(\"h2\", { className: \"fc-toolbar-title\", id: props.titleId }, props.title));\n }\n else {\n let isPressed = buttonName === props.activeButton;\n let isDisabled = (!props.isTodayEnabled && buttonName === 'today') ||\n (!props.isPrevEnabled && buttonName === 'prev') ||\n (!props.isNextEnabled && buttonName === 'next');\n let buttonClasses = [`fc-${buttonName}-button`, theme.getClass('button')];\n if (isPressed) {\n buttonClasses.push(theme.getClass('buttonActive'));\n }\n children.push(createElement(\"button\", { type: \"button\", title: typeof buttonHint === 'function' ? buttonHint(props.navUnit) : buttonHint, disabled: isDisabled, \"aria-pressed\": isPressed, className: buttonClasses.join(' '), onClick: buttonClick }, buttonText || (buttonIcon ? createElement(\"span\", { className: buttonIcon, role: \"img\" }) : '')));\n }\n }\n if (children.length > 1) {\n let groupClassName = (isOnlyButtons && theme.getClass('buttonGroup')) || '';\n return createElement('div', { className: groupClassName }, ...children);\n }\n return children[0];\n }\n}\n\nclass Toolbar extends BaseComponent {\n render() {\n let { model, extraClassName } = this.props;\n let forceLtr = false;\n let startContent;\n let endContent;\n let sectionWidgets = model.sectionWidgets;\n let centerContent = sectionWidgets.center;\n if (sectionWidgets.left) {\n forceLtr = true;\n startContent = sectionWidgets.left;\n }\n else {\n startContent = sectionWidgets.start;\n }\n if (sectionWidgets.right) {\n forceLtr = true;\n endContent = sectionWidgets.right;\n }\n else {\n endContent = sectionWidgets.end;\n }\n let classNames = [\n extraClassName || '',\n 'fc-toolbar',\n forceLtr ? 'fc-toolbar-ltr' : '',\n ];\n return (createElement(\"div\", { className: classNames.join(' ') },\n this.renderSection('start', startContent || []),\n this.renderSection('center', centerContent || []),\n this.renderSection('end', endContent || [])));\n }\n renderSection(key, widgetGroups) {\n let { props } = this;\n return (createElement(ToolbarSection, { key: key, widgetGroups: widgetGroups, title: props.title, navUnit: props.navUnit, activeButton: props.activeButton, isTodayEnabled: props.isTodayEnabled, isPrevEnabled: props.isPrevEnabled, isNextEnabled: props.isNextEnabled, titleId: props.titleId }));\n }\n}\n\nclass ViewHarness extends BaseComponent {\n constructor() {\n super(...arguments);\n this.state = {\n availableWidth: null,\n };\n this.handleEl = (el) => {\n this.el = el;\n setRef(this.props.elRef, el);\n this.updateAvailableWidth();\n };\n this.handleResize = () => {\n this.updateAvailableWidth();\n };\n }\n render() {\n let { props, state } = this;\n let { aspectRatio } = props;\n let classNames = [\n 'fc-view-harness',\n (aspectRatio || props.liquid || props.height)\n ? 'fc-view-harness-active' // harness controls the height\n : 'fc-view-harness-passive', // let the view do the height\n ];\n let height = '';\n let paddingBottom = '';\n if (aspectRatio) {\n if (state.availableWidth !== null) {\n height = state.availableWidth / aspectRatio;\n }\n else {\n // while waiting to know availableWidth, we can't set height to *zero*\n // because will cause lots of unnecessary scrollbars within scrollgrid.\n // BETTER: don't start rendering ANYTHING yet until we know container width\n // NOTE: why not always use paddingBottom? Causes height oscillation (issue 5606)\n paddingBottom = `${(1 / aspectRatio) * 100}%`;\n }\n }\n else {\n height = props.height || '';\n }\n return (createElement(\"div\", { \"aria-labelledby\": props.labeledById, ref: this.handleEl, className: classNames.join(' '), style: { height, paddingBottom } }, props.children));\n }\n componentDidMount() {\n this.context.addResizeHandler(this.handleResize);\n }\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleResize);\n }\n updateAvailableWidth() {\n if (this.el && // needed. but why?\n this.props.aspectRatio // aspectRatio is the only height setting that needs availableWidth\n ) {\n this.setState({ availableWidth: this.el.offsetWidth });\n }\n }\n}\n\n/*\nDetects when the user clicks on an event within a DateComponent\n*/\nclass EventClicking extends Interaction {\n constructor(settings) {\n super(settings);\n this.handleSegClick = (ev, segEl) => {\n let { component } = this;\n let { context } = component;\n let seg = getElSeg(segEl);\n if (seg && // might be the <div> surrounding the more link\n component.isValidSegDownEl(ev.target)) {\n // our way to simulate a link click for elements that can't be <a> tags\n // grab before trigger fired in case trigger trashes DOM thru rerendering\n let hasUrlContainer = elementClosest(ev.target, '.fc-event-forced-url');\n let url = hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href : '';\n context.emitter.trigger('eventClick', {\n el: segEl,\n event: new EventImpl(component.context, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: context.viewApi,\n });\n if (url && !ev.defaultPrevented) {\n window.location.href = url;\n }\n }\n };\n this.destroy = listenBySelector(settings.el, 'click', '.fc-event', // on both fg and bg events\n this.handleSegClick);\n }\n}\n\n/*\nTriggers events and adds/removes core classNames when the user's pointer\nenters/leaves event-elements of a component.\n*/\nclass EventHovering extends Interaction {\n constructor(settings) {\n super(settings);\n // for simulating an eventMouseLeave when the event el is destroyed while mouse is over it\n this.handleEventElRemove = (el) => {\n if (el === this.currentSegEl) {\n this.handleSegLeave(null, this.currentSegEl);\n }\n };\n this.handleSegEnter = (ev, segEl) => {\n if (getElSeg(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper\n this.currentSegEl = segEl;\n this.triggerEvent('eventMouseEnter', ev, segEl);\n }\n };\n this.handleSegLeave = (ev, segEl) => {\n if (this.currentSegEl) {\n this.currentSegEl = null;\n this.triggerEvent('eventMouseLeave', ev, segEl);\n }\n };\n this.removeHoverListeners = listenToHoverBySelector(settings.el, '.fc-event', // on both fg and bg events\n this.handleSegEnter, this.handleSegLeave);\n }\n destroy() {\n this.removeHoverListeners();\n }\n triggerEvent(publicEvName, ev, segEl) {\n let { component } = this;\n let { context } = component;\n let seg = getElSeg(segEl);\n if (!ev || component.isValidSegDownEl(ev.target)) {\n context.emitter.trigger(publicEvName, {\n el: segEl,\n event: new EventImpl(context, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: context.viewApi,\n });\n }\n }\n}\n\nclass CalendarContent extends PureComponent {\n constructor() {\n super(...arguments);\n this.buildViewContext = memoize(buildViewContext);\n this.buildViewPropTransformers = memoize(buildViewPropTransformers);\n this.buildToolbarProps = memoize(buildToolbarProps);\n this.headerRef = createRef();\n this.footerRef = createRef();\n this.interactionsStore = {};\n // eslint-disable-next-line\n this.state = {\n viewLabelId: getUniqueDomId(),\n };\n // Component Registration\n // -----------------------------------------------------------------------------------------------------------------\n this.registerInteractiveComponent = (component, settingsInput) => {\n let settings = parseInteractionSettings(component, settingsInput);\n let DEFAULT_INTERACTIONS = [\n EventClicking,\n EventHovering,\n ];\n let interactionClasses = DEFAULT_INTERACTIONS.concat(this.props.pluginHooks.componentInteractions);\n let interactions = interactionClasses.map((TheInteractionClass) => new TheInteractionClass(settings));\n this.interactionsStore[component.uid] = interactions;\n interactionSettingsStore[component.uid] = settings;\n };\n this.unregisterInteractiveComponent = (component) => {\n let listeners = this.interactionsStore[component.uid];\n if (listeners) {\n for (let listener of listeners) {\n listener.destroy();\n }\n delete this.interactionsStore[component.uid];\n }\n delete interactionSettingsStore[component.uid];\n };\n // Resizing\n // -----------------------------------------------------------------------------------------------------------------\n this.resizeRunner = new DelayedRunner(() => {\n this.props.emitter.trigger('_resize', true); // should window resizes be considered \"forced\" ?\n this.props.emitter.trigger('windowResize', { view: this.props.viewApi });\n });\n this.handleWindowResize = (ev) => {\n let { options } = this.props;\n if (options.handleWindowResize &&\n ev.target === window // avoid jqui events\n ) {\n this.resizeRunner.request(options.windowResizeDelay);\n }\n };\n }\n /*\n renders INSIDE of an outer div\n */\n render() {\n let { props } = this;\n let { toolbarConfig, options } = props;\n let viewVGrow = false;\n let viewHeight = '';\n let viewAspectRatio;\n if (props.isHeightAuto || props.forPrint) {\n viewHeight = '';\n }\n else if (options.height != null) {\n viewVGrow = true;\n }\n else if (options.contentHeight != null) {\n viewHeight = options.contentHeight;\n }\n else {\n viewAspectRatio = Math.max(options.aspectRatio, 0.5); // prevent from getting too tall\n }\n let viewContext = this.buildViewContext(props.viewSpec, props.viewApi, props.options, props.dateProfileGenerator, props.dateEnv, props.nowManager, props.theme, props.pluginHooks, props.dispatch, props.getCurrentData, props.emitter, props.calendarApi, this.registerInteractiveComponent, this.unregisterInteractiveComponent);\n let viewLabelId = (toolbarConfig.header && toolbarConfig.header.hasTitle)\n ? this.state.viewLabelId\n : undefined;\n return (createElement(ViewContextType.Provider, { value: viewContext },\n createElement(NowTimer, { unit: \"day\" }, (nowDate) => {\n let toolbarProps = this.buildToolbarProps(props.viewSpec, props.dateProfile, props.dateProfileGenerator, props.currentDate, nowDate, props.viewTitle);\n return (createElement(Fragment, null,\n toolbarConfig.header && (createElement(Toolbar, Object.assign({ ref: this.headerRef, extraClassName: \"fc-header-toolbar\", model: toolbarConfig.header, titleId: viewLabelId }, toolbarProps))),\n createElement(ViewHarness, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, labeledById: viewLabelId },\n this.renderView(props),\n this.buildAppendContent()),\n toolbarConfig.footer && (createElement(Toolbar, Object.assign({ ref: this.footerRef, extraClassName: \"fc-footer-toolbar\", model: toolbarConfig.footer, titleId: \"\" }, toolbarProps)))));\n })));\n }\n componentDidMount() {\n let { props } = this;\n this.calendarInteractions = props.pluginHooks.calendarInteractions\n .map((CalendarInteractionClass) => new CalendarInteractionClass(props));\n window.addEventListener('resize', this.handleWindowResize);\n let { propSetHandlers } = props.pluginHooks;\n for (let propName in propSetHandlers) {\n propSetHandlers[propName](props[propName], props);\n }\n }\n componentDidUpdate(prevProps) {\n let { props } = this;\n let { propSetHandlers } = props.pluginHooks;\n for (let propName in propSetHandlers) {\n if (props[propName] !== prevProps[propName]) {\n propSetHandlers[propName](props[propName], props);\n }\n }\n }\n componentWillUnmount() {\n window.removeEventListener('resize', this.handleWindowResize);\n this.resizeRunner.clear();\n for (let interaction of this.calendarInteractions) {\n interaction.destroy();\n }\n this.props.emitter.trigger('_unmount');\n }\n buildAppendContent() {\n let { props } = this;\n let children = props.pluginHooks.viewContainerAppends.map((buildAppendContent) => buildAppendContent(props));\n return createElement(Fragment, {}, ...children);\n }\n renderView(props) {\n let { pluginHooks } = props;\n let { viewSpec } = props;\n let viewProps = {\n dateProfile: props.dateProfile,\n businessHours: props.businessHours,\n eventStore: props.renderableEventStore,\n eventUiBases: props.eventUiBases,\n dateSelection: props.dateSelection,\n eventSelection: props.eventSelection,\n eventDrag: props.eventDrag,\n eventResize: props.eventResize,\n isHeightAuto: props.isHeightAuto,\n forPrint: props.forPrint,\n };\n let transformers = this.buildViewPropTransformers(pluginHooks.viewPropsTransformers);\n for (let transformer of transformers) {\n Object.assign(viewProps, transformer.transform(viewProps, props));\n }\n let ViewComponent = viewSpec.component;\n return (createElement(ViewComponent, Object.assign({}, viewProps)));\n }\n}\nfunction buildToolbarProps(viewSpec, dateProfile, dateProfileGenerator, currentDate, now, title) {\n // don't force any date-profiles to valid date profiles (the `false`) so that we can tell if it's invalid\n let todayInfo = dateProfileGenerator.build(now, undefined, false); // TODO: need `undefined` or else INFINITE LOOP for some reason\n let prevInfo = dateProfileGenerator.buildPrev(dateProfile, currentDate, false);\n let nextInfo = dateProfileGenerator.buildNext(dateProfile, currentDate, false);\n return {\n title,\n activeButton: viewSpec.type,\n navUnit: viewSpec.singleUnit,\n isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now),\n isPrevEnabled: prevInfo.isValid,\n isNextEnabled: nextInfo.isValid,\n };\n}\n// Plugin\n// -----------------------------------------------------------------------------------------------------------------\nfunction buildViewPropTransformers(theClasses) {\n return theClasses.map((TheClass) => new TheClass());\n}\n\nclass Calendar extends CalendarImpl {\n constructor(el, optionOverrides = {}) {\n super();\n this.isRendering = false;\n this.isRendered = false;\n this.currentClassNames = [];\n this.customContentRenderId = 0;\n this.handleAction = (action) => {\n // actions we know we want to render immediately\n switch (action.type) {\n case 'SET_EVENT_DRAG':\n case 'SET_EVENT_RESIZE':\n this.renderRunner.tryDrain();\n }\n };\n this.handleData = (data) => {\n this.currentData = data;\n this.renderRunner.request(data.calendarOptions.rerenderDelay);\n };\n this.handleRenderRequest = () => {\n if (this.isRendering) {\n this.isRendered = true;\n let { currentData } = this;\n flushSync(() => {\n render(createElement(CalendarRoot, { options: currentData.calendarOptions, theme: currentData.theme, emitter: currentData.emitter }, (classNames, height, isHeightAuto, forPrint) => {\n this.setClassNames(classNames);\n this.setHeight(height);\n return (createElement(RenderId.Provider, { value: this.customContentRenderId },\n createElement(CalendarContent, Object.assign({ isHeightAuto: isHeightAuto, forPrint: forPrint }, currentData))));\n }), this.el);\n });\n }\n else if (this.isRendered) {\n this.isRendered = false;\n render(null, this.el);\n this.setClassNames([]);\n this.setHeight('');\n }\n };\n ensureElHasStyles(el);\n this.el = el;\n this.renderRunner = new DelayedRunner(this.handleRenderRequest);\n new CalendarDataManager({\n optionOverrides,\n calendarApi: this,\n onAction: this.handleAction,\n onData: this.handleData,\n });\n }\n render() {\n let wasRendering = this.isRendering;\n if (!wasRendering) {\n this.isRendering = true;\n }\n else {\n this.customContentRenderId += 1;\n }\n this.renderRunner.request();\n if (wasRendering) {\n this.updateSize();\n }\n }\n destroy() {\n if (this.isRendering) {\n this.isRendering = false;\n this.renderRunner.request();\n }\n }\n updateSize() {\n flushSync(() => {\n super.updateSize();\n });\n }\n batchRendering(func) {\n this.renderRunner.pause('batchRendering');\n func();\n this.renderRunner.resume('batchRendering');\n }\n pauseRendering() {\n this.renderRunner.pause('pauseRendering');\n }\n resumeRendering() {\n this.renderRunner.resume('pauseRendering', true);\n }\n resetOptions(optionOverrides, changedOptionNames) {\n this.currentDataManager.resetOptions(optionOverrides, changedOptionNames);\n }\n setClassNames(classNames) {\n if (!isArraysEqual(classNames, this.currentClassNames)) {\n let { classList } = this.el;\n for (let className of this.currentClassNames) {\n classList.remove(className);\n }\n for (let className of classNames) {\n classList.add(className);\n }\n this.currentClassNames = classNames;\n }\n }\n setHeight(height) {\n applyStyleProp(this.el, 'height', height);\n }\n}\n\nfunction formatDate(dateInput, options = {}) {\n let dateEnv = buildDateEnv(options);\n let formatter = createFormatter(options);\n let dateMeta = dateEnv.createMarkerMeta(dateInput);\n if (!dateMeta) { // TODO: warning?\n return '';\n }\n return dateEnv.format(dateMeta.marker, formatter, {\n forcedTzo: dateMeta.forcedTzo,\n });\n}\nfunction formatRange(startInput, endInput, options) {\n let dateEnv = buildDateEnv(typeof options === 'object' && options ? options : {}); // pass in if non-null object\n let formatter = createFormatter(options);\n let startMeta = dateEnv.createMarkerMeta(startInput);\n let endMeta = dateEnv.createMarkerMeta(endInput);\n if (!startMeta || !endMeta) { // TODO: warning?\n return '';\n }\n return dateEnv.formatRange(startMeta.marker, endMeta.marker, formatter, {\n forcedStartTzo: startMeta.forcedTzo,\n forcedEndTzo: endMeta.forcedTzo,\n isEndExclusive: options.isEndExclusive,\n defaultSeparator: BASE_OPTION_DEFAULTS.defaultRangeSeparator,\n });\n}\n// TODO: more DRY and optimized\nfunction buildDateEnv(settings) {\n let locale = buildLocale(settings.locale || 'en', organizeRawLocales([]).map); // TODO: don't hardcode 'en' everywhere\n return new DateEnv(Object.assign(Object.assign({ timeZone: BASE_OPTION_DEFAULTS.timeZone, calendarSystem: 'gregory' }, settings), { locale }));\n}\n\n// HELPERS\n/*\nif nextDayThreshold is specified, slicing is done in an all-day fashion.\nyou can get nextDayThreshold from context.nextDayThreshold\n*/\nfunction sliceEvents(props, allDay) {\n return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;\n}\n\nconst version = '6.1.17';\n\nexport { Calendar, createPlugin, formatDate, formatRange, globalLocales, globalPlugins, sliceEvents, version };\n"],"names":["globalLocales","MINIMAL_RAW_EN_LOCALE","code","week","dow","doy","direction","buttonText","prev","next","prevYear","nextYear","year","today","month","day","list","weekText","weekTextLong","closeHint","timeHint","eventHint","allDayText","moreLinkText","noEventsText","RAW_EN_LOCALE","Object","assign","buttonHints","unit","viewHint","navLinkHint","moreLinkHint","eventCnt","organizeRawLocales","explicitRawLocales","defaultCode","length","allRawLocales","concat","rawLocaleMap","en","rawLocale","map","buildLocale","inputSingular","available","Array","isArray","codeArg","codes","raw","i","parts","toLocaleLowerCase","split","j","simpleId","slice","join","queryRawLocale","parseLocale","queryLocale","merged","mergeProps","simpleNumberFormat","Intl","NumberFormat","options","createPlugin","input","id","guid","name","premiumReleaseDate","Date","undefined","deps","reducers","isLoadingFuncs","contextInit","eventRefiners","eventDefMemberAdders","eventSourceRefiners","isDraggableTransformers","eventDragMutationMassagers","eventDefMutationAppliers","dateSelectionTransformers","datePointTransforms","dateSpanTransforms","views","viewPropsTransformers","isPropsValid","externalDefTransforms","viewContainerAppends","eventDropTransformers","componentInteractions","calendarInteractions","themeClasses","eventSourceDefs","cmdFormatter","recurringTypes","namedTimeZonedImpl","initialView","elementDraggingImpl","optionChangeHandlers","scrollGridImpl","listenerRefiners","optionRefiners","propSetHandlers","buildBuildPluginHooks","currentHooks","currentOverrideDefs","currentGlobalDefs","overrideDefs","globalDefs","isArraysEqual","pluginDefs","currentPluginIds","hooks","addDefs","defs","def","pluginName","currentId","hooks1","compareOptionalDates","hooks0","console","warn","buildPluginHooks","date0","date1","Math","max","valueOf","StandardTheme","Theme","ensureViewDef","viewType","hash","defaultConfigs","overrideConfigs","viewDef","defaultConfig","overrideConfig","queryProp","theComponent","superType","superDef","Error","component","type","defaults","rawOptions","overrides","buildViewDef","parseViewConfigs","inputs","mapHash","parseViewConfig","content","createViewHookComponent","prototype","BaseComponent","viewProps","createElement","ViewContextType","Consumer","context","ContentContainer","elTag","elClasses","buildViewClassNames","viewSpec","renderProps","nextDayThreshold","generatorName","customGenerator","classNameGenerator","classNames","didMount","willUnmount","buildViewSpecs","defaultInputs","optionOverrides","dynamicOptionOverrides","localeDefaults","viewDefs","compileViewDefs","durationInput","duration","durationUnit","singleUnit","singleUnitOverrides","json","JSON","stringify","res","durationInputMap","createDuration","createDurationCached","denom","greatestDurationDenominator","value","queryButtonText","optionsSubset","buttonTextMap","buttonTextKey","queryButtonTitle","buttonKey","optionDefaults","buttonTextOverride","buttonTextDefault","BASE_OPTION_DEFAULTS","buttonTitleOverride","buttonHint","buttonTitleDefault","buildViewSpec","classes","root","tableCellShaded","buttonGroup","button","buttonActive","baseIconClass","iconClasses","close","rtlIconClasses","iconOverrideOption","iconOverrideCustomButtonOption","iconOverridePrefix","initEventSources","calendarOptions","dateProfile","activeRange","addSources","refiners","buildEventSourceRefiners","rawSources","eventSources","sources","initialEvents","unshift","events","rawSource","source","parseEventSource","push","parseInitialSources","reduceEventSources","action","eventSourceHash","sourceId","filterHash","eventSource","fetchDirtySources","fetchSourcesByIds","sourceIds","arrayToHash","excludeStaticSources","isRefetch","sourceHash","fetchId","fetchRange","latestFetchId","isFetching","receiveResponse","computeEventSourcesLoading","doesSourceNeedRange","lazyFetching","start","end","isSourceDirty","prevSources","sourceIdHash","nextSources","fetchSource","calendarApi","sourceDef","pluginHooks","sourceDefId","fetch","range","rawEvents","eventSourceSuccess","call","response","success","dispatch","error","errorHandled","eventSourceFailure","failure","message","ignoreRange","reduceDateSelection","currentSelection","selection","reduceSelectedEvent","currentInstanceId","eventInstanceId","reduceEventDrag","currentDrag","newDrag","state","affectedEvents","mutatedEvents","isEvent","reduceEventResize","currentResize","newResize","parseToolbars","calendarOptionOverrides","theme","viewSpecs","header","headerToolbar","parseToolbar","footer","footerToolbar","sectionStrHash","sectionWidgets","viewsWithButtons","hasTitle","sectionName","sectionRes","parseSection","widgets","sectionStr","isRtl","calendarCustomButtons","customButtons","calendarButtonTextOverrides","calendarButtonText","calendarButtonHintOverrides","calendarButtonHints","sectionSubstrs","buttonGroupStr","buttonName","customButtonProps","buttonClick","buttonIcon","ev","click","target","getCustomButtonIconClass","getIconClass","text","hint","changeView","textFallback","formatWithOrdinals","prevOrNext","navUnit","ViewImpl","constructor","getCurrentData","dateEnv","this","calendar","title","viewTitle","activeStart","toDate","activeEnd","currentStart","currentRange","currentEnd","getOption","arrayEventSourcePlugin","parseMeta","refined","arg","successCallback","meta","funcEventSourcePlugin","errorCallback","func","unpromisify","bind","buildRangeApiWithTimeZone","jsonFeedEventSourcePlugin","method","String","extraParams","identity","startParam","endParam","timeZoneParam","url","format","toUpperCase","requestParams","customRequestParams","params","formatIso","timeZone","buildRequestParams","requestJson","then","SIMPLE_RECURRING_REFINERS","daysOfWeek","startTime","endTime","startRecur","endRecur","handleEventSources","unfoundSources","hashValuesToArray","_raw","newInputs","inputFound","splice","unfoundSource","newInput","addEventSource","globalPlugins","parse","recurringData","createMarker","subtractDurations","allDayGuess","Boolean","typeData","expand","framingRange","clippedFramingRange","intersectRanges","eventDateEnv","calendarDateEnv","dowHash","dayMarker","startOfDay","endMarker","instanceStarts","instanceStart","getUTCDay","add","addDays","expandRanges","emitter","trigger","view","viewApi","eventStore","hasHandlers","buildEventApis","TaskRunner","runTaskOption","drainedOption","queue","delayedRunner","DelayedRunner","drain","request","task","delay","pause","scope","resume","force","completedTasks","shift","runTask","drained","buildTitle","viewOptions","test","currentRangeUnit","formatRange","createFormatter","titleFormat","days","diffWholeDays","buildTitleFormat","isEndExclusive","isRangeAllDay","defaultSeparator","titleRangeSeparator","CalendarNowManager","resetListeners","Set","handleInput","nowInput","oldDateEnv","nowFn","nowAnchorDate","createNowMarker","nowAnchorQueried","now","resetListener","values","getDateMarker","timestampToMarker","addResetListener","handler","removeResetListener","delete","CalendarDataManager","props","computeCurrentViewData","memoize","_computeCurrentViewData","buildDateEnv","buildDateEnv$1","buildTheme","buildDateProfileGenerator","memoizeObjArg","buildViewApi","buildViewUiProps","buildEventUiBySource","isPropsEqual","buildEventUiBases","parseContextBusinessHours","nowManager","Emitter","actionRunner","_handleAction","updateData","currentCalendarOptionsInput","currentCalendarOptionsRefined","currentViewOptionsInput","currentViewOptionsRefined","currentCalendarOptionsRefiners","optionsForRefining","optionsForHandling","data","optionsData","computeOptionsData","currentViewType","currentViewData","currentDataManager","setThisContext","setOptions","calendarContext","currentDate","initialDateInput","initialDate","getInitialDate","dateProfileGenerator","build","rangeContainsMarker","callback","initialState","businessHours","eventUiBases","createEmptyEventStore","renderableEventStore","dateSelection","eventSelection","eventDrag","eventResize","selectionConfig","contextAndState","reducer","computeIsLoading","resetOptions","changedOptionNames","optionName","rawOptionValue","reduceDynamicOptionOverrides","reduceViewType","dateMarker","reduceCurrentDate","currentDateProfile","dp","buildPrev","isValid","buildNext","reduceDateProfile","reduceEventStore","progressiveEventRendering","eventUiSingleBase","eventUiBySource","newState","wasLoading","isLoading","onAction","oldData","changeHandlers","oldCalendarOptions","newCalendarOptions","reduceEventSourcesNewTimeZone","rezoneEventStoreDates","indexOf","onData","stableOptionOverrides","stableDynamicOptionOverrides","stableCalendarOptionsData","refinedOptions","availableLocaleData","extra","processRawCalendarOptions","warnUnknownOptions","locale","weekNumberCalculation","firstDay","defaultRangeSeparator","toolbarConfig","availableRawLocales","locales","mergeRawOptions","plugins","BASE_OPTION_REFINERS","CALENDAR_LISTENER_REFINERS","CALENDAR_OPTION_REFINERS","currentRaw","currentRefined","anyChanges","COMPLEX_OPTION_COMPARATORS","processRawViewOptions","dateProfileGeneratorClass","usesMinMaxTime","slotMinTime","slotMaxTime","showNonCurrentDates","dayCount","dateAlignment","dateIncrement","hiddenDays","weekends","validRangeInput","validRange","visibleRangeInput","visibleRange","fixedWeekCount","VIEW_OPTION_REFINERS","explicitLocale","DateEnv","calendarSystem","namedTimeZoneImpl","themeSystem","DateProfileGenerator","ui","eventDefs","defId","createEventUi","display","eventDisplay","editable","startEditable","eventStartEditable","durationEditable","eventDurationEditable","constraint","eventConstraint","overlap","eventOverlap","allow","eventAllow","backgroundColor","eventBackgroundColor","borderColor","eventBorderColor","textColor","eventTextColor","color","eventColor","selectConstraint","selectOverlap","selectAllow","isLoadingFunc","parseBusinessHours","viewName","ToolbarSection","render","children","widgetGroups","widgetGroup","renderWidgetGroup","className","isOnlyButtons","widget","titleId","isPressed","activeButton","isDisabled","isTodayEnabled","isPrevEnabled","isNextEnabled","buttonClasses","getClass","disabled","onClick","role","groupClassName","Toolbar","startContent","endContent","model","extraClassName","forceLtr","centerContent","center","left","right","renderSection","key","ViewHarness","super","arguments","availableWidth","handleEl","el","setRef","elRef","updateAvailableWidth","handleResize","aspectRatio","liquid","height","paddingBottom","labeledById","ref","style","componentDidMount","addResizeHandler","componentWillUnmount","removeResizeHandler","setState","offsetWidth","EventClicking","Interaction","settings","handleSegClick","segEl","seg","getElSeg","isValidSegDownEl","hasUrlContainer","elementClosest","querySelector","href","event","EventImpl","eventRange","instance","jsEvent","defaultPrevented","window","location","destroy","listenBySelector","EventHovering","handleEventElRemove","currentSegEl","handleSegLeave","handleSegEnter","triggerEvent","removeHoverListeners","listenToHoverBySelector","publicEvName","CalendarContent","PureComponent","buildViewContext","buildViewPropTransformers","buildToolbarProps","headerRef","createRef","footerRef","interactionsStore","viewLabelId","getUniqueDomId","registerInteractiveComponent","settingsInput","parseInteractionSettings","interactions","TheInteractionClass","uid","interactionSettingsStore","unregisterInteractiveComponent","listeners","listener","resizeRunner","handleWindowResize","windowResizeDelay","viewAspectRatio","viewVGrow","viewHeight","isHeightAuto","forPrint","contentHeight","viewContext","Provider","NowTimer","nowDate","toolbarProps","Fragment","renderView","buildAppendContent","CalendarInteractionClass","addEventListener","propName","componentDidUpdate","prevProps","removeEventListener","clear","interaction","transformers","transformer","transform","ViewComponent","todayInfo","prevInfo","nextInfo","theClasses","TheClass","Calendar","CalendarImpl","isRendering","isRendered","currentClassNames","customContentRenderId","handleAction","renderRunner","tryDrain","handleData","currentData","rerenderDelay","handleRenderRequest","flushSync","CalendarRoot","setClassNames","setHeight","RenderId","ensureElHasStyles","wasRendering","updateSize","batchRendering","pauseRendering","resumeRendering","classList","remove","applyStyleProp"],"mappings":"suBAKK,MAACA,GAAgB,GAEhBC,GAAwB,CAC1BC,KAAM,KACNC,KAAM,CACFC,IAAK,EACLC,IAAK,GAETC,UAAW,MACXC,WAAY,CACRC,KAAM,OACNC,KAAM,OACNC,SAAU,YACVC,SAAU,YACVC,KAAM,OACNC,MAAO,QACPC,MAAO,QACPX,KAAM,OACNY,IAAK,MACLC,KAAM,QAEVC,SAAU,IACVC,aAAc,OACdC,UAAW,QACXC,SAAU,OACVC,UAAW,QACXC,WAAY,UACZC,aAAc,OACdC,aAAc,wBAEZC,GAAgBC,OAAOC,OAAOD,OAAOC,OAAO,CAAA,EAAI1B,IAAwB,CAG1E2B,YAAa,CACTpB,KAAM,cACNC,KAAM,UACNI,MAAK,CAACN,EAAYsB,IACG,QAATA,EACF,QACA,QAAQtB,KAEnBuB,SAAU,UAAWC,YAAa,WAAYC,aAAaC,GACnD,QAAQA,eAAmC,IAAbA,EAAiB,GAAK,QAEnE,SAASC,GAAmBC,GACxB,IAAIC,EAAcD,EAAmBE,OAAS,EAAIF,EAAmB,GAAGjC,KAAO,KAC3EoC,EAAgBtC,GAAcuC,OAAOJ,GACrCK,EAAe,CACfC,GAAIhB,IAER,IAAK,IAAIiB,KAAaJ,EAClBE,EAAaE,EAAUxC,MAAQwC,EAEnC,MAAO,CACHC,IAAKH,EACLJ,cAER,CACA,SAASQ,GAAYC,EAAeC,GAChC,MAA6B,iBAAlBD,GAA+BE,MAAMC,QAAQH,GAK5D,SAAqBI,EAASH,GAC1B,IAAII,EAAQ,GAAGX,OAAOU,GAAW,IAC7BE,EAGR,SAAwBD,EAAOJ,GAC3B,IAAK,IAAIM,EAAI,EAAGA,EAAIF,EAAMb,OAAQe,GAAK,EAAG,CACtC,IAAIC,EAAQH,EAAME,GAAGE,oBAAoBC,MAAM,KAC/C,IAAK,IAAIC,EAAIH,EAAMhB,OAAQmB,EAAI,EAAGA,GAAK,EAAG,CACtC,IAAIC,EAAWJ,EAAMK,MAAM,EAAGF,GAAGG,KAAK,KACtC,GAAIb,EAAUW,GACV,OAAOX,EAAUW,EAExB,CACJ,CACD,OAAO,IACX,CAdcG,CAAeV,EAAOJ,IAAcrB,GAC9C,OAAOoC,GAAYZ,EAASC,EAAOC,EACvC,CANWW,CAAYjB,EAAeC,GAFvBe,GAAYhB,EAAc3C,KAAM,CAAC2C,EAAc3C,MAAO2C,EAGrE,CAkBA,SAASgB,GAAYZ,EAASC,EAAOC,GACjC,IAAIY,EAASC,EAAW,CAAC/D,GAAuBkD,GAAM,CAAC,sBAChDY,EAAO7D,KACd,IAAIC,KAAEA,GAAS4D,EAEf,cADOA,EAAO5D,KACP,CACH8C,UACAC,QACA/C,OACA8D,mBAAoB,IAAIC,KAAKC,aAAalB,GAC1CmB,QAASL,EAEjB,CAGA,SAASM,GAAaC,GAClB,MAAO,CACHC,GAAIC,IACJC,KAAMH,EAAMG,KACZC,mBAAoBJ,EAAMI,mBAAqB,IAAIC,KAAKL,EAAMI,yBAAsBE,EACpFC,KAAMP,EAAMO,MAAQ,GACpBC,SAAUR,EAAMQ,UAAY,GAC5BC,eAAgBT,EAAMS,gBAAkB,GACxCC,YAAa,GAAGzC,OAAO+B,EAAMU,aAAe,IAC5CC,cAAeX,EAAMW,eAAiB,CAAE,EACxCC,qBAAsBZ,EAAMY,sBAAwB,GACpDC,oBAAqBb,EAAMa,qBAAuB,CAAE,EACpDC,wBAAyBd,EAAMc,yBAA2B,GAC1DC,2BAA4Bf,EAAMe,4BAA8B,GAChEC,yBAA0BhB,EAAMgB,0BAA4B,GAC5DC,0BAA2BjB,EAAMiB,2BAA6B,GAC9DC,oBAAqBlB,EAAMkB,qBAAuB,GAClDC,mBAAoBnB,EAAMmB,oBAAsB,GAChDC,MAAOpB,EAAMoB,OAAS,CAAE,EACxBC,sBAAuBrB,EAAMqB,uBAAyB,GACtDC,aAActB,EAAMsB,cAAgB,KACpCC,sBAAuBvB,EAAMuB,uBAAyB,GACtDC,qBAAsBxB,EAAMwB,sBAAwB,GACpDC,sBAAuBzB,EAAMyB,uBAAyB,GACtDC,sBAAuB1B,EAAM0B,uBAAyB,GACtDC,qBAAsB3B,EAAM2B,sBAAwB,GACpDC,aAAc5B,EAAM4B,cAAgB,CAAE,EACtCC,gBAAiB7B,EAAM6B,iBAAmB,GAC1CC,aAAc9B,EAAM8B,aACpBC,eAAgB/B,EAAM+B,gBAAkB,GACxCC,mBAAoBhC,EAAMgC,mBAC1BC,YAAajC,EAAMiC,aAAe,GAClCC,oBAAqBlC,EAAMkC,oBAC3BC,qBAAsBnC,EAAMmC,sBAAwB,CAAE,EACtDC,eAAgBpC,EAAMoC,gBAAkB,KACxCC,iBAAkBrC,EAAMqC,kBAAoB,CAAE,EAC9CC,eAAgBtC,EAAMsC,gBAAkB,CAAE,EAC1CC,gBAAiBvC,EAAMuC,iBAAmB,CAAE,EAEpD,CA2DA,SAASC,KACL,IAEIC,EAFAC,EAAsB,GACtBC,EAAoB,GAExB,MAAO,CAACC,EAAcC,KACbJ,GAAiBK,EAAcF,EAAcF,IAAyBI,EAAcD,EAAYF,KACjGF,EAhEZ,SAA0BM,EAAYF,GAClC,IAAIG,EAAmB,CAAA,EACnBC,EAAQ,CACR7C,wBAAoBE,EACpBE,SAAU,GACVC,eAAgB,GAChBC,YAAa,GACbC,cAAe,CAAE,EACjBC,qBAAsB,GACtBC,oBAAqB,CAAE,EACvBC,wBAAyB,GACzBC,2BAA4B,GAC5BC,yBAA0B,GAC1BC,0BAA2B,GAC3BC,oBAAqB,GACrBC,mBAAoB,GACpBC,MAAO,CAAE,EACTC,sBAAuB,GACvBC,aAAc,KACdC,sBAAuB,GACvBC,qBAAsB,GACtBC,sBAAuB,GACvBC,sBAAuB,GACvBC,qBAAsB,GACtBC,aAAc,CAAE,EAChBC,gBAAiB,GACjBC,aAAc,KACdC,eAAgB,GAChBC,mBAAoB,KACpBC,YAAa,GACbC,oBAAqB,KACrBC,qBAAsB,CAAE,EACxBC,eAAgB,KAChBC,iBAAkB,CAAE,EACpBC,eAAgB,CAAE,EAClBC,gBAAiB,CAAE,GAEvB,SAASW,EAAQC,GACb,IAAK,IAAIC,KAAOD,EAAM,CAClB,MAAME,EAAaD,EAAIjD,KACjBmD,EAAYN,EAAiBK,QACjB/C,IAAdgD,GACAN,EAAiBK,GAAcD,EAAInD,GACnCiD,EAAQE,EAAI7C,MA4BEgD,EA3BcH,EAA5BH,EA4BL,CACH7C,mBAAoBoD,IAFNC,EA3BeR,GA6BmB7C,mBAAoBmD,EAAOnD,oBAC3EI,SAAUiD,EAAOjD,SAASvC,OAAOsF,EAAO/C,UACxCC,eAAgBgD,EAAOhD,eAAexC,OAAOsF,EAAO9C,gBACpDC,YAAa+C,EAAO/C,YAAYzC,OAAOsF,EAAO7C,aAC9CC,cAAevD,OAAOC,OAAOD,OAAOC,OAAO,GAAIoG,EAAO9C,eAAgB4C,EAAO5C,eAC7EC,qBAAsB6C,EAAO7C,qBAAqB3C,OAAOsF,EAAO3C,sBAChEC,oBAAqBzD,OAAOC,OAAOD,OAAOC,OAAO,GAAIoG,EAAO5C,qBAAsB0C,EAAO1C,qBACzFC,wBAAyB2C,EAAO3C,wBAAwB7C,OAAOsF,EAAOzC,yBACtEC,2BAA4B0C,EAAO1C,2BAA2B9C,OAAOsF,EAAOxC,4BAC5EC,yBAA0ByC,EAAOzC,yBAAyB/C,OAAOsF,EAAOvC,0BACxEC,0BAA2BwC,EAAOxC,0BAA0BhD,OAAOsF,EAAOtC,2BAC1EC,oBAAqBuC,EAAOvC,oBAAoBjD,OAAOsF,EAAOrC,qBAC9DC,mBAAoBsC,EAAOtC,mBAAmBlD,OAAOsF,EAAOpC,oBAC5DC,MAAOhE,OAAOC,OAAOD,OAAOC,OAAO,GAAIoG,EAAOrC,OAAQmC,EAAOnC,OAC7DC,sBAAuBoC,EAAOpC,sBAAsBpD,OAAOsF,EAAOlC,uBAClEC,aAAciC,EAAOjC,cAAgBmC,EAAOnC,aAC5CC,sBAAuBkC,EAAOlC,sBAAsBtD,OAAOsF,EAAOhC,uBAClEC,qBAAsBiC,EAAOjC,qBAAqBvD,OAAOsF,EAAO/B,sBAChEC,sBAAuBgC,EAAOhC,sBAAsBxD,OAAOsF,EAAO9B,uBAClEE,qBAAsB8B,EAAO9B,qBAAqB1D,OAAOsF,EAAO5B,sBAChED,sBAAuB+B,EAAO/B,sBAAsBzD,OAAOsF,EAAO7B,uBAClEE,aAAcxE,OAAOC,OAAOD,OAAOC,OAAO,GAAIoG,EAAO7B,cAAe2B,EAAO3B,cAC3EC,gBAAiB4B,EAAO5B,gBAAgB5D,OAAOsF,EAAO1B,iBACtDC,aAAcyB,EAAOzB,cAAgB2B,EAAO3B,aAC5CC,eAAgB0B,EAAO1B,eAAe9D,OAAOsF,EAAOxB,gBACpDC,mBAAoBuB,EAAOvB,oBAAsByB,EAAOzB,mBACxDC,YAAawB,EAAOxB,aAAesB,EAAOtB,YAC1CC,oBAAqBuB,EAAOvB,qBAAuBqB,EAAOrB,oBAC1DC,qBAAsB/E,OAAOC,OAAOD,OAAOC,OAAO,GAAIoG,EAAOtB,sBAAuBoB,EAAOpB,sBAC3FC,eAAgBmB,EAAOnB,gBAAkBqB,EAAOrB,eAChDC,iBAAkBjF,OAAOC,OAAOD,OAAOC,OAAO,GAAIoG,EAAOpB,kBAAmBkB,EAAOlB,kBACnFC,eAAgBlF,OAAOC,OAAOD,OAAOC,OAAO,GAAIoG,EAAOnB,gBAAiBiB,EAAOjB,gBAC/EC,gBAAiBnF,OAAOC,OAAOD,OAAOC,OAAO,GAAIoG,EAAOlB,iBAAkBgB,EAAOhB,mBA3DpEe,IAAcF,EAAInD,IAEvByD,QAAQC,KAAK,qBAAqBN,KAEzC,CAqBT,IAAsBI,EAAQF,CApBzB,CAKD,OAJIR,GACAG,EAAQH,GAEZG,EAAQL,GACDI,CACX,CAO2BW,CAAiBhB,EAAcC,IAElDH,EAAsBE,EACtBD,EAAoBE,EACbJ,EAEf,CAsCA,SAASe,GAAqBK,EAAOC,GACjC,YAAcxD,IAAVuD,EACOC,OAEGxD,IAAVwD,EACOD,EAEJ,IAAIxD,KAAK0D,KAAKC,IAAIH,EAAMI,UAAWH,EAAMG,WACpD,CAEA,MAAMC,WAAsBC,GAsC5B,SAASC,GAAcC,EAAUC,EAAMC,EAAgBC,GACnD,GAAIF,EAAKD,GACL,OAAOC,EAAKD,GAEhB,IAAII,EAMR,SAAsBJ,EAAUC,EAAMC,EAAgBC,GAClD,IAAIE,EAAgBH,EAAeF,GAC/BM,EAAiBH,EAAgBH,GACjCO,EAAazE,GAAWuE,GAAyC,OAAxBA,EAAcvE,GAAkBuE,EAAcvE,GACrFwE,GAA2C,OAAzBA,EAAexE,GAAkBwE,EAAexE,GAAQ,KAC5E0E,EAAeD,EAAU,aACzBE,EAAYF,EAAU,aACtBG,EAAW,KACf,GAAID,EAAW,CACX,GAAIA,IAAcT,EACd,MAAM,IAAIW,MAAM,wDAEpBD,EAAWX,GAAcU,EAAWR,EAAMC,EAAgBC,EAC7D,EACIK,GAAgBE,IACjBF,EAAeE,EAASE,WAE5B,IAAKJ,EACD,OAAO,KAEX,MAAO,CACHK,KAAMb,EACNY,UAAWJ,EACXM,SAAU/H,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAAG0H,EAAWA,EAASI,SAAW,CAAE,GAAKT,EAAgBA,EAAcU,WAAa,CAAA,GAC5HC,UAAWjI,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAAG0H,EAAWA,EAASM,UAAY,CAAE,GAAKV,EAAiBA,EAAeS,WAAa,CAAA,GAExI,CAhCkBE,CAAajB,EAAUC,EAAMC,EAAgBC,GAI3D,OAHIC,IACAH,EAAKD,GAAYI,GAEdA,CACX,CA6BA,SAASc,GAAiBC,GACtB,OAAOC,EAAQD,EAAQE,GAC3B,CACA,SAASA,GAAgB1F,GACrB,IAAIoF,EAA8B,mBAAVpF,EACpB,CAAEiF,UAAWjF,GACbA,GACAiF,UAAEA,GAAcG,EAUpB,OATIA,EAAWO,QAEXV,EAAYW,GAAwBR,IAE/BH,GAAeA,EAAUY,qBAAqBC,KAGnDb,EAAYW,GAAwBxI,OAAOC,OAAOD,OAAOC,OAAO,GAAI+H,GAAa,CAAEO,QAASV,MAEzF,CACHH,UAAWM,EAAWF,KACtBD,UAAWA,EACXG,aAER,CACA,SAASQ,GAAwB9F,GAC7B,OAAQiG,GAAeC,GAAcC,GAAgBC,SAAU,MAAOC,GAAaH,GAAcI,GAAkB,CAAEC,MAAO,MAAOC,UAAWC,GAAoBJ,EAAQK,UAAWC,YAAarJ,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAAE0I,GAAY,CAAEW,iBAAkBP,EAAQrG,QAAQ4G,mBAAqBC,mBAAerG,EAAWsG,gBAAiB9G,EAAQ6F,QAASkB,mBAAoB/G,EAAQgH,WAAYC,SAAUjH,EAAQiH,SAAUC,YAAalH,EAAQkH,eAChc,CAEA,SAASC,GAAeC,EAAeC,EAAiBC,EAAwBC,GAC5E,IAAI9C,EAAiBgB,GAAiB2B,GAClC1C,EAAkBe,GAAiB4B,EAAgB/F,OACnDkG,EA/ER,SAAyB/C,EAAgBC,GACrC,IACIH,EADAC,EAAO,CAAA,EAEX,IAAKD,KAAYE,EACbH,GAAcC,EAAUC,EAAMC,EAAgBC,GAElD,IAAKH,KAAYG,EACbJ,GAAcC,EAAUC,EAAMC,EAAgBC,GAElD,OAAOF,CACX,CAqEmBiD,CAAgBhD,EAAgBC,GAC/C,OAAOiB,EAAQ6B,GAAW7C,GAE9B,SAAuBA,EAASD,EAAiB2C,EAAiBC,EAAwBC,GACtF,IAAIG,EAAgB/C,EAAQY,UAAUoC,UAClChD,EAAQU,SAASsC,UACjBL,EAAuBK,UACvBN,EAAgBM,SAChBA,EAAW,KACXC,EAAe,GACfC,EAAa,GACbC,EAAsB,CAAA,EAC1B,GAAIJ,IACAC,EAiER,SAA8BD,GAC1B,IAAIK,EAAOC,KAAKC,UAAUP,GACtBQ,EAAMC,GAAiBJ,QACfvH,IAAR0H,IACAA,EAAME,EAAeV,GACrBS,GAAiBJ,GAAQG,GAE7B,OAAOA,CACX,CAzEmBG,CAAqBX,GAC5BC,GAAU,CACV,IAAIW,EAAQC,EAA4BZ,GACxCC,EAAeU,EAAM7K,KACD,IAAhB6K,EAAME,QACNX,EAAaD,EACbE,EAAsBpD,EAAgBkD,GAAgBlD,EAAgBkD,GAActC,WAAa,GAExG,CAEL,IAAImD,EAAmBC,IACnB,IAAIC,EAAgBD,EAAcvM,YAAc,GAC5CyM,EAAgBjE,EAAQU,SAASuD,cACrC,OAAqB,MAAjBA,GAAyD,MAAhCD,EAAcC,GAChCD,EAAcC,GAEU,MAA/BD,EAAchE,EAAQS,MACfuD,EAAchE,EAAQS,MAEA,MAA7BuD,EAAcd,GACPc,EAAcd,GAElB,IAAI,EAEXgB,EAAoBH,IACpB,IAAIlL,EAAckL,EAAclL,aAAe,GAC3CsL,EAAYnE,EAAQU,SAASuD,cACjC,OAAiB,MAAbE,GAA+C,MAA1BtL,EAAYsL,GAC1BtL,EAAYsL,GAEU,MAA7BtL,EAAYmH,EAAQS,MACb5H,EAAYmH,EAAQS,MAEA,MAA3B5H,EAAYqK,GACLrK,EAAYqK,GAEhB,IAAI,EAEf,MAAO,CACHzC,KAAMT,EAAQS,KACdD,UAAWR,EAAQQ,UACnBwC,WACAC,eACAC,aACAkB,eAAgBpE,EAAQU,SACxBgC,gBAAiB/J,OAAOC,OAAOD,OAAOC,OAAO,CAAA,EAAIuK,GAAsBnD,EAAQY,WAC/EyD,mBAAoBP,EAAgBnB,IAChCmB,EAAgBpB,IAChB1C,EAAQY,UAAUpJ,WACtB8M,kBAAmBR,EAAgBlB,IAC/B5C,EAAQU,SAASlJ,YACjBsM,EAAgBS,IAChBvE,EAAQS,KAEZ+D,oBAAqBN,EAAiBvB,IAClCuB,EAAiBxB,IACjB1C,EAAQY,UAAU6D,WACtBC,mBAAoBR,EAAiBtB,IACjC5C,EAAQU,SAAS+D,YACjBP,EAAiBK,GAG7B,CA1E0CI,CAAc3E,EAASD,EAAiB2C,EAAiBC,EAAwBC,IAC3H,CA1GAnD,GAAc2B,UAAUwD,QAAU,CAC9BC,KAAM,oBACNC,gBAAiB,iBACjBC,YAAa,kBACbC,OAAQ,8BACRC,aAAc,oBAElBxF,GAAc2B,UAAU8D,cAAgB,UACxCzF,GAAc2B,UAAU+D,YAAc,CAClCC,MAAO,YACP3N,KAAM,uBACNC,KAAM,wBACNC,SAAU,wBACVC,SAAU,0BAEd6H,GAAc2B,UAAUiE,eAAiB,CACrC5N,KAAM,wBACNC,KAAM,uBACNC,SAAU,yBACVC,SAAU,yBAEd6H,GAAc2B,UAAUkE,mBAAqB,cAC7C7F,GAAc2B,UAAUmE,+BAAiC,OACzD9F,GAAc2B,UAAUoE,mBAAqB,WA8J7C,IAAIhC,GAAmB,CAAA,EAsEvB,SAASiC,GAAiBC,EAAiBC,EAAajE,GACpD,IAAIkE,EAAcD,EAAcA,EAAYC,YAAc,KAC1D,OAAOC,GAAW,CAAE,EA2IxB,SAA6BlF,EAAYe,GACrC,IAAIoE,EAAWC,EAAyBrE,GACpCsE,EAAa,GAAGxM,OAAOmH,EAAWsF,cAAgB,IAClDC,EAAU,GACVvF,EAAWwF,eACXH,EAAWI,QAAQzF,EAAWwF,eAE9BxF,EAAW0F,QACXL,EAAWI,QAAQzF,EAAW0F,QAElC,IAAK,IAAIC,KAAaN,EAAY,CAC9B,IAAIO,EAASC,EAAiBF,EAAW5E,EAASoE,GAC9CS,GACAL,EAAQO,KAAKF,EAEpB,CACD,OAAOL,CACX,CA5J0BQ,CAAoBhB,EAAiBhE,GAAUkE,EAAalE,EACtF,CACA,SAASiF,GAAmBV,EAAcW,EAAQjB,EAAajE,GAC3D,IAAIkE,EAAcD,EAAcA,EAAYC,YAAc,KAC1D,OAAQgB,EAAOnG,MACX,IAAK,oBACD,OAAOoF,GAAWI,EAAcW,EAAOV,QAASN,EAAalE,GACjE,IAAK,sBACD,OA4CUmF,EA5CUZ,EA4COa,EA5COF,EAAOE,SA6C1CC,EAAWF,GAAkBG,GAAgBA,EAAYF,WAAaA,IA5CzE,IAAK,OACL,IAAK,OACL,IAAK,cACL,IAAK,mBACD,OAAInB,EACOsB,GAAkBhB,EAAcL,EAAalE,GAEjDuE,EACX,IAAK,sBACD,OAAOiB,GAAkBjB,EAAcW,EAAOO,UAC1CC,EAAYR,EAAOO,WACnBE,GAAqBpB,EAAcvE,GAAUkE,EAAagB,EAAOU,YAAa,EAAO5F,GAC7F,IAAK,iBACL,IAAK,sBACD,OAyGZ,SAAyB6F,EAAYT,EAAUU,EAASC,GACpD,IAAIT,EAAcO,EAAWT,GAC7B,GAAIE,GACAQ,IAAYR,EAAYU,cACxB,OAAO/O,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAAE2O,GAAa,CAAET,CAACA,GAAWnO,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAAEoO,GAAc,CAAEW,YAAY,EAAOF,iBAEzI,OAAOF,CACX,CAhHmBK,CAAgB3B,EAAcW,EAAOE,SAAUF,EAAOY,QAASZ,EAAOa,YACjF,IAAK,2BACD,MAAO,GACX,QACI,OAAOxB,EAyBnB,IAAsBY,EAAiBC,CAvBvC,CAKA,SAASe,GAA2B5B,GAChC,IAAK,IAAIa,KAAYb,EACjB,GAAIA,EAAaa,GAAUa,WACvB,OAAO,EAGf,OAAO,CACX,CACA,SAAS9B,GAAWgB,EAAiBX,EAASuB,EAAY/F,GACtD,IAAI7B,EAAO,CAAA,EACX,IAAK,IAAI0G,KAAUL,EACfrG,EAAK0G,EAAOO,UAAYP,EAK5B,OAHIkB,IACA5H,EAAOoH,GAAkBpH,EAAM4H,EAAY/F,IAExC/I,OAAOC,OAAOD,OAAOC,OAAO,CAAA,EAAIiO,GAAkBhH,EAC7D,CAIA,SAASoH,GAAkBM,EAAYE,EAAY/F,GAC/C,OAAOwF,GAAkBK,EAAYR,EAAWQ,GAAaP,GAEjE,SAAuBA,EAAaS,EAAY/F,GAC5C,IAAKoG,GAAoBd,EAAatF,GAClC,OAAQsF,EAAYU,cAExB,OAAQhG,EAAQrG,QAAQ0M,eACnBf,EAAYS,YACbT,EAAYW,YACZF,EAAWO,MAAQhB,EAAYS,WAAWO,OAC1CP,EAAWQ,IAAMjB,EAAYS,WAAWQ,GAChD,CAXiFC,CAAclB,EAAaS,EAAY/F,KAAW+F,GAAY,EAAO/F,EACtJ,CAWA,SAASwF,GAAkBiB,EAAaC,EAAcX,EAAYH,EAAW5F,GACzE,IAAI2G,EAAc,CAAA,EAClB,IAAK,IAAIvB,KAAYqB,EAAa,CAC9B,IAAI5B,EAAS4B,EAAYrB,GACrBsB,EAAatB,GACbuB,EAAYvB,GAAYwB,GAAY/B,EAAQkB,EAAYH,EAAW5F,GAGnE2G,EAAYvB,GAAYP,CAE/B,CACD,OAAO8B,CACX,CACA,SAASC,GAAYtB,EAAaS,EAAYH,EAAW5F,GACrD,IAAIrG,QAAEA,EAAOkN,YAAEA,GAAgB7G,EAC3B8G,EAAY9G,EAAQ+G,YAAYrL,gBAAgB4J,EAAY0B,aAC5DlB,EAAU/L,IA0Cd,OAzCA+M,EAAUG,MAAM,CACZ3B,cACA4B,MAAOnB,EACPH,YACA5F,YACA6B,IACA,IAAIsF,UAAEA,GAActF,EAChBlI,EAAQyN,qBACRD,EAAYxN,EAAQyN,mBAAmBC,KAAKR,EAAaM,EAAWtF,EAAIyF,WAAaH,GAErF7B,EAAYiC,UACZJ,EAAY7B,EAAYiC,QAAQF,KAAKR,EAAaM,EAAWtF,EAAIyF,WAAaH,GAElFnH,EAAQwH,SAAS,CACbzI,KAAM,iBACNqG,SAAUE,EAAYF,SACtBU,UACAC,aACAoB,aACF,IACFM,IACA,IAAIC,GAAe,EACf/N,EAAQgO,qBACRhO,EAAQgO,mBAAmBN,KAAKR,EAAaY,GAC7CC,GAAe,GAEfpC,EAAYsC,UACZtC,EAAYsC,QAAQH,GACpBC,GAAe,GAEdA,GACDnK,QAAQC,KAAKiK,EAAMI,QAASJ,GAEhCzH,EAAQwH,SAAS,CACbzI,KAAM,sBACNqG,SAAUE,EAAYF,SACtBU,UACAC,aACA0B,SACF,IAECxQ,OAAOC,OAAOD,OAAOC,OAAO,CAAA,EAAIoO,GAAc,CAAEW,YAAY,EAAMD,cAAeF,GAC5F,CASA,SAASH,GAAqBpB,EAAcvE,GACxC,OAAOqF,EAAWd,GAAee,GAAgBc,GAAoBd,EAAatF,IACtF,CAmBA,SAASoG,GAAoBd,EAAatF,GAEtC,OADWA,EAAQ+G,YAAYrL,gBAClB4J,EAAY0B,aAAac,WAC1C,CAEA,SAASC,GAAoBC,EAAkB9C,GAC3C,OAAQA,EAAOnG,MACX,IAAK,iBACD,OAAO,KACX,IAAK,eACD,OAAOmG,EAAO+C,UAClB,QACI,OAAOD,EAEnB,CAEA,SAASE,GAAoBC,EAAmBjD,GAC5C,OAAQA,EAAOnG,MACX,IAAK,iBACD,MAAO,GACX,IAAK,eACD,OAAOmG,EAAOkD,gBAClB,QACI,OAAOD,EAEnB,CAEA,SAASE,GAAgBC,EAAapD,GAClC,IAAIqD,EACJ,OAAQrD,EAAOnG,MACX,IAAK,mBACD,OAAO,KACX,IAAK,iBAED,OADAwJ,EAAUrD,EAAOsD,MACV,CACHC,eAAgBF,EAAQE,eACxBC,cAAeH,EAAQG,cACvBC,QAASJ,EAAQI,SAEzB,QACI,OAAOL,EAEnB,CAEA,SAASM,GAAkBC,EAAe3D,GACtC,IAAI4D,EACJ,OAAQ5D,EAAOnG,MACX,IAAK,qBACD,OAAO,KACX,IAAK,mBAED,OADA+J,EAAY5D,EAAOsD,MACZ,CACHC,eAAgBK,EAAUL,eAC1BC,cAAeI,EAAUJ,cACzBC,QAASG,EAAUH,SAE3B,QACI,OAAOE,EAEnB,CAEA,SAASE,GAAc/E,EAAiBgF,EAAyBC,EAAOC,EAAWrC,GAG/E,MAAO,CAAEsC,OAFInF,EAAgBoF,cAAgBC,GAAarF,EAAgBoF,cAAepF,EAAiBgF,EAAyBC,EAAOC,EAAWrC,GAAe,KAEnJyC,OADJtF,EAAgBuF,cAAgBF,GAAarF,EAAgBuF,cAAevF,EAAiBgF,EAAyBC,EAAOC,EAAWrC,GAAe,KAExK,CACA,SAASwC,GAAaG,EAAgBxF,EAAiBgF,EAAyBC,EAAOC,EAAWrC,GAC9F,IAAI4C,EAAiB,CAAA,EACjBC,EAAmB,GACnBC,GAAW,EACf,IAAK,IAAIC,KAAeJ,EAAgB,CACpC,IACIK,EAAaC,GADAN,EAAeI,GACU5F,EAAiBgF,EAAyBC,EAAOC,EAAWrC,GACtG4C,EAAeG,GAAeC,EAAWE,QACzCL,EAAiB3E,QAAQ8E,EAAWH,kBACpCC,EAAWA,GAAYE,EAAWF,QACrC,CACD,MAAO,CAAEF,iBAAgBC,mBAAkBC,WAC/C,CAIA,SAASG,GAAaE,EAAYhG,EAClCgF,EACAC,EAAOC,EAAWrC,GACd,IAAIoD,EAAsC,QAA9BjG,EAAgBnO,UACxBqU,EAAwBlG,EAAgBmG,eAAiB,GACzDC,EAA8BpB,EAAwBlT,YAAc,GACpEuU,EAAqBrG,EAAgBlO,YAAc,GACnDwU,EAA8BtB,EAAwB7R,aAAe,GACrEoT,EAAsBvG,EAAgB7M,aAAe,GACrDqT,EAAiBR,EAAaA,EAAWlR,MAAM,KAAO,GACtD4Q,EAAmB,GACnBC,GAAW,EAgEf,MAAO,CAAEI,QA/DKS,EAAetS,KAAKuS,GAAoBA,EAAe3R,MAAM,KAAKZ,KAAKwS,IACjF,GAAmB,UAAfA,EAEA,OADAf,GAAW,EACJ,CAAEe,cAEb,IAAIC,EACAtK,EACAuK,EACAC,EACA/U,EACAiN,EAEJ,GAAK4H,EAAoBT,EAAsBQ,GAC3CE,EAAeE,IACPH,EAAkBI,OAClBJ,EAAkBI,MAAM1D,KAAKyD,EAAGE,OAAQF,EAAIA,EAAGE,OAClD,GAEJH,EAAa5B,EAAMgC,yBAAyBN,MACxCE,EAAa5B,EAAMiC,aAAaR,EAAYT,MAC5CnU,EAAa6U,EAAkBQ,MACpCpI,EAAa4H,EAAkBS,MAAQT,EAAkBQ,UAExD,GAAK9K,EAAW6I,EAAUwB,GAAc,CACzChB,EAAiB3E,KAAK2F,GACtBE,EAAc,KACV/D,EAAYwE,WAAWX,EAAW,GAErC5U,EAAauK,EAASsC,sBAClBkI,EAAa5B,EAAMiC,aAAaR,EAAYT,MAC5CnU,EAAauK,EAASuC,mBAC3B,IAAI0I,EAAejL,EAASsC,oBACxBtC,EAASuC,kBACbG,EAAawI,EAAmBlL,EAASyC,qBACrCzC,EAAS2C,oBACTgB,EAAgB3M,SAAU,CAACiU,EAAcZ,GAC7CY,EACH,MACI,GAAIzE,EAAY6D,GAOjB,GANAE,EAAc,KACV/D,EAAY6D,IAAa,GAE5B5U,EAAasU,EAA4BM,MACrCG,EAAa5B,EAAMiC,aAAaR,EAAYT,MAC5CnU,EAAauU,EAAmBK,IAClB,aAAfA,GAA4C,aAAfA,EAA2B,CACxD,IAAIc,EAA4B,aAAfd,EAA4B,OAAS,OACtD3H,EAAawI,EAAmBjB,EAA4BkB,IACxDjB,EAAoBiB,GAAa,CACjCnB,EAAmBlU,MAAQ,OAC3B,QACDkU,EAAmBK,GACzB,MAEG3H,EAAc0I,GAAYF,EAAmBjB,EAA4BI,IACrEH,EAAoBG,GAAa,CACjCL,EAAmBoB,IAAYA,EAC/BA,GACDpB,EAAmBK,IAG9B,MAAO,CAAEA,aAAYE,cAAaC,aAAY/U,aAAYiN,aAAY,MAExD2G,mBAAkBC,WACxC,CAGA,MAAM+B,GACF,WAAAC,CAAY5M,EAAM6M,EAAgBC,GAC9BC,KAAK/M,KAAOA,EACZ+M,KAAKF,eAAiBA,EACtBE,KAAKD,QAAUA,CAClB,CACD,YAAIE,GACA,OAAOD,KAAKF,iBAAiB/E,WAChC,CACD,SAAImF,GACA,OAAOF,KAAKF,iBAAiBK,SAChC,CACD,eAAIC,GACA,OAAOJ,KAAKD,QAAQM,OAAOL,KAAKF,iBAAiB3H,YAAYC,YAAYoC,MAC5E,CACD,aAAI8F,GACA,OAAON,KAAKD,QAAQM,OAAOL,KAAKF,iBAAiB3H,YAAYC,YAAYqC,IAC5E,CACD,gBAAI8F,GACA,OAAOP,KAAKD,QAAQM,OAAOL,KAAKF,iBAAiB3H,YAAYqI,aAAahG,MAC7E,CACD,cAAIiG,GACA,OAAOT,KAAKD,QAAQM,OAAOL,KAAKF,iBAAiB3H,YAAYqI,aAAa/F,IAC7E,CACD,SAAAiG,CAAUxS,GACN,OAAO8R,KAAKF,iBAAiBjS,QAAQK,EACxC,EAiBL,MAAMyS,GAAyB7S,GAAa,CACxCI,KAAM,qBACN0B,gBAAiB,CAhBE,CACnBoM,aAAa,EACb4E,UAAUC,GACFrU,MAAMC,QAAQoU,EAAQhI,QACfgI,EAAQhI,OAEZ,KAEX,KAAAsC,CAAM2F,EAAKC,GACPA,EAAgB,CACZ1F,UAAWyF,EAAItH,YAAYwH,MAElC,MAoBL,MAAMC,GAAwBnT,GAAa,CACvCI,KAAM,oBACN0B,gBAAiB,CAfE,CACnBgR,UAAUC,GACwB,mBAAnBA,EAAQhI,OACRgI,EAAQhI,OAEZ,KAEX,KAAAsC,CAAM2F,EAAKC,EAAiBG,GACxB,MAAMnB,QAAEA,GAAYe,EAAI5M,QAClBiN,EAAOL,EAAItH,YAAYwH,KAC7BI,EAAYD,EAAKE,KAAK,KAAMC,EAA0BR,EAAI1F,MAAO2E,KAAY1E,GAAc0F,EAAgB,CAAE1F,eAAc6F,EAC9H,MAsCL,MAAMK,GAA4BzT,GAAa,CAC3CI,KAAM,oBACNU,oBAjCoC,CACpC4S,OAAQC,OACRC,YAAaC,EACbC,WAAYH,OACZI,SAAUJ,OACVK,cAAeL,QA6Bf7R,gBAAiB,CA1BA,CACjBgR,UAAUC,IACFA,EAAQkB,KAA2B,SAAnBlB,EAAQmB,QAAsBnB,EAAQmB,OAWnD,KAVI,CACHD,IAAKlB,EAAQkB,IACbC,OAAQ,OACRR,QAASX,EAAQW,QAAU,OAAOS,cAClCP,YAAab,EAAQa,YACrBE,WAAYf,EAAQe,WACpBC,SAAUhB,EAAQgB,SAClBC,cAAejB,EAAQiB,eAKnC,KAAA3G,CAAM2F,EAAKC,EAAiBG,GACxB,MAAMF,KAAEA,GAASF,EAAItH,YACf0I,EAWd,SAA4BlB,EAAM5F,EAAOlH,GACrC,IACI0N,EACAC,EACAC,EACAK,GAJApC,QAAEA,EAAOlS,QAAEA,GAAYqG,EAKvBkO,EAAS,CAAA,EACbR,EAAaZ,EAAKY,WACA,MAAdA,IACAA,EAAa/T,EAAQ+T,YAEzBC,EAAWb,EAAKa,SACA,MAAZA,IACAA,EAAWhU,EAAQgU,UAEvBC,EAAgBd,EAAKc,cACA,MAAjBA,IACAA,EAAgBjU,EAAQiU,eAKxBK,EAF4B,mBAArBnB,EAAKU,YAEUV,EAAKU,cAILV,EAAKU,aAAe,GAE9CvW,OAAOC,OAAOgX,EAAQD,GACtBC,EAAOR,GAAc7B,EAAQsC,UAAUjH,EAAMZ,OAC7C4H,EAAOP,GAAY9B,EAAQsC,UAAUjH,EAAMX,KAClB,UAArBsF,EAAQuC,WACRF,EAAON,GAAiB/B,EAAQuC,UAEpC,OAAOF,CACX,CA9C8BG,CAAmBvB,EAAMF,EAAI1F,MAAO0F,EAAI5M,SAC9DsO,EAAYxB,EAAKQ,OAAQR,EAAKe,IAAKG,GAAeO,MAAK,EAAEpH,EAAWG,MAChEuF,EAAgB,CAAE1F,YAAWG,YAAW,GACzC0F,EACN,MA4CL,MAAMwB,GAA4B,CAC9BC,WAAYhB,EACZiB,UAAW3M,EACX4M,QAAS5M,EACTT,SAAUS,EACV6M,WAAYnB,EACZoB,SAAUpB,GA4Ed,SAASqB,GAAmBzP,EAAQW,GAChC,IAAI+O,EAAiBC,EAAkBhP,EAAQ4L,iBAAiBrH,cAChE,GAA8B,IAA1BwK,EAAenX,QACG,IAAlByH,EAAOzH,QACPU,MAAMC,QAAQwW,EAAe,GAAGE,OAChC3W,MAAMC,QAAQ8G,EAAO,IAMrB,YALAW,EAAQwH,SAAS,CACbzI,KAAM,mBACNqG,SAAU2J,EAAe,GAAG3J,SAC5B+B,UAAW9H,EAAO,KAI1B,IAAI6P,EAAY,GAChB,IAAK,IAAIrV,KAASwF,EAAQ,CACtB,IAAI8P,GAAa,EACjB,IAAK,IAAIxW,EAAI,EAAGA,EAAIoW,EAAenX,OAAQe,GAAK,EAC5C,GAAIoW,EAAepW,GAAGsW,OAASpV,EAAO,CAClCkV,EAAeK,OAAOzW,EAAG,GACzBwW,GAAa,EACb,KACH,CAEAA,GACDD,EAAUnK,KAAKlL,EAEtB,CACD,IAAK,IAAIwV,KAAiBN,EACtB/O,EAAQwH,SAAS,CACbzI,KAAM,sBACNqG,SAAUiK,EAAcjK,WAGhC,IAAK,IAAIkK,KAAYJ,EACjBlP,EAAQ6G,YAAY0I,eAAeD,EAE3C,CAiBK,MAACE,GAAgB,CAClB/C,GACAM,GACAM,GA/FgCzT,GAAa,CAC7CI,KAAM,yBACN4B,eAAgB,CApCJ,CACZ,KAAA6T,CAAM9C,EAASd,GACX,GAAIc,EAAQ8B,YAAc9B,EAAQ+B,WAAa/B,EAAQgC,SAAWhC,EAAQiC,YAAcjC,EAAQkC,SAAU,CACtG,IAQIvN,EARAoO,EAAgB,CAChBjB,WAAY9B,EAAQ8B,YAAc,KAClCC,UAAW/B,EAAQ+B,WAAa,KAChCC,QAAShC,EAAQgC,SAAW,KAC5BC,WAAYjC,EAAQiC,WAAa/C,EAAQ8D,aAAahD,EAAQiC,YAAc,KAC5EC,SAAUlC,EAAQkC,SAAWhD,EAAQ8D,aAAahD,EAAQkC,UAAY,KACtEhD,WASJ,OANIc,EAAQrL,WACRA,EAAWqL,EAAQrL,WAElBA,GAAYqL,EAAQ+B,WAAa/B,EAAQgC,UAC1CrN,EAAWsO,EAAkBjD,EAAQgC,QAAShC,EAAQ+B,YAEnD,CACHmB,YAAaC,SAASnD,EAAQ+B,YAAc/B,EAAQgC,SACpDrN,WACAyO,SAAUL,EAEjB,CACD,OAAO,IACV,EACD,MAAAM,CAAOD,EAAUE,EAAcpE,GAC3B,IAAIqE,EAAsBC,EAAgBF,EAAc,CAAE3J,MAAOyJ,EAASnB,WAAYrI,IAAKwJ,EAASlB,WACpG,OAAIqB,EAWZ,SAAsBzB,EAAYC,EAAW0B,EAAcC,EAAiBJ,GACxE,IAAIK,EAAU7B,EAAa/I,EAAY+I,GAAc,KACjD8B,EAAYC,EAAWP,EAAa3J,OACpCmK,EAAYR,EAAa1J,IACzBmK,EAAiB,GACrB,KAAOH,EAAYE,GAAW,CAC1B,IAAIE,EAECL,IAAWA,EAAQC,EAAUK,eAE1BD,EADAjC,EACgB2B,EAAgBQ,IAAIN,EAAW7B,GAG/B6B,EAEpBG,EAAe3L,KAAKsL,EAAgBV,aAAaS,EAAajE,OAAOwE,MAEzEJ,EAAYO,EAAQP,EAAW,EAClC,CACD,OAAOG,CACX,CA9BmBK,CAAahB,EAAStB,WAAYsB,EAASrB,UAAWqB,EAASlE,QAASA,EAASqE,GAErF,EACV,IAKD1V,cAAegU,KAwBS5U,GAAa,CACrCI,KAAM,iBACNgC,qBAAsB,CAClB,MAAA2I,CAAOA,EAAQ3E,GACX8O,GAAmB,CAACnK,GAAS3E,EAChC,EACDuE,aAAcuK,MAiElBlV,GAAa,CACTI,KAAM,OACNM,eAAgB,CACXkO,GAAUrC,GAA2BqC,EAAMjE,eAEhDnI,gBAAiB,CACb6H,YA3BZ,SAA2BA,EAAajE,GACpCA,EAAQgR,QAAQC,QAAQ,WAAYha,OAAOC,OAAOD,OAAOC,OAAO,GAAIkW,EAA0BnJ,EAAYC,YAAalE,EAAQ6L,UAAW,CAAEqF,KAAMlR,EAAQmR,UAC9J,EA0BYC,WAxBZ,SAA0BA,EAAYpR,GAClC,IAAIgR,QAAEA,GAAYhR,EACdgR,EAAQK,YAAY,cACpBL,EAAQC,QAAQ,YAAaK,EAAeF,EAAYpR,GAEhE,MAwBA,MAAMuR,GACF,WAAA5F,CAAY6F,EAAeC,GACvB3F,KAAK0F,cAAgBA,EACrB1F,KAAK2F,cAAgBA,EACrB3F,KAAK4F,MAAQ,GACb5F,KAAK6F,cAAgB,IAAIC,EAAc9F,KAAK+F,MAAM1E,KAAKrB,MAC1D,CACD,OAAAgG,CAAQC,EAAMC,GACVlG,KAAK4F,MAAM3M,KAAKgN,GAChBjG,KAAK6F,cAAcG,QAAQE,EAC9B,CACD,KAAAC,CAAMC,GACFpG,KAAK6F,cAAcM,MAAMC,EAC5B,CACD,MAAAC,CAAOD,EAAOE,GACVtG,KAAK6F,cAAcQ,OAAOD,EAAOE,EACpC,CACD,KAAAP,GACI,IAAIH,MAAEA,GAAU5F,KAChB,KAAO4F,EAAM9Z,QAAQ,CACjB,IACIma,EADAM,EAAiB,GAErB,KAAQN,EAAOL,EAAMY,SACjBxG,KAAKyG,QAAQR,GACbM,EAAetN,KAAKgN,GAExBjG,KAAK0G,QAAQH,EAChB,CACJ,CACD,OAAAE,CAAQR,GACAjG,KAAK0F,eACL1F,KAAK0F,cAAcO,EAE1B,CACD,OAAAS,CAAQH,GACAvG,KAAK2F,eACL3F,KAAK2F,cAAcY,EAE1B,EAIL,SAASI,GAAWxO,EAAayO,EAAa7G,GAC1C,IAAI3E,EAQJ,OALIA,EADA,iBAAiByL,KAAK1O,EAAY2O,kBAC1B3O,EAAYqI,aAGZrI,EAAYC,YAEjB2H,EAAQgH,YAAY3L,EAAMZ,MAAOY,EAAMX,IAAKuM,EAAgBJ,EAAYK,aAOnF,SAA0B9O,GACtB,IAAI2O,iBAAEA,GAAqB3O,EAC3B,GAAyB,SAArB2O,EACA,MAAO,CAAEzc,KAAM,WAEnB,GAAyB,UAArByc,EACA,MAAO,CAAEzc,KAAM,UAAWE,MAAO,QAErC,IAAI2c,EAAOC,EAAchP,EAAYqI,aAAahG,MAAOrC,EAAYqI,aAAa/F,KAClF,GAAa,OAATyM,GAAiBA,EAAO,EAExB,MAAO,CAAE7c,KAAM,UAAWE,MAAO,QAASC,IAAK,WAGnD,MAAO,CAAEH,KAAM,UAAWE,MAAO,OAAQC,IAAK,UAClD,CAtBkG4c,CAAiBjP,IAAe,CAC1HkP,eAAgBlP,EAAYmP,cAC5BC,iBAAkBX,EAAYY,qBAEtC,CAuBA,MAAMC,GACF,WAAA5H,GACIG,KAAK0H,eAAiB,IAAIC,GAC7B,CACD,WAAAC,CAAY7H,EACZ8H,GACI,MAAMC,EAAa9H,KAAKD,QACxB,GAAIA,IAAY+H,IACY,mBAAbD,EACP7H,KAAK+H,MAAQF,EAEPC,IACN9H,KAAKgI,cAAgBjI,EAAQM,OAAOwH,EAC9B9H,EAAQ8D,aAAagE,GACrB9H,EAAQkI,mBACdjI,KAAKkI,iBAAmB9Z,KAAK+Z,OAEjCnI,KAAKD,QAAUA,EAEX+H,GACA,IAAK,MAAMM,KAAiBpI,KAAK0H,eAAeW,SAC5CD,GAIf,CACD,aAAAE,GACI,OAAOtI,KAAKgI,cACNhI,KAAKD,QAAQwI,kBAAkBvI,KAAKgI,cAAchW,WAC/C5D,KAAK+Z,MAAQnI,KAAKkI,mBACrBlI,KAAKD,QAAQ8D,aAAa7D,KAAK+H,QACxC,CACD,gBAAAS,CAAiBC,GACbzI,KAAK0H,eAAe3C,IAAI0D,EAC3B,CACD,mBAAAC,CAAoBD,GAChBzI,KAAK0H,eAAeiB,OAAOF,EAC9B,EAKL,MAAMG,GACF,WAAA/I,CAAYgJ,GACR7I,KAAK8I,uBAAyBC,EAAQ/I,KAAKgJ,yBAC3ChJ,KAAKrU,mBAAqBod,EAAQpd,IAClCqU,KAAK3T,YAAc0c,EAAQ1c,IAC3B2T,KAAKrO,iBAAmBpB,KACxByP,KAAKiJ,aAAeF,EAAQG,IAC5BlJ,KAAKmJ,WAAaJ,EAAQI,IAC1BnJ,KAAK/C,cAAgB8L,EAAQ9L,IAC7B+C,KAAKhL,eAAiB+T,EAAQ/T,IAC9BgL,KAAKoJ,0BAA4BC,EAAcD,IAC/CpJ,KAAKsJ,aAAeP,EAAQO,IAC5BtJ,KAAKuJ,iBAAmBF,EAAcE,IACtCvJ,KAAKwJ,qBAAuBT,EAAQS,GAAsBC,GAC1DzJ,KAAK0J,kBAAoBX,EAAQW,IACjC1J,KAAK2J,0BAA4BN,EAAcM,IAC/C3J,KAAK2G,WAAaoC,EAAQpC,IAC1B3G,KAAK4J,WAAa,IAAInC,GACtBzH,KAAKkF,QAAU,IAAI2E,EACnB7J,KAAK8J,aAAe,IAAIrE,GAAWzF,KAAK+J,cAAc1I,KAAKrB,MAAOA,KAAKgK,WAAW3I,KAAKrB,OACvFA,KAAKiK,4BAA8B,GACnCjK,KAAKkK,8BAAgC,GACrClK,KAAKmK,wBAA0B,GAC/BnK,KAAKoK,0BAA4B,GACjCpK,KAAKqK,+BAAiC,GACtCrK,KAAKsK,mBAAqB,GAC1BtK,KAAKuK,mBAAqB,GAC1BvK,KAAKF,eAAiB,IAAME,KAAKwK,KACjCxK,KAAKtE,SAAYtC,IACb4G,KAAK8J,aAAa9D,QAAQ5M,EAAO,EAErC4G,KAAK6I,MAAQA,EACb7I,KAAK8J,aAAa3D,QAClBnG,KAAK4J,WAAa,IAAInC,GACtB,IAAItS,EAAyB,CAAA,EACzBsV,EAAczK,KAAK0K,mBAAmB7B,EAAM3T,gBAAiBC,EAAwB0T,EAAM9N,aAC3F4P,EAAkBF,EAAYvS,gBAAgBlI,aAAeya,EAAYxP,YAAYjL,YACrF4a,EAAkB5K,KAAK8I,uBAAuB6B,EAAiBF,EAAa5B,EAAM3T,gBAAiBC,GAGvG0T,EAAM9N,YAAY8P,mBAAqB7K,KACvCA,KAAKkF,QAAQ4F,eAAejC,EAAM9N,aAClCiF,KAAKkF,QAAQ6F,WAAWH,EAAgB/c,SACxC,IAAImd,EAAkB,CAClBpB,WAAY5J,KAAK4J,WACjB7J,QAAS0K,EAAY1K,QACrBlS,QAAS4c,EAAYvS,gBACrB+C,YAAawP,EAAYxP,YACzBF,YAAa8N,EAAM9N,YACnBW,SAAUsE,KAAKtE,SACfwJ,QAASlF,KAAKkF,QACdpF,eAAgBE,KAAKF,gBAErBmL,EA1zBZ,SAAwBpd,EAASkS,EAAS6J,GACtC,IAAIsB,EAAmBrd,EAAQsd,YAE/B,OAAwB,MAApBD,EACOnL,EAAQ8D,aAAaqH,GAEzBtB,EAAWtB,eACtB,CAmzB0B8C,CAAeX,EAAYvS,gBAAiBuS,EAAY1K,QAASC,KAAK4J,YACpFzR,EAAcyS,EAAgBS,qBAAqBC,MAAML,GACxDM,EAAoBpT,EAAYC,YAAa6S,KAC9CA,EAAc9S,EAAYqI,aAAahG,OAG3C,IAAK,IAAIgR,KAAYf,EAAYxP,YAAYxM,YACzC+c,EAASR,GAGb,IAAIvS,EAAeR,GAAiBwS,EAAYvS,gBAAiBC,EAAa6S,GAC1ES,EAAe,CACftW,yBACAwV,kBACAM,cACA9S,cACAuT,cAAe1L,KAAK2J,0BAA0BqB,GAC9CvS,eACAkT,aAAc,CAAE,EAChBrG,WAAYsG,IACZC,qBAAsBD,IACtBE,cAAe,KACfC,eAAgB,GAChBC,UAAW,KACXC,YAAa,KACbC,gBAAiBlM,KAAKuJ,iBAAiByB,GAAiBkB,iBAExDC,EAAkBhhB,OAAOC,OAAOD,OAAOC,OAAO,GAAI4f,GAAkBS,GACxE,IAAK,IAAIW,KAAW3B,EAAYxP,YAAY1M,SACxCpD,OAAOC,OAAOqgB,EAAcW,EAAQ,KAAM,KAAMD,IAEhDE,GAAiBZ,EAAcT,IAC/BhL,KAAKkF,QAAQC,QAAQ,WAAW,GAEpCnF,KAAKtD,MAAQ+O,EACbzL,KAAKgK,aACLhK,KAAK8J,aAAazD,QACrB,CACD,YAAAiG,CAAapX,EAAiBqX,GAC1B,IAAI1D,MAAEA,GAAU7I,UACW3R,IAAvBke,EACA1D,EAAM3T,gBAAkBA,GAGxB2T,EAAM3T,gBAAkB/J,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAAGyd,EAAM3T,iBAAmB,IAAMA,GACxF8K,KAAKsK,mBAAmBrR,QAAQsT,UAETle,IAAvBke,GAAoCA,EAAmBzgB,SACvDkU,KAAK8J,aAAa9D,QAAQ,CACtB/S,KAAM,WAGjB,CACD,aAAA8W,CAAc3Q,GACV,IAAIyP,MAAEA,EAAKnM,MAAEA,EAAKwI,QAAEA,GAAYlF,KAC5B7K,EAx2BZ,SAAsCA,EAAwBiE,GAC1D,MACS,eADDA,EAAOnG,KAEA9H,OAAOC,OAAOD,OAAOC,OAAO,CAAA,EAAI+J,GAAyB,CAAE,CAACiE,EAAOoT,YAAapT,EAAOqT,iBAEvFtX,CAEnB,CAi2BqCuX,CAA6BhQ,EAAMvH,uBAAwBiE,GACpFqR,EAAczK,KAAK0K,mBAAmB7B,EAAM3T,gBAAiBC,EAAwB0T,EAAM9N,aAC3F4P,EAr4BZ,SAAwBvY,EAAUgH,GAErB,qBADDA,EAAOnG,OAEPb,EAAWgH,EAAOhH,UAE1B,OAAOA,CACX,CA+3B8Bua,CAAejQ,EAAMiO,gBAAiBvR,GACxDwR,EAAkB5K,KAAK8I,uBAAuB6B,EAAiBF,EAAa5B,EAAM3T,gBAAiBC,GAGvG0T,EAAM9N,YAAY8P,mBAAqB7K,KACvCkF,EAAQ4F,eAAejC,EAAM9N,aAC7BmK,EAAQ6F,WAAWH,EAAgB/c,SACnC,IAAImd,EAAkB,CAClBpB,WAAY5J,KAAK4J,WACjB7J,QAAS0K,EAAY1K,QACrBlS,QAAS4c,EAAYvS,gBACrB+C,YAAawP,EAAYxP,YACzBF,YAAa8N,EAAM9N,YACnBW,SAAUsE,KAAKtE,SACfwJ,UACApF,eAAgBE,KAAKF,iBAErBmL,YAAEA,EAAW9S,YAAEA,GAAgBuE,EAC/BsD,KAAKwK,MAAQxK,KAAKwK,KAAKa,uBAAyBT,EAAgBS,uBAChElT,EAAcyS,EAAgBS,qBAAqBC,MAAML,IAE7DA,EAl5BR,SAA2BA,EAAa7R,GACpC,MACS,gBADDA,EAAOnG,KAEAmG,EAAOwT,WAEP3B,CAEnB,CA24BsB4B,CAAkB5B,EAAa7R,GAC7CjB,EAv3BR,SAA2B2U,EAAoB1T,EAAQ6R,EAAaI,GAChE,IAAI0B,EACJ,OAAQ3T,EAAOnG,MACX,IAAK,mBACD,OAAOoY,EAAqBC,MAAMlS,EAAOwT,YAAc3B,GAC3D,IAAK,cACD,OAAOI,EAAqBC,MAAMlS,EAAOwT,YAC7C,IAAK,OAED,GADAG,EAAK1B,EAAqB2B,UAAUF,EAAoB7B,GACpD8B,EAAGE,QACH,OAAOF,EAEX,MACJ,IAAK,OAED,GADAA,EAAK1B,EAAqB6B,UAAUJ,EAAoB7B,GACpD8B,EAAGE,QACH,OAAOF,EAInB,OAAOD,CACX,CAk2BsBK,CAAkBhV,EAAaiB,EAAQ6R,EAAaL,EAAgBS,sBAC9D,SAAhBjS,EAAOnG,MACS,SAAhBmG,EAAOnG,MACNsY,EAAoBpT,EAAYqI,aAAcyK,KAC/CA,EAAc9S,EAAYqI,aAAahG,OAE3C,IAAI/B,EAAeU,GAAmBuD,EAAMjE,aAAcW,EAAQjB,EAAa6S,GAC3E1F,EAAa8H,EAAiB1Q,EAAM4I,WAAYlM,EAAQX,EAAcN,EAAa6S,GAEnFa,EADkBxR,GAA2B5B,KACDmS,EAAgB/c,QAAQwf,2BACnE3Q,EAAMmP,sBACPvG,GACAgI,kBAAEA,EAAiBpB,gBAAEA,GAAoBlM,KAAKuJ,iBAAiByB,GAC/DuC,EAAkBvN,KAAKwJ,qBAAqB/Q,GAE5C+U,EAAW,CACXrY,yBACAwV,kBACAM,cACA9S,cACAM,eACA6M,aACAuG,uBACAK,kBACAP,aAVe3L,KAAK0J,kBAAkBmC,EAAqB3a,KAAMoc,EAAmBC,GAWpF7B,cAAe1L,KAAK2J,0BAA0BqB,GAC9Cc,cAAe7P,GAAoBS,EAAMoP,cAAe1S,GACxD2S,eAAgB3P,GAAoBM,EAAMqP,eAAgB3S,GAC1D4S,UAAWzP,GAAgBG,EAAMsP,UAAW5S,GAC5C6S,YAAanP,GAAkBJ,EAAMuP,YAAa7S,IAElD+S,EAAkBhhB,OAAOC,OAAOD,OAAOC,OAAO,GAAI4f,GAAkBwC,GACxE,IAAK,IAAIpB,KAAW3B,EAAYxP,YAAY1M,SACxCpD,OAAOC,OAAOoiB,EAAUpB,EAAQ1P,EAAOtD,EAAQ+S,IAEnD,IAAIsB,EAAapB,GAAiB3P,EAAOsO,GACrC0C,EAAYrB,GAAiBmB,EAAUxC,IAEtCyC,GAAcC,EACfxI,EAAQC,QAAQ,WAAW,GAEtBsI,IAAeC,GACpBxI,EAAQC,QAAQ,WAAW,GAE/BnF,KAAKtD,MAAQ8Q,EACT3E,EAAM8E,UACN9E,EAAM8E,SAASvU,EAEtB,CACD,UAAA4Q,GACI,IAAInB,MAAEA,EAAKnM,MAAEA,GAAUsD,KACnB4N,EAAU5N,KAAKwK,KACfC,EAAczK,KAAK0K,mBAAmB7B,EAAM3T,gBAAiBwH,EAAMvH,uBAAwB0T,EAAM9N,aACjG6P,EAAkB5K,KAAK8I,uBAAuBpM,EAAMiO,gBAAiBF,EAAa5B,EAAM3T,gBAAiBwH,EAAMvH,wBAC/GqV,EAAOxK,KAAKwK,KAAOrf,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAEwe,WAAY5J,KAAK4J,WAAYzJ,UAAWH,KAAK2G,WAAWjK,EAAMvE,YAAayS,EAAgB/c,QAAS4c,EAAY1K,SAAUhF,YAAa8N,EAAM9N,YAAaW,SAAUsE,KAAKtE,SAAUwJ,QAASlF,KAAKkF,QAASpF,eAAgBE,KAAKF,gBAAkB2K,GAAcG,GAAkBlO,GAChVmR,EAAiBpD,EAAYxP,YAAY/K,qBACzC4d,EAAqBF,GAAWA,EAAQ1V,gBACxC6V,EAAqBtD,EAAYvS,gBACrC,GAAI4V,GAAsBA,IAAuBC,EAAoB,CAC7DD,EAAmBxL,WAAayL,EAAmBzL,WAEnD5F,EAAMjE,aAAe+R,EAAK/R,aA73B1C,SAAuCA,EAAcN,EAAajE,GAC9D,IAAIkE,EAAcD,EAAcA,EAAYC,YAAc,KAC1D,OAAOsB,GAAkBjB,EAAcoB,GAAqBpB,EAAcvE,GAAUkE,GAAa,EAAMlE,EAC3G,CA03ByD8Z,CAA8BxD,EAAK/R,aAAciE,EAAMvE,YAAaqS,GAC7G9N,EAAM4I,WAAakF,EAAKlF,WAAa2I,EAAsBzD,EAAKlF,WAAYsI,EAAQ7N,QAASyK,EAAKzK,SAClGrD,EAAMmP,qBAAuBrB,EAAKqB,qBAAuBoC,EAAsBzD,EAAKqB,qBAAsB+B,EAAQ7N,QAASyK,EAAKzK,UAEpI,IAAK,IAAIyM,KAAcqB,GACkC,IAAjD7N,KAAKuK,mBAAmB2D,QAAQ1B,IAChCsB,EAAmBtB,KAAgBuB,EAAmBvB,IACtDqB,EAAerB,GAAYuB,EAAmBvB,GAAahC,EAGtE,CACDxK,KAAKuK,mBAAqB,GACtB1B,EAAMsF,QACNtF,EAAMsF,OAAO3D,EAEpB,CACD,kBAAAE,CAAmBxV,EAAiBC,EAAwB4F,GAExD,IAAKiF,KAAKsK,mBAAmBxe,QACzBoJ,IAAoB8K,KAAKoO,uBACzBjZ,IAA2B6K,KAAKqO,6BAChC,OAAOrO,KAAKsO,0BAEhB,IAAIC,eAAEA,EAActT,YAAEA,EAAW7F,eAAEA,EAAcoZ,oBAAEA,EAAmBC,MAAEA,GAAWzO,KAAK0O,0BAA0BxZ,EAAiBC,GACnIwZ,GAAmBF,GACnB,IAAI1O,EAAUC,KAAKiJ,aAAasF,EAAejM,SAAUiM,EAAeK,OAAQL,EAAeM,sBAAuBN,EAAeO,SAAUP,EAAe7jB,SAAUuQ,EAAauT,EAAqBD,EAAeQ,uBACrN3R,EAAY4C,KAAKhL,eAAeiG,EAAY9L,MAAO6Q,KAAKoO,sBAAuBpO,KAAKqO,6BAA8BjZ,GAClH+H,EAAQ6C,KAAKmJ,WAAWoF,EAAgBtT,GACxC+T,EAAgBhP,KAAK/C,cAAcsR,EAAgBvO,KAAKoO,sBAAuBjR,EAAOC,EAAWrC,GACrG,OAAOiF,KAAKsO,0BAA4B,CACpCpW,gBAAiBqW,EACjBtT,cACA8E,UACA3C,YACAD,QACA6R,gBACA5Z,iBACA6Z,oBAAqBT,EAAoBpiB,IAEhD,CAED,yBAAAsiB,CAA0BxZ,EAAiBC,GACvC,IAAI+Z,QAAEA,EAAON,OAAEA,GAAWO,EAAgB,CACtCpY,EACA7B,EACAC,IAEAqZ,EAAsBxO,KAAKrU,mBAAmBujB,GAC9CD,EAAsBT,EAAoBpiB,IAC1CgJ,EAAiB4K,KAAK3T,YAAYuiB,GAAUJ,EAAoB3iB,YAAaojB,GAAqBphB,QAClGoN,EAAc+E,KAAKrO,iBAAiBuD,EAAgBka,SAAW,GAAI1L,IACnEpL,EAAW0H,KAAKqK,+BAAiClf,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAAEikB,GAAuBC,GAA6BC,GAA2BtU,EAAY7K,kBAAmB6K,EAAY5K,gBACrPoe,EAAQ,CAAA,EACR7hB,EAAMuiB,EAAgB,CACtBpY,EACA3B,EACAF,EACAC,IAEA0L,EAAU,CAAA,EACV2O,EAAaxP,KAAKiK,4BAClBwF,EAAiBzP,KAAKkK,8BACtBwF,GAAa,EACjB,IAAK,IAAIlD,KAAc5f,GACkC,IAAjDoT,KAAKsK,mBAAmB4D,QAAQ1B,KAAuB5f,EAAI4f,KAAgBgD,EAAWhD,IAAgBmD,EAA2BnD,IAChIA,KAAcgD,GACfG,EAA2BnD,GAAYgD,EAAWhD,GAAa5f,EAAI4f,KACnE3L,EAAQ2L,GAAciD,EAAejD,GAEhClU,EAASkU,IACd3L,EAAQ2L,GAAclU,EAASkU,GAAY5f,EAAI4f,IAC/CkD,GAAa,GAGbjB,EAAMjC,GAAcgD,EAAWhD,GAWvC,OARIkD,IACA1P,KAAKiK,4BAA8Brd,EACnCoT,KAAKkK,8BAAgCrJ,EACrCb,KAAKoO,sBAAwBlZ,EAC7B8K,KAAKqO,6BAA+BlZ,GAExC6K,KAAKuK,mBAAmBtR,QAAQ+G,KAAKsK,oBACrCtK,KAAKsK,mBAAqB,GACnB,CACHnX,WAAY6M,KAAKiK,4BACjBsE,eAAgBvO,KAAKkK,8BACrBjP,cACAuT,sBACApZ,iBACAqZ,QAEP,CACD,uBAAAzF,CAAwB5W,EAAUqY,EAAavV,EAAiBC,GAC5D,IAAIZ,EAAWkW,EAAYrN,UAAUhL,GACrC,IAAKmC,EACD,MAAM,IAAIxB,MAAM,aAAaX,8EAEjC,IAAImc,eAAEA,EAAcE,MAAEA,GAAUzO,KAAK4P,sBAAsBrb,EAAUkW,EAAYxP,YAAawP,EAAYrV,eAAgBF,EAAiBC,GAwB3I,OAvBAwZ,GAAmBF,GACnBzO,KAAK4J,WAAWhC,YAAY6C,EAAY1K,QAASwO,EAAepG,KAsBzD,CAAE5T,WAAU1G,QAAS0gB,EAAgBlD,qBArBjBrL,KAAKoJ,0BAA0B,CACtDyG,0BAA2Btb,EAASqC,eAAeiZ,0BACnDjG,WAAY5J,KAAK4J,WACjBpU,SAAUjB,EAASiB,SACnBC,aAAclB,EAASkB,aACvBqa,eAAgBvb,EAASqC,eAAekZ,eACxC/P,QAAS0K,EAAY1K,QACrBhF,YAAaiF,KAAK6I,MAAM9N,YACxBgV,YAAaxB,EAAewB,YAC5BC,YAAazB,EAAeyB,YAC5BC,oBAAqB1B,EAAe0B,oBACpCC,SAAU3B,EAAe2B,SACzBC,cAAe5B,EAAe4B,cAC9BC,cAAe7B,EAAe6B,cAC9BC,WAAY9B,EAAe8B,WAC3BC,SAAU/B,EAAe+B,SACzBC,gBAAiBhC,EAAeiC,WAChCC,kBAAmBlC,EAAemC,aAClCC,eAAgBpC,EAAeoC,iBAG+BtL,QADpDrF,KAAKsJ,aAAalX,EAAU4N,KAAKF,eAAgB2K,EAAY1K,SAE9E,CACD,qBAAA6P,CAAsBrb,EAAU0G,EAAa7F,EAAgBF,EAAiBC,GAC1E,IAAIvI,EAAMuiB,EAAgB,CACtBpY,EACAxC,EAASqC,eACTxB,EACAF,EACAX,EAASW,gBACTC,IAEAmD,EAAWnN,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAA,EAAIikB,GAAuBC,GAA6BC,GAA2BqB,GAAuB3V,EAAY7K,kBAAmB6K,EAAY5K,gBACpPwQ,EAAU,CAAA,EACV2O,EAAaxP,KAAKmK,wBAClBsF,EAAiBzP,KAAKoK,0BACtBsF,GAAa,EACbjB,EAAQ,CAAA,EACZ,IAAK,IAAIjC,KAAc5f,EACfA,EAAI4f,KAAgBgD,EAAWhD,IAC9BmD,EAA2BnD,IACxBmD,EAA2BnD,GAAY5f,EAAI4f,GAAagD,EAAWhD,IACvE3L,EAAQ2L,GAAciD,EAAejD,IAGjC5f,EAAI4f,KAAgBxM,KAAKiK,4BAA4BuC,IACpDmD,EAA2BnD,IACxBmD,EAA2BnD,GAAY5f,EAAI4f,GAAaxM,KAAKiK,4BAA4BuC,IACzFA,KAAcxM,KAAKkK,gCACnBrJ,EAAQ2L,GAAcxM,KAAKkK,8BAA8BsC,IAGxDlU,EAASkU,GACd3L,EAAQ2L,GAAclU,EAASkU,GAAY5f,EAAI4f,IAG/CiC,EAAMjC,GAAc5f,EAAI4f,GAE5BkD,GAAa,GAOrB,OAJIA,IACA1P,KAAKmK,wBAA0Bvd,EAC/BoT,KAAKoK,0BAA4BvJ,GAE9B,CACH1N,WAAY6M,KAAKmK,wBACjBoE,eAAgBvO,KAAKoK,0BACrBqE,QAEP,EAEL,SAASvF,GAAe5G,EAAUuO,EAAgBhC,EAAuBC,EAAUpkB,EAAUuQ,EAAauT,EAAqBjH,GAC3H,IAAIqH,EAASviB,GAAYwkB,GAAkBrC,EAAoB3iB,YAAa2iB,EAAoBpiB,KAChG,OAAO,IAAI0kB,EAAQ,CACfC,eAAgB,UAChBzO,WACA0O,kBAAmB/V,EAAYlL,mBAC/B6e,SACAC,wBACAC,WACApkB,WACAmF,aAAcoL,EAAYpL,aAC1B0X,oBAER,CACA,SAAS4B,GAAWtb,EAASoN,GAEzB,OAAO,IADUA,EAAYtL,aAAa9B,EAAQojB,cAAgBhf,IAC5CpE,EAC1B,CACA,SAASub,GAA0BP,GAE/B,OAAO,IADyBA,EAAMgH,2BAA6BqB,GAC9BrI,EACzC,CACA,SAASS,GAAarW,EAAM6M,EAAgBC,GACxC,OAAO,IAAIH,GAAS3M,EAAM6M,EAAgBC,EAC9C,CACA,SAASyJ,GAAqB/Q,GAC1B,OAAOjF,EAAQiF,GAAee,GAAgBA,EAAY2X,IAC9D,CACA,SAASzH,GAAkB0H,EAAW9D,EAAmBC,GACrD,IAAI5B,EAAe,CAAE,GAAI2B,GACzB,IAAK,IAAI+D,KAASD,EAAW,CACzB,IAAIjgB,EAAMigB,EAAUC,GAChBlgB,EAAImI,UAAYiU,EAAgBpc,EAAImI,YACpCqS,EAAa0F,GAAS9D,EAAgBpc,EAAImI,UAEjD,CACD,OAAOqS,CACX,CACA,SAASpC,GAAiByB,GACtB,IAAInd,QAAEA,GAAYmd,EAClB,MAAO,CACHsC,kBAAmBgE,EAAc,CAC7BC,QAAS1jB,EAAQ2jB,aACjBC,SAAU5jB,EAAQ4jB,SAClBC,cAAe7jB,EAAQ8jB,mBACvBC,iBAAkB/jB,EAAQgkB,sBAC1BC,WAAYjkB,EAAQkkB,gBACpBC,QAAyC,kBAAzBnkB,EAAQokB,aAA6BpkB,EAAQokB,kBAAe5jB,EAC5E6jB,MAAOrkB,EAAQskB,WACfC,gBAAiBvkB,EAAQwkB,qBACzBC,YAAazkB,EAAQ0kB,iBACrBC,UAAW3kB,EAAQ4kB,eACnBC,MAAO7kB,EAAQ8kB,YAEhB3H,GACHkB,gBAAiBoF,EAAc,CAC3BQ,WAAYjkB,EAAQ+kB,iBACpBZ,QAA0C,kBAA1BnkB,EAAQglB,cAA8BhlB,EAAQglB,mBAAgBxkB,EAC9E6jB,MAAOrkB,EAAQilB,aAChB9H,GAEX,CACA,SAASqB,GAAiB3P,EAAOxI,GAC7B,IAAK,IAAI6e,KAAiB7e,EAAQ+G,YAAYzM,eAC1C,GAAIukB,EAAcrW,GACd,OAAO,EAGf,OAAO,CACX,CACA,SAASiN,GAA0BqB,GAC/B,OAAOgI,EAAmBhI,EAAgBnd,QAAQ6d,cAAeV,EACrE,CACA,SAAS2D,GAAmB9gB,EAASolB,GACjC,IAAK,IAAIzG,KAAc3e,EACnB4D,QAAQC,KAAK,mBAAmB8a,MAC3ByG,EAAW,cAAcA,KAAc,IAEpD,CAEA,MAAMC,WAAuBrf,GACzB,MAAAsf,GACI,IAAIC,EAAWpT,KAAK6I,MAAMwK,aAAajnB,KAAKknB,GAAgBtT,KAAKuT,kBAAkBD,KACnF,OAAOvf,GAAc,MAAO,CAAEyf,UAAW,uBAAyBJ,EACrE,CACD,iBAAAG,CAAkBD,GACd,IAAIzK,MAAEA,GAAU7I,MACZ7C,MAAEA,GAAU6C,KAAK9L,QACjBkf,EAAW,GACXK,GAAgB,EACpB,IAAK,IAAIC,KAAUJ,EAAa,CAC5B,IAAI1U,WAAEA,EAAUE,YAAEA,EAAW9U,WAAEA,EAAU+U,WAAEA,EAAU9H,WAAEA,GAAeyc,EACtE,GAAmB,UAAf9U,EACA6U,GAAgB,EAChBL,EAASna,KAAKlF,GAAc,KAAM,CAAEyf,UAAW,mBAAoBxlB,GAAI6a,EAAM8K,SAAW9K,EAAM3I,YAE7F,CACD,IAAI0T,EAAYhV,IAAeiK,EAAMgL,aACjCC,GAAejL,EAAMkL,gBAAiC,UAAfnV,IACrCiK,EAAMmL,eAAgC,SAAfpV,IACvBiK,EAAMoL,eAAgC,SAAfrV,EACzBsV,EAAgB,CAAC,MAAMtV,WAAqBzB,EAAMgX,SAAS,WAC3DP,GACAM,EAAcjb,KAAKkE,EAAMgX,SAAS,iBAEtCf,EAASna,KAAKlF,GAAc,SAAU,CAAEd,KAAM,SAAUiN,MAA6B,mBAAfjJ,EAA4BA,EAAW4R,EAAMlJ,SAAW1I,EAAYmd,SAAUN,EAAY,eAAgBF,EAAWJ,UAAWU,EAAc9mB,KAAK,KAAMinB,QAASvV,GAAe9U,IAAe+U,EAAahL,GAAc,OAAQ,CAAEyf,UAAWzU,EAAYuV,KAAM,QAAW,KACtV,CACJ,CACD,GAAIlB,EAAStnB,OAAS,EAAG,CACrB,IAAIyoB,EAAkBd,GAAiBtW,EAAMgX,SAAS,gBAAmB,GACzE,OAAOpgB,GAAc,MAAO,CAAEyf,UAAWe,MAAqBnB,EACjE,CACD,OAAOA,EAAS,EACnB,EAGL,MAAMoB,WAAgB3gB,GAClB,MAAAsf,GACI,IAEIsB,EACAC,GAHAC,MAAEA,EAAKC,eAAEA,GAAmB5U,KAAK6I,MACjCgM,GAAW,EAGXlX,EAAiBgX,EAAMhX,eACvBmX,EAAgBnX,EAAeoX,OAoBnC,OAnBIpX,EAAeqX,MACfH,GAAW,EACXJ,EAAe9W,EAAeqX,MAG9BP,EAAe9W,EAAenD,MAE9BmD,EAAesX,OACfJ,GAAW,EACXH,EAAa/W,EAAesX,OAG5BP,EAAa/W,EAAelD,IAOxB1G,GAAc,MAAO,CAAEyf,UALd,CACboB,GAAkB,GAClB,aACAC,EAAW,iBAAmB,IAEmBznB,KAAK,MACtD4S,KAAKkV,cAAc,QAAST,GAAgB,IAC5CzU,KAAKkV,cAAc,SAAUJ,GAAiB,IAC9C9U,KAAKkV,cAAc,MAAOR,GAAc,IAC/C,CACD,aAAAQ,CAAcC,EAAK9B,GACf,IAAIxK,MAAEA,GAAU7I,KAChB,OAAQjM,GAAcmf,GAAgB,CAAEiC,IAAKA,EAAK9B,aAAcA,EAAcnT,MAAO2I,EAAM3I,MAAOP,QAASkJ,EAAMlJ,QAASkU,aAAchL,EAAMgL,aAAcE,eAAgBlL,EAAMkL,eAAgBC,cAAenL,EAAMmL,cAAeC,cAAepL,EAAMoL,cAAeN,QAAS9K,EAAM8K,SAC5R,EAGL,MAAMyB,WAAoBvhB,GACtB,WAAAgM,GACIwV,SAASC,WACTtV,KAAKtD,MAAQ,CACT6Y,eAAgB,MAEpBvV,KAAKwV,SAAYC,IACbzV,KAAKyV,GAAKA,EACVC,GAAO1V,KAAK6I,MAAM8M,MAAOF,GACzBzV,KAAK4V,sBAAsB,EAE/B5V,KAAK6V,aAAe,KAChB7V,KAAK4V,sBAAsB,CAElC,CACD,MAAAzC,GACI,IAAItK,MAAEA,EAAKnM,MAAEA,GAAUsD,MACnB8V,YAAEA,GAAgBjN,EAClBhU,EAAa,CACb,kBACCihB,GAAejN,EAAMkN,QAAUlN,EAAMmN,OAChC,yBACA,2BAENA,EAAS,GACTC,EAAgB,GAgBpB,OAfIH,EAC6B,OAAzBpZ,EAAM6Y,eACNS,EAAStZ,EAAM6Y,eAAiBO,EAOhCG,EAAoB,EAAIH,EAAe,IAAvB,IAIpBE,EAASnN,EAAMmN,QAAU,GAErBjiB,GAAc,MAAO,CAAE,kBAAmB8U,EAAMqN,YAAaC,IAAKnW,KAAKwV,SAAUhC,UAAW3e,EAAWzH,KAAK,KAAMgpB,MAAO,CAAEJ,SAAQC,kBAAmBpN,EAAMuK,SACvK,CACD,iBAAAiD,GACIrW,KAAK9L,QAAQoiB,iBAAiBtW,KAAK6V,aACtC,CACD,oBAAAU,GACIvW,KAAK9L,QAAQsiB,oBAAoBxW,KAAK6V,aACzC,CACD,oBAAAD,GACQ5V,KAAKyV,IACLzV,KAAK6I,MAAMiN,aAEX9V,KAAKyW,SAAS,CAAElB,eAAgBvV,KAAKyV,GAAGiB,aAE/C,EAML,MAAMC,WAAsBC,GACxB,WAAA/W,CAAYgX,GACRxB,MAAMwB,GACN7W,KAAK8W,eAAiB,CAAC9X,EAAI+X,KACvB,IAAI/jB,UAAEA,GAAcgN,MAChB9L,QAAEA,GAAYlB,EACdgkB,EAAMC,GAASF,GACnB,GAAIC,GACAhkB,EAAUkkB,iBAAiBlY,EAAGE,QAAS,CAGvC,IAAIiY,EAAkBC,GAAepY,EAAGE,OAAQ,wBAC5C6C,EAAMoV,EAAkBA,EAAgBE,cAAc,WAAWC,KAAO,GAC5EpjB,EAAQgR,QAAQC,QAAQ,aAAc,CAClCsQ,GAAIsB,EACJQ,MAAO,IAAIC,GAAUxkB,EAAUkB,QAAS8iB,EAAIS,WAAWtmB,IAAK6lB,EAAIS,WAAWC,UAC3EC,QAAS3Y,EACToG,KAAMlR,EAAQmR,UAEdtD,IAAQ/C,EAAG4Y,mBACXC,OAAOC,SAASR,KAAOvV,EAE9B,GAEL/B,KAAK+X,QAAUC,GAAiBnB,EAASpB,GAAI,QAAS,YACtDzV,KAAK8W,eACR,EAOL,MAAMmB,WAAsBrB,GACxB,WAAA/W,CAAYgX,GACRxB,MAAMwB,GAEN7W,KAAKkY,oBAAuBzC,IACpBA,IAAOzV,KAAKmY,cACZnY,KAAKoY,eAAe,KAAMpY,KAAKmY,aAClC,EAELnY,KAAKqY,eAAiB,CAACrZ,EAAI+X,KACnBE,GAASF,KACT/W,KAAKmY,aAAepB,EACpB/W,KAAKsY,aAAa,kBAAmBtZ,EAAI+X,GAC5C,EAEL/W,KAAKoY,eAAiB,CAACpZ,EAAI+X,KACnB/W,KAAKmY,eACLnY,KAAKmY,aAAe,KACpBnY,KAAKsY,aAAa,kBAAmBtZ,EAAI+X,GAC5C,EAEL/W,KAAKuY,qBAAuBC,GAAwB3B,EAASpB,GAAI,YACjEzV,KAAKqY,eAAgBrY,KAAKoY,eAC7B,CACD,OAAAL,GACI/X,KAAKuY,sBACR,CACD,YAAAD,CAAaG,EAAczZ,EAAI+X,GAC3B,IAAI/jB,UAAEA,GAAcgN,MAChB9L,QAAEA,GAAYlB,EACdgkB,EAAMC,GAASF,GACd/X,IAAMhM,EAAUkkB,iBAAiBlY,EAAGE,SACrChL,EAAQgR,QAAQC,QAAQsT,EAAc,CAClChD,GAAIsB,EACJQ,MAAO,IAAIC,GAAUtjB,EAAS8iB,EAAIS,WAAWtmB,IAAK6lB,EAAIS,WAAWC,UACjEC,QAAS3Y,EACToG,KAAMlR,EAAQmR,SAGzB,EAGL,MAAMqT,WAAwBC,EAC1B,WAAA9Y,GACIwV,SAASC,WACTtV,KAAK4Y,iBAAmB7P,EAAQ6P,GAChC5Y,KAAK6Y,0BAA4B9P,EAAQ8P,IACzC7Y,KAAK8Y,kBAAoB/P,EAAQ+P,IACjC9Y,KAAK+Y,UAAYC,KACjBhZ,KAAKiZ,UAAYD,KACjBhZ,KAAKkZ,kBAAoB,GAEzBlZ,KAAKtD,MAAQ,CACTyc,YAAaC,KAIjBpZ,KAAKqZ,6BAA+B,CAACrmB,EAAWsmB,KAC5C,IAAIzC,EAAW0C,EAAyBvmB,EAAWsmB,GAM/CE,EALuB,CACvB7C,GACAsB,IAE0CjsB,OAAOgU,KAAK6I,MAAM5N,YAAYxL,uBACtCrD,KAAKqtB,GAAwB,IAAIA,EAAoB5C,KAC3F7W,KAAKkZ,kBAAkBlmB,EAAU0mB,KAAOF,EACxCG,GAAyB3mB,EAAU0mB,KAAO7C,CAAQ,EAEtD7W,KAAK4Z,+BAAkC5mB,IACnC,IAAI6mB,EAAY7Z,KAAKkZ,kBAAkBlmB,EAAU0mB,KACjD,GAAIG,EAAW,CACX,IAAK,IAAIC,KAAYD,EACjBC,EAAS/B,iBAEN/X,KAAKkZ,kBAAkBlmB,EAAU0mB,IAC3C,QACMC,GAAyB3mB,EAAU0mB,IAAI,EAIlD1Z,KAAK+Z,aAAe,IAAIjU,GAAc,KAClC9F,KAAK6I,MAAM3D,QAAQC,QAAQ,WAAW,GACtCnF,KAAK6I,MAAM3D,QAAQC,QAAQ,eAAgB,CAAEC,KAAMpF,KAAK6I,MAAMxD,SAAU,IAE5ErF,KAAKga,mBAAsBhb,IACvB,IAAInR,QAAEA,GAAYmS,KAAK6I,MACnBhb,EAAQmsB,oBACRhb,EAAGE,SAAW2Y,QAEd7X,KAAK+Z,aAAa/T,QAAQnY,EAAQosB,kBACrC,CAER,CAID,MAAA9G,GACI,IAII+G,GAJArR,MAAEA,GAAU7I,MACZgP,cAAEA,EAAanhB,QAAEA,GAAYgb,EAC7BsR,GAAY,EACZC,EAAa,GAEbvR,EAAMwR,cAAgBxR,EAAMyR,SAC5BF,EAAa,GAEU,MAAlBvsB,EAAQmoB,OACbmE,GAAY,EAEkB,MAAzBtsB,EAAQ0sB,cACbH,EAAavsB,EAAQ0sB,cAGrBL,EAAkBpoB,KAAKC,IAAIlE,EAAQioB,YAAa,IAEpD,IAAI0E,EAAcxa,KAAK4Y,iBAAiB/P,EAAMtU,SAAUsU,EAAMxD,QAASwD,EAAMhb,QAASgb,EAAMwC,qBAAsBxC,EAAM9I,QAAS8I,EAAMe,WAAYf,EAAM1L,MAAO0L,EAAM5N,YAAa4N,EAAMnN,SAAUmN,EAAM/I,eAAgB+I,EAAM3D,QAAS2D,EAAM9N,YAAaiF,KAAKqZ,6BAA8BrZ,KAAK4Z,gCAC/RT,EAAenK,EAAc3R,QAAU2R,EAAc3R,OAAOQ,SAC1DmC,KAAKtD,MAAMyc,iBACX9qB,EACN,OAAQ0F,GAAcC,GAAgBymB,SAAU,CAAEpkB,MAAOmkB,GACrDzmB,GAAc2mB,GAAU,CAAEpvB,KAAM,QAAUqvB,IACtC,IAAIC,EAAe5a,KAAK8Y,kBAAkBjQ,EAAMtU,SAAUsU,EAAM1Q,YAAa0Q,EAAMwC,qBAAsBxC,EAAMoC,YAAa0P,EAAS9R,EAAM1I,WAC3I,OAAQpM,GAAc8mB,GAAU,KAC5B7L,EAAc3R,QAAWtJ,GAAcygB,GAASrpB,OAAOC,OAAO,CAAE+qB,IAAKnW,KAAK+Y,UAAWnE,eAAgB,oBAAqBD,MAAO3F,EAAc3R,OAAQsW,QAASwF,GAAeyB,IAC/K7mB,GAAcqhB,GAAa,CAAEW,OAAQoE,EAAWnE,OAAQoE,EAAYtE,YAAaoE,EAAiBhE,YAAaiD,GAC3GnZ,KAAK8a,WAAWjS,GAChB7I,KAAK+a,sBACT/L,EAAcxR,QAAWzJ,GAAcygB,GAASrpB,OAAOC,OAAO,CAAE+qB,IAAKnW,KAAKiZ,UAAWrE,eAAgB,oBAAqBD,MAAO3F,EAAcxR,OAAQmW,QAAS,IAAMiH,IAAkB,IAEvM,CACD,iBAAAvE,GACI,IAAIxN,MAAEA,GAAU7I,KAChBA,KAAKtQ,qBAAuBmZ,EAAM5N,YAAYvL,qBACzCtD,KAAK4uB,GAA6B,IAAIA,EAAyBnS,KACpEgP,OAAOoD,iBAAiB,SAAUjb,KAAKga,oBACvC,IAAI1pB,gBAAEA,GAAoBuY,EAAM5N,YAChC,IAAK,IAAIigB,KAAY5qB,EACjBA,EAAgB4qB,GAAUrS,EAAMqS,GAAWrS,EAElD,CACD,kBAAAsS,CAAmBC,GACf,IAAIvS,MAAEA,GAAU7I,MACZ1P,gBAAEA,GAAoBuY,EAAM5N,YAChC,IAAK,IAAIigB,KAAY5qB,EACbuY,EAAMqS,KAAcE,EAAUF,IAC9B5qB,EAAgB4qB,GAAUrS,EAAMqS,GAAWrS,EAGtD,CACD,oBAAA0N,GACIsB,OAAOwD,oBAAoB,SAAUrb,KAAKga,oBAC1Cha,KAAK+Z,aAAauB,QAClB,IAAK,IAAIC,KAAevb,KAAKtQ,qBACzB6rB,EAAYxD,UAEhB/X,KAAK6I,MAAM3D,QAAQC,QAAQ,WAC9B,CACD,kBAAA4V,GACI,IAAIlS,MAAEA,GAAU7I,KACZoT,EAAWvK,EAAM5N,YAAY1L,qBAAqBnD,KAAK2uB,GAAuBA,EAAmBlS,KACrG,OAAO9U,GAAc8mB,GAAU,MAAOzH,EACzC,CACD,UAAA0H,CAAWjS,GACP,IAAI5N,YAAEA,GAAgB4N,GAClBtU,SAAEA,GAAasU,EACf/U,EAAY,CACZqE,YAAa0Q,EAAM1Q,YACnBuT,cAAe7C,EAAM6C,cACrBpG,WAAYuD,EAAMgD,qBAClBF,aAAc9C,EAAM8C,aACpBG,cAAejD,EAAMiD,cACrBC,eAAgBlD,EAAMkD,eACtBC,UAAWnD,EAAMmD,UACjBC,YAAapD,EAAMoD,YACnBoO,aAAcxR,EAAMwR,aACpBC,SAAUzR,EAAMyR,UAEhBkB,EAAexb,KAAK6Y,0BAA0B5d,EAAY7L,uBAC9D,IAAK,IAAIqsB,KAAeD,EACpBrwB,OAAOC,OAAO0I,EAAW2nB,EAAYC,UAAU5nB,EAAW+U,IAE9D,IAAI8S,EAAgBpnB,EAASvB,UAC7B,OAAQe,GAAc4nB,EAAexwB,OAAOC,OAAO,CAAE,EAAE0I,GAC1D,EAEL,SAASglB,GAAkBvkB,EAAU4D,EAAakT,EAAsBJ,EAAa9C,EAAKjI,GAEtF,IAAI0b,EAAYvQ,EAAqBC,MAAMnD,OAAK9Z,GAAW,GACvDwtB,EAAWxQ,EAAqB2B,UAAU7U,EAAa8S,GAAa,GACpE6Q,EAAWzQ,EAAqB6B,UAAU/U,EAAa8S,GAAa,GACxE,MAAO,CACH/K,QACA2T,aAActf,EAAStB,KACvB0M,QAASpL,EAASmB,WAClBqe,eAAgB6H,EAAU3O,UAAY1B,EAAoBpT,EAAYqI,aAAc2H,GACpF6L,cAAe6H,EAAS5O,QACxBgH,cAAe6H,EAAS7O,QAEhC,CAGA,SAAS4L,GAA0BkD,GAC/B,OAAOA,EAAW3vB,KAAK4vB,GAAa,IAAIA,GAC5C,CAEA,MAAMC,WAAiBC,EACnB,WAAArc,CAAY4V,EAAIvgB,EAAkB,IAC9BmgB,QACArV,KAAKmc,aAAc,EACnBnc,KAAKoc,YAAa,EAClBpc,KAAKqc,kBAAoB,GACzBrc,KAAKsc,sBAAwB,EAC7Btc,KAAKuc,aAAgBnjB,IAEjB,OAAQA,EAAOnG,MACX,IAAK,iBACL,IAAK,mBACD+M,KAAKwc,aAAaC,WACzB,EAELzc,KAAK0c,WAAclS,IACfxK,KAAK2c,YAAcnS,EACnBxK,KAAKwc,aAAaxW,QAAQwE,EAAKtS,gBAAgB0kB,cAAc,EAEjE5c,KAAK6c,oBAAsB,KACvB,GAAI7c,KAAKmc,YAAa,CAClBnc,KAAKoc,YAAa,EAClB,IAAIO,YAAEA,GAAgB3c,KACtB8c,GAAU,KACN3J,GAAOpf,GAAcgpB,EAAc,CAAElvB,QAAS8uB,EAAYzkB,gBAAiBiF,MAAOwf,EAAYxf,MAAO+H,QAASyX,EAAYzX,UAAW,CAACrQ,EAAYmhB,EAAQqE,EAAcC,KACpKta,KAAKgd,cAAcnoB,GACnBmL,KAAKid,UAAUjH,GACPjiB,GAAcmpB,EAASzC,SAAU,CAAEpkB,MAAO2J,KAAKsc,uBACnDvoB,GAAc2kB,GAAiBvtB,OAAOC,OAAO,CAAEivB,aAAcA,EAAcC,SAAUA,GAAYqC,QACrG3c,KAAKyV,GAAG,GAEnB,MACQzV,KAAKoc,aACVpc,KAAKoc,YAAa,EAClBjJ,GAAO,KAAMnT,KAAKyV,IAClBzV,KAAKgd,cAAc,IACnBhd,KAAKid,UAAU,IAClB,EAELE,EAAkB1H,GAClBzV,KAAKyV,GAAKA,EACVzV,KAAKwc,aAAe,IAAI1W,EAAc9F,KAAK6c,qBAC3C,IAAIjU,GAAoB,CACpB1T,kBACA6F,YAAaiF,KACb2N,SAAU3N,KAAKuc,aACfpO,OAAQnO,KAAK0c,YAEpB,CACD,MAAAvJ,GACI,IAAIiK,EAAepd,KAAKmc,YACnBiB,EAIDpd,KAAKsc,uBAAyB,EAH9Btc,KAAKmc,aAAc,EAKvBnc,KAAKwc,aAAaxW,UACdoX,GACApd,KAAKqd,YAEZ,CACD,OAAAtF,GACQ/X,KAAKmc,cACLnc,KAAKmc,aAAc,EACnBnc,KAAKwc,aAAaxW,UAEzB,CACD,UAAAqX,GACIP,GAAU,KACNzH,MAAMgI,YAAY,GAEzB,CACD,cAAAC,CAAenc,GACXnB,KAAKwc,aAAarW,MAAM,kBACxBhF,IACAnB,KAAKwc,aAAanW,OAAO,iBAC5B,CACD,cAAAkX,GACIvd,KAAKwc,aAAarW,MAAM,iBAC3B,CACD,eAAAqX,GACIxd,KAAKwc,aAAanW,OAAO,kBAAkB,EAC9C,CACD,YAAAiG,CAAapX,EAAiBqX,GAC1BvM,KAAK6K,mBAAmByB,aAAapX,EAAiBqX,EACzD,CACD,aAAAyQ,CAAcnoB,GACV,IAAKhE,EAAcgE,EAAYmL,KAAKqc,mBAAoB,CACpD,IAAIoB,UAAEA,GAAczd,KAAKyV,GACzB,IAAK,IAAIjC,KAAaxT,KAAKqc,kBACvBoB,EAAUC,OAAOlK,GAErB,IAAK,IAAIA,KAAa3e,EAClB4oB,EAAU1Y,IAAIyO,GAElBxT,KAAKqc,kBAAoBxnB,CAC5B,CACJ,CACD,SAAAooB,CAAUjH,GACN2H,EAAe3d,KAAKyV,GAAI,SAAUO,EACrC"}