@getontime/cli 4.4.1 → 4.4.2

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 (333) hide show
  1. package/client/assets/{Backstage-BY9GL_rk.js → Backstage-BdrcXNr9.js} +2 -2
  2. package/client/assets/Backstage-BdrcXNr9.js.br +0 -0
  3. package/client/assets/Backstage-BdrcXNr9.js.gz +0 -0
  4. package/client/assets/{Backstage-BY9GL_rk.js.map → Backstage-BdrcXNr9.js.map} +1 -1
  5. package/client/assets/{Countdown-CXFgDHND.js → Countdown-DQM2ppPg.js} +2 -2
  6. package/client/assets/Countdown-DQM2ppPg.js.br +0 -0
  7. package/client/assets/Countdown-DQM2ppPg.js.gz +0 -0
  8. package/client/assets/{Countdown-CXFgDHND.js.map → Countdown-DQM2ppPg.js.map} +1 -1
  9. package/client/assets/{CuesheetTable-BLICUNky.js → CuesheetTable-B5LQVh5m.js} +2 -2
  10. package/client/assets/CuesheetTable-B5LQVh5m.js.br +0 -0
  11. package/client/assets/CuesheetTable-B5LQVh5m.js.gz +0 -0
  12. package/client/assets/{CuesheetTable-BLICUNky.js.map → CuesheetTable-B5LQVh5m.js.map} +1 -1
  13. package/client/assets/{CustomTranslationModal-4PVZBtkC.js → CustomTranslationModal-CML7Vsot.js} +2 -2
  14. package/client/assets/CustomTranslationModal-CML7Vsot.js.br +0 -0
  15. package/client/assets/CustomTranslationModal-CML7Vsot.js.gz +0 -0
  16. package/client/assets/{CustomTranslationModal-4PVZBtkC.js.map → CustomTranslationModal-CML7Vsot.js.map} +1 -1
  17. package/client/assets/{DelayIndicator-DUbpd6DG.js → DelayIndicator-DKS6mZdB.js} +2 -2
  18. package/client/assets/DelayIndicator-DKS6mZdB.js.br +0 -0
  19. package/client/assets/DelayIndicator-DKS6mZdB.js.gz +0 -0
  20. package/client/assets/{DelayIndicator-DUbpd6DG.js.map → DelayIndicator-DKS6mZdB.js.map} +1 -1
  21. package/client/assets/{EditorFeatureWrapper-CV_zaDoG.js → EditorFeatureWrapper-C1vLQxiy.js} +2 -2
  22. package/client/assets/EditorFeatureWrapper-C1vLQxiy.js.br +0 -0
  23. package/client/assets/EditorFeatureWrapper-C1vLQxiy.js.gz +0 -0
  24. package/client/assets/{EditorFeatureWrapper-CV_zaDoG.js.map → EditorFeatureWrapper-C1vLQxiy.js.map} +1 -1
  25. package/client/assets/{EditorUtils-CLBWDP4k.js → EditorUtils-BLcTuWz1.js} +2 -2
  26. package/client/assets/EditorUtils-BLcTuWz1.js.br +0 -0
  27. package/client/assets/EditorUtils-BLcTuWz1.js.gz +0 -0
  28. package/client/assets/{EditorUtils-CLBWDP4k.js.map → EditorUtils-BLcTuWz1.js.map} +1 -1
  29. package/client/assets/{EmptyPage-DmpOAg7R.js → EmptyPage-CYVrjOvI.js} +2 -2
  30. package/client/assets/EmptyPage-CYVrjOvI.js.br +0 -0
  31. package/client/assets/EmptyPage-CYVrjOvI.js.gz +0 -0
  32. package/client/assets/{EmptyPage-DmpOAg7R.js.map → EmptyPage-CYVrjOvI.js.map} +1 -1
  33. package/client/assets/{FollowButton-CAUWz5Ma.js → FollowButton-DcSbb4R_.js} +2 -2
  34. package/client/assets/FollowButton-DcSbb4R_.js.br +0 -0
  35. package/client/assets/FollowButton-DcSbb4R_.js.gz +0 -0
  36. package/client/assets/{FollowButton-CAUWz5Ma.js.map → FollowButton-DcSbb4R_.js.map} +1 -1
  37. package/client/assets/{MessageControlExport-Dm8IjSr4.js → MessageControlExport-BgT9JaXk.js} +3 -3
  38. package/client/assets/MessageControlExport-BgT9JaXk.js.br +0 -0
  39. package/client/assets/MessageControlExport-BgT9JaXk.js.gz +0 -0
  40. package/client/assets/{MessageControlExport-Dm8IjSr4.js.map → MessageControlExport-BgT9JaXk.js.map} +1 -1
  41. package/client/assets/{MultiPartProgressBar-Fp-sTN2u.js → MultiPartProgressBar-W2a-JWPY.js} +2 -2
  42. package/client/assets/MultiPartProgressBar-W2a-JWPY.js.br +0 -0
  43. package/client/assets/MultiPartProgressBar-W2a-JWPY.js.gz +0 -0
  44. package/client/assets/{MultiPartProgressBar-Fp-sTN2u.js.map → MultiPartProgressBar-W2a-JWPY.js.map} +1 -1
  45. package/client/assets/{OperatorExport-CE4ajLPS.js → OperatorExport-CbWojpp6.js} +2 -2
  46. package/client/assets/OperatorExport-CbWojpp6.js.br +0 -0
  47. package/client/assets/OperatorExport-CbWojpp6.js.gz +0 -0
  48. package/client/assets/{OperatorExport-CE4ajLPS.js.map → OperatorExport-CbWojpp6.js.map} +1 -1
  49. package/client/assets/{OverviewWrapper-BNnAIUP1.js → OverviewWrapper-B2i8d3rt.js} +2 -2
  50. package/client/assets/OverviewWrapper-B2i8d3rt.js.br +0 -0
  51. package/client/assets/OverviewWrapper-B2i8d3rt.js.gz +0 -0
  52. package/client/assets/{OverviewWrapper-BNnAIUP1.js.map → OverviewWrapper-B2i8d3rt.js.map} +1 -1
  53. package/client/assets/{PipHost-CbNFsfqp.js → PipHost-Dz2oy7XG.js} +2 -2
  54. package/client/assets/PipHost-Dz2oy7XG.js.br +0 -0
  55. package/client/assets/PipHost-Dz2oy7XG.js.gz +0 -0
  56. package/client/assets/{PipHost-CbNFsfqp.js.map → PipHost-Dz2oy7XG.js.map} +1 -1
  57. package/client/assets/{ProjectInfo-Bf5z4Xsv.js → ProjectInfo-BR_7Hp5u.js} +2 -2
  58. package/client/assets/ProjectInfo-BR_7Hp5u.js.br +0 -0
  59. package/client/assets/ProjectInfo-BR_7Hp5u.js.gz +0 -0
  60. package/client/assets/{ProjectInfo-Bf5z4Xsv.js.map → ProjectInfo-BR_7Hp5u.js.map} +1 -1
  61. package/client/assets/{ProtectRoute-CCHzyy0I.js → ProtectRoute-Bxq6q7ba.js} +2 -2
  62. package/client/assets/ProtectRoute-Bxq6q7ba.js.br +0 -0
  63. package/client/assets/ProtectRoute-Bxq6q7ba.js.gz +0 -0
  64. package/client/assets/{ProtectRoute-CCHzyy0I.js.map → ProtectRoute-Bxq6q7ba.js.map} +1 -1
  65. package/client/assets/{ProtectedCuesheet-COI1W_V3.js → ProtectedCuesheet-C7AqD2dy.js} +2 -2
  66. package/client/assets/ProtectedCuesheet-C7AqD2dy.js.br +0 -0
  67. package/client/assets/ProtectedCuesheet-C7AqD2dy.js.gz +0 -0
  68. package/client/assets/{ProtectedCuesheet-COI1W_V3.js.map → ProtectedCuesheet-C7AqD2dy.js.map} +1 -1
  69. package/client/assets/{ProtectedEditor-BvTFmv-F.js → ProtectedEditor-CsfvVyOU.js} +3 -3
  70. package/client/assets/ProtectedEditor-CsfvVyOU.js.br +0 -0
  71. package/client/assets/ProtectedEditor-CsfvVyOU.js.gz +0 -0
  72. package/client/assets/{ProtectedEditor-BvTFmv-F.js.map → ProtectedEditor-CsfvVyOU.js.map} +1 -1
  73. package/client/assets/{RundownExport-C_q3KYN_.js → RundownExport-25orDQIW.js} +2 -2
  74. package/client/assets/RundownExport-25orDQIW.js.br +0 -0
  75. package/client/assets/RundownExport-25orDQIW.js.gz +0 -0
  76. package/client/assets/{RundownExport-C_q3KYN_.js.map → RundownExport-25orDQIW.js.map} +1 -1
  77. package/client/assets/{Select-DQwYPDyI.js → Select-BnGTAeXJ.js} +2 -2
  78. package/client/assets/Select-BnGTAeXJ.js.br +0 -0
  79. package/client/assets/Select-BnGTAeXJ.js.gz +0 -0
  80. package/client/assets/{Select-DQwYPDyI.js.map → Select-BnGTAeXJ.js.map} +1 -1
  81. package/client/assets/{Studio-DzXTmBx4.js → Studio-BK2Klo_K.js} +2 -2
  82. package/client/assets/Studio-BK2Klo_K.js.br +0 -0
  83. package/client/assets/Studio-BK2Klo_K.js.gz +0 -0
  84. package/client/assets/{Studio-DzXTmBx4.js.map → Studio-BK2Klo_K.js.map} +1 -1
  85. package/client/assets/{StyleEditor-ClMEMaWh.js → StyleEditor-DIHQ1PUV.js} +2 -2
  86. package/client/assets/StyleEditor-DIHQ1PUV.js.br +0 -0
  87. package/client/assets/StyleEditor-DIHQ1PUV.js.gz +0 -0
  88. package/client/assets/{StyleEditor-ClMEMaWh.js.map → StyleEditor-DIHQ1PUV.js.map} +1 -1
  89. package/client/assets/{SuperscriptPeriod-CBiZU34J.js → SuperscriptPeriod-EEedc9rG.js} +2 -2
  90. package/client/assets/SuperscriptPeriod-EEedc9rG.js.br +0 -0
  91. package/client/assets/SuperscriptPeriod-EEedc9rG.js.gz +0 -0
  92. package/client/assets/{SuperscriptPeriod-CBiZU34J.js.map → SuperscriptPeriod-EEedc9rG.js.map} +1 -1
  93. package/client/assets/{SuperscriptTime-DP1CDlOX.js → SuperscriptTime-BVanhNvd.js} +2 -2
  94. package/client/assets/SuperscriptTime-BVanhNvd.js.br +0 -0
  95. package/client/assets/SuperscriptTime-BVanhNvd.js.gz +0 -0
  96. package/client/assets/{SuperscriptTime-DP1CDlOX.js.map → SuperscriptTime-BVanhNvd.js.map} +1 -1
  97. package/client/assets/{SwatchPicker-Dyxkxf3_.js → SwatchPicker-Ckpchvjo.js} +2 -2
  98. package/client/assets/SwatchPicker-Ckpchvjo.js.br +0 -0
  99. package/client/assets/SwatchPicker-Ckpchvjo.js.gz +0 -0
  100. package/client/assets/{SwatchPicker-Dyxkxf3_.js.map → SwatchPicker-Ckpchvjo.js.map} +1 -1
  101. package/client/assets/{TimeElements-pDYJeFbV.js → TimeElements-CYIgGk0T.js} +2 -2
  102. package/client/assets/TimeElements-CYIgGk0T.js.br +0 -0
  103. package/client/assets/TimeElements-CYIgGk0T.js.gz +0 -0
  104. package/client/assets/{TimeElements-pDYJeFbV.js.map → TimeElements-CYIgGk0T.js.map} +1 -1
  105. package/client/assets/{TimeInput-DTWDnaum.js → TimeInput-Cwl9vLWA.js} +2 -2
  106. package/client/assets/TimeInput-Cwl9vLWA.js.br +0 -0
  107. package/client/assets/TimeInput-Cwl9vLWA.js.gz +0 -0
  108. package/client/assets/{TimeInput-DTWDnaum.js.map → TimeInput-Cwl9vLWA.js.map} +1 -1
  109. package/client/assets/{TimelinePage-DbLt9rQi.js → TimelinePage-D4QNdk-Z.js} +2 -2
  110. package/client/assets/TimelinePage-D4QNdk-Z.js.br +0 -0
  111. package/client/assets/TimelinePage-D4QNdk-Z.js.gz +0 -0
  112. package/client/assets/{TimelinePage-DbLt9rQi.js.map → TimelinePage-D4QNdk-Z.js.map} +1 -1
  113. package/client/assets/{Timer-BfyVKQ8U.js → Timer-BJQKNHfo.js} +2 -2
  114. package/client/assets/Timer-BJQKNHfo.js.br +0 -0
  115. package/client/assets/Timer-BJQKNHfo.js.gz +0 -0
  116. package/client/assets/{Timer-BfyVKQ8U.js.map → Timer-BJQKNHfo.js.map} +1 -1
  117. package/client/assets/{TimerControlExport-BJfhJc07.js → TimerControlExport-Ba1vifNg.js} +2 -2
  118. package/client/assets/TimerControlExport-Ba1vifNg.js.br +0 -0
  119. package/client/assets/TimerControlExport-Ba1vifNg.js.gz +0 -0
  120. package/client/assets/{TimerControlExport-BJfhJc07.js.map → TimerControlExport-Ba1vifNg.js.map} +1 -1
  121. package/client/assets/{TimerDisplay-Dgmbqf65.js → TimerDisplay-tVcUk9j3.js} +2 -2
  122. package/client/assets/TimerDisplay-tVcUk9j3.js.br +0 -0
  123. package/client/assets/TimerDisplay-tVcUk9j3.js.gz +0 -0
  124. package/client/assets/{TimerDisplay-Dgmbqf65.js.map → TimerDisplay-tVcUk9j3.js.map} +1 -1
  125. package/client/assets/{TitleCard-MUurHeZ7.js → TitleCard-BNjv58eq.js} +2 -2
  126. package/client/assets/TitleCard-BNjv58eq.js.br +0 -0
  127. package/client/assets/TitleCard-BNjv58eq.js.gz +0 -0
  128. package/client/assets/{TitleCard-MUurHeZ7.js.map → TitleCard-BNjv58eq.js.map} +1 -1
  129. package/client/assets/{Tooltip-DXph8P8p.js → Tooltip-DZJ7u9gm.js} +2 -2
  130. package/client/assets/Tooltip-DZJ7u9gm.js.br +4 -0
  131. package/client/assets/Tooltip-DZJ7u9gm.js.gz +0 -0
  132. package/client/assets/{Tooltip-DXph8P8p.js.map → Tooltip-DZJ7u9gm.js.map} +1 -1
  133. package/client/assets/{ViewLogo-Ckp7i75x.js → ViewLogo-2I7w5Yms.js} +2 -2
  134. package/client/assets/ViewLogo-2I7w5Yms.js.br +0 -0
  135. package/client/assets/ViewLogo-2I7w5Yms.js.gz +0 -0
  136. package/client/assets/{ViewLogo-Ckp7i75x.js.map → ViewLogo-2I7w5Yms.js.map} +1 -1
  137. package/client/assets/{ViewParamsEditor-Cxngd15h.js → ViewParamsEditor-BX2RM8sx.js} +2 -2
  138. package/client/assets/ViewParamsEditor-BX2RM8sx.js.br +0 -0
  139. package/client/assets/ViewParamsEditor-BX2RM8sx.js.gz +0 -0
  140. package/client/assets/{ViewParamsEditor-Cxngd15h.js.map → ViewParamsEditor-BX2RM8sx.js.map} +1 -1
  141. package/client/assets/{editorSettings-D4jfu68W.js → editorSettings-_x6YKRfR.js} +2 -2
  142. package/client/assets/editorSettings-_x6YKRfR.js.br +6 -0
  143. package/client/assets/editorSettings-_x6YKRfR.js.gz +0 -0
  144. package/client/assets/{editorSettings-D4jfu68W.js.map → editorSettings-_x6YKRfR.js.map} +1 -1
  145. package/client/assets/{getProgress-B9UANc25.js → getProgress-ZUTmCn_v.js} +2 -2
  146. package/client/assets/getProgress-ZUTmCn_v.js.br +0 -0
  147. package/client/assets/getProgress-ZUTmCn_v.js.gz +0 -0
  148. package/client/assets/{getProgress-B9UANc25.js.map → getProgress-ZUTmCn_v.js.map} +1 -1
  149. package/client/assets/{index-2lQ-45a9.js → index-Dm-4OTmY.js} +3 -3
  150. package/client/assets/index-Dm-4OTmY.js.br +0 -0
  151. package/client/assets/index-Dm-4OTmY.js.gz +0 -0
  152. package/client/assets/{index-2lQ-45a9.js.map → index-Dm-4OTmY.js.map} +1 -1
  153. package/client/assets/{offset-DAyBfv5b.js → offset-VthsmtrO.js} +2 -2
  154. package/client/assets/offset-VthsmtrO.js.br +0 -0
  155. package/client/assets/offset-VthsmtrO.js.gz +0 -0
  156. package/client/assets/{offset-DAyBfv5b.js.map → offset-VthsmtrO.js.map} +1 -1
  157. package/client/assets/{parseUserTime-WkVNjkkE.js → parseUserTime-sZbEBi61.js} +2 -2
  158. package/client/assets/parseUserTime-sZbEBi61.js.br +0 -0
  159. package/client/assets/parseUserTime-sZbEBi61.js.gz +0 -0
  160. package/client/assets/{parseUserTime-WkVNjkkE.js.map → parseUserTime-sZbEBi61.js.map} +1 -1
  161. package/client/assets/{playbackstate-znZk3SSJ.js → playbackstate-Dl_ZJABT.js} +2 -2
  162. package/client/assets/playbackstate-Dl_ZJABT.js.br +0 -0
  163. package/client/assets/playbackstate-Dl_ZJABT.js.gz +0 -0
  164. package/client/assets/{playbackstate-znZk3SSJ.js.map → playbackstate-Dl_ZJABT.js.map} +1 -1
  165. package/client/assets/{presentation.utils-CjjYs5II.js → presentation.utils-Z61KykAH.js} +2 -2
  166. package/client/assets/presentation.utils-Z61KykAH.js.br +0 -0
  167. package/client/assets/presentation.utils-Z61KykAH.js.gz +0 -0
  168. package/client/assets/{presentation.utils-CjjYs5II.js.map → presentation.utils-Z61KykAH.js.map} +1 -1
  169. package/client/assets/{rundownUtils-BTQ3EeqN.js → rundownUtils-CXZRD6yP.js} +2 -2
  170. package/client/assets/rundownUtils-CXZRD6yP.js.br +0 -0
  171. package/client/assets/rundownUtils-CXZRD6yP.js.gz +0 -0
  172. package/client/assets/{rundownUtils-BTQ3EeqN.js.map → rundownUtils-CXZRD6yP.js.map} +1 -1
  173. package/client/assets/timer.utils-B4bvsns3.js +2 -0
  174. package/client/assets/timer.utils-B4bvsns3.js.br +0 -0
  175. package/client/assets/timer.utils-B4bvsns3.js.gz +0 -0
  176. package/client/assets/{timer.utils-B-Ui91P7.js.map → timer.utils-B4bvsns3.js.map} +1 -1
  177. package/client/assets/{useCustomFields-zr9SUl5o.js → useCustomFields-BBE4LBBr.js} +2 -2
  178. package/client/assets/useCustomFields-BBE4LBBr.js.br +0 -0
  179. package/client/assets/useCustomFields-BBE4LBBr.js.gz +0 -0
  180. package/client/assets/{useCustomFields-zr9SUl5o.js.map → useCustomFields-BBE4LBBr.js.map} +1 -1
  181. package/client/assets/{useEventSelection-B9mbj1cM.js → useEventSelection-Bpbu89c7.js} +2 -2
  182. package/client/assets/useEventSelection-Bpbu89c7.js.br +0 -0
  183. package/client/assets/useEventSelection-Bpbu89c7.js.gz +0 -0
  184. package/client/assets/{useEventSelection-B9mbj1cM.js.map → useEventSelection-Bpbu89c7.js.map} +1 -1
  185. package/client/assets/{useProjectData-DD_BQ9eJ.js → useProjectData-C110zIXC.js} +2 -2
  186. package/client/assets/useProjectData-C110zIXC.js.br +0 -0
  187. package/client/assets/useProjectData-C110zIXC.js.gz +0 -0
  188. package/client/assets/{useProjectData-DD_BQ9eJ.js.map → useProjectData-C110zIXC.js.map} +1 -1
  189. package/client/assets/{useReport-DozG5uz5.js → useReport-DqSBq4MG.js} +2 -2
  190. package/client/assets/useReport-DqSBq4MG.js.br +0 -0
  191. package/client/assets/useReport-DqSBq4MG.js.gz +0 -0
  192. package/client/assets/{useReport-DozG5uz5.js.map → useReport-DqSBq4MG.js.map} +1 -1
  193. package/client/assets/{useRundown-D6vokFHi.js → useRundown-DAo6huE4.js} +2 -2
  194. package/client/assets/useRundown-DAo6huE4.js.br +0 -0
  195. package/client/assets/useRundown-DAo6huE4.js.gz +0 -0
  196. package/client/assets/{useRundown-D6vokFHi.js.map → useRundown-DAo6huE4.js.map} +1 -1
  197. package/client/assets/{useSelectAndRevealEntry-Dd6MpVHe.js → useSelectAndRevealEntry-DTg0hmxA.js} +2 -2
  198. package/client/assets/useSelectAndRevealEntry-DTg0hmxA.js.br +0 -0
  199. package/client/assets/useSelectAndRevealEntry-DTg0hmxA.js.gz +0 -0
  200. package/client/assets/{useSelectAndRevealEntry-Dd6MpVHe.js.map → useSelectAndRevealEntry-DTg0hmxA.js.map} +1 -1
  201. package/client/assets/{useWindowTitle-bg-fLPOk.js → useWindowTitle-DM8dIp8L.js} +2 -2
  202. package/client/assets/useWindowTitle-DM8dIp8L.js.br +0 -0
  203. package/client/assets/useWindowTitle-DM8dIp8L.js.gz +0 -0
  204. package/client/assets/{useWindowTitle-bg-fLPOk.js.map → useWindowTitle-DM8dIp8L.js.map} +1 -1
  205. package/client/assets/{validateEvent-BUgLWn7x.js → validateEvent-GnPt-e9-.js} +2 -2
  206. package/client/assets/validateEvent-GnPt-e9-.js.br +0 -0
  207. package/client/assets/validateEvent-GnPt-e9-.js.gz +0 -0
  208. package/client/assets/{validateEvent-BUgLWn7x.js.map → validateEvent-GnPt-e9-.js.map} +1 -1
  209. package/client/assets/{vendor-CKDP5hij.js → vendor-BKUJ0_Du.js} +2 -2
  210. package/client/assets/vendor-BKUJ0_Du.js.br +0 -0
  211. package/client/assets/{vendor-CKDP5hij.js.gz → vendor-BKUJ0_Du.js.gz} +0 -0
  212. package/client/assets/{vendor-CKDP5hij.js.map → vendor-BKUJ0_Du.js.map} +1 -1
  213. package/client/assets/{viewLoader.utils-Bn5zu5sz.js → viewLoader.utils-4lL4PiNI.js} +2 -2
  214. package/client/assets/viewLoader.utils-4lL4PiNI.js.br +0 -0
  215. package/client/assets/viewLoader.utils-4lL4PiNI.js.gz +0 -0
  216. package/client/assets/{viewLoader.utils-Bn5zu5sz.js.map → viewLoader.utils-4lL4PiNI.js.map} +1 -1
  217. package/client/assets/{viewUtils-DQFwr7hm.js → viewUtils-29a3Mmiu.js} +2 -2
  218. package/client/assets/viewUtils-29a3Mmiu.js.br +0 -0
  219. package/client/assets/viewUtils-29a3Mmiu.js.gz +0 -0
  220. package/client/assets/{viewUtils-DQFwr7hm.js.map → viewUtils-29a3Mmiu.js.map} +1 -1
  221. package/client/index.html +2 -2
  222. package/package.json +1 -1
  223. package/server/index.cjs +1 -1
  224. package/client/assets/Backstage-BY9GL_rk.js.br +0 -0
  225. package/client/assets/Backstage-BY9GL_rk.js.gz +0 -0
  226. package/client/assets/Countdown-CXFgDHND.js.br +0 -0
  227. package/client/assets/Countdown-CXFgDHND.js.gz +0 -0
  228. package/client/assets/CuesheetTable-BLICUNky.js.br +0 -0
  229. package/client/assets/CuesheetTable-BLICUNky.js.gz +0 -0
  230. package/client/assets/CustomTranslationModal-4PVZBtkC.js.br +0 -0
  231. package/client/assets/CustomTranslationModal-4PVZBtkC.js.gz +0 -0
  232. package/client/assets/DelayIndicator-DUbpd6DG.js.br +0 -0
  233. package/client/assets/DelayIndicator-DUbpd6DG.js.gz +0 -0
  234. package/client/assets/EditorFeatureWrapper-CV_zaDoG.js.br +0 -0
  235. package/client/assets/EditorFeatureWrapper-CV_zaDoG.js.gz +0 -0
  236. package/client/assets/EditorUtils-CLBWDP4k.js.br +0 -0
  237. package/client/assets/EditorUtils-CLBWDP4k.js.gz +0 -0
  238. package/client/assets/EmptyPage-DmpOAg7R.js.br +0 -2
  239. package/client/assets/EmptyPage-DmpOAg7R.js.gz +0 -0
  240. package/client/assets/FollowButton-CAUWz5Ma.js.br +0 -0
  241. package/client/assets/FollowButton-CAUWz5Ma.js.gz +0 -0
  242. package/client/assets/MessageControlExport-Dm8IjSr4.js.br +0 -0
  243. package/client/assets/MessageControlExport-Dm8IjSr4.js.gz +0 -0
  244. package/client/assets/MultiPartProgressBar-Fp-sTN2u.js.br +0 -0
  245. package/client/assets/MultiPartProgressBar-Fp-sTN2u.js.gz +0 -0
  246. package/client/assets/OperatorExport-CE4ajLPS.js.br +0 -0
  247. package/client/assets/OperatorExport-CE4ajLPS.js.gz +0 -0
  248. package/client/assets/OverviewWrapper-BNnAIUP1.js.br +0 -0
  249. package/client/assets/OverviewWrapper-BNnAIUP1.js.gz +0 -0
  250. package/client/assets/PipHost-CbNFsfqp.js.br +0 -0
  251. package/client/assets/PipHost-CbNFsfqp.js.gz +0 -0
  252. package/client/assets/ProjectInfo-Bf5z4Xsv.js.br +0 -0
  253. package/client/assets/ProjectInfo-Bf5z4Xsv.js.gz +0 -0
  254. package/client/assets/ProtectRoute-CCHzyy0I.js.br +0 -0
  255. package/client/assets/ProtectRoute-CCHzyy0I.js.gz +0 -0
  256. package/client/assets/ProtectedCuesheet-COI1W_V3.js.br +0 -0
  257. package/client/assets/ProtectedCuesheet-COI1W_V3.js.gz +0 -0
  258. package/client/assets/ProtectedEditor-BvTFmv-F.js.br +0 -0
  259. package/client/assets/ProtectedEditor-BvTFmv-F.js.gz +0 -0
  260. package/client/assets/RundownExport-C_q3KYN_.js.br +0 -0
  261. package/client/assets/RundownExport-C_q3KYN_.js.gz +0 -0
  262. package/client/assets/Select-DQwYPDyI.js.br +0 -0
  263. package/client/assets/Select-DQwYPDyI.js.gz +0 -0
  264. package/client/assets/Studio-DzXTmBx4.js.br +0 -0
  265. package/client/assets/Studio-DzXTmBx4.js.gz +0 -0
  266. package/client/assets/StyleEditor-ClMEMaWh.js.br +0 -0
  267. package/client/assets/StyleEditor-ClMEMaWh.js.gz +0 -0
  268. package/client/assets/SuperscriptPeriod-CBiZU34J.js.br +0 -0
  269. package/client/assets/SuperscriptPeriod-CBiZU34J.js.gz +0 -0
  270. package/client/assets/SuperscriptTime-DP1CDlOX.js.br +0 -0
  271. package/client/assets/SuperscriptTime-DP1CDlOX.js.gz +0 -0
  272. package/client/assets/SwatchPicker-Dyxkxf3_.js.br +0 -0
  273. package/client/assets/SwatchPicker-Dyxkxf3_.js.gz +0 -0
  274. package/client/assets/TimeElements-pDYJeFbV.js.br +0 -0
  275. package/client/assets/TimeElements-pDYJeFbV.js.gz +0 -0
  276. package/client/assets/TimeInput-DTWDnaum.js.br +0 -0
  277. package/client/assets/TimeInput-DTWDnaum.js.gz +0 -0
  278. package/client/assets/TimelinePage-DbLt9rQi.js.br +0 -0
  279. package/client/assets/TimelinePage-DbLt9rQi.js.gz +0 -0
  280. package/client/assets/Timer-BfyVKQ8U.js.br +0 -0
  281. package/client/assets/Timer-BfyVKQ8U.js.gz +0 -0
  282. package/client/assets/TimerControlExport-BJfhJc07.js.br +0 -0
  283. package/client/assets/TimerControlExport-BJfhJc07.js.gz +0 -0
  284. package/client/assets/TimerDisplay-Dgmbqf65.js.br +0 -0
  285. package/client/assets/TimerDisplay-Dgmbqf65.js.gz +0 -0
  286. package/client/assets/TitleCard-MUurHeZ7.js.br +0 -0
  287. package/client/assets/TitleCard-MUurHeZ7.js.gz +0 -0
  288. package/client/assets/Tooltip-DXph8P8p.js.br +0 -0
  289. package/client/assets/Tooltip-DXph8P8p.js.gz +0 -0
  290. package/client/assets/ViewLogo-Ckp7i75x.js.br +0 -0
  291. package/client/assets/ViewLogo-Ckp7i75x.js.gz +0 -0
  292. package/client/assets/ViewParamsEditor-Cxngd15h.js.br +0 -0
  293. package/client/assets/ViewParamsEditor-Cxngd15h.js.gz +0 -0
  294. package/client/assets/editorSettings-D4jfu68W.js.br +0 -0
  295. package/client/assets/editorSettings-D4jfu68W.js.gz +0 -0
  296. package/client/assets/getProgress-B9UANc25.js.br +0 -0
  297. package/client/assets/getProgress-B9UANc25.js.gz +0 -0
  298. package/client/assets/index-2lQ-45a9.js.br +0 -0
  299. package/client/assets/index-2lQ-45a9.js.gz +0 -0
  300. package/client/assets/offset-DAyBfv5b.js.br +0 -4
  301. package/client/assets/offset-DAyBfv5b.js.gz +0 -0
  302. package/client/assets/parseUserTime-WkVNjkkE.js.br +0 -0
  303. package/client/assets/parseUserTime-WkVNjkkE.js.gz +0 -0
  304. package/client/assets/playbackstate-znZk3SSJ.js.br +0 -0
  305. package/client/assets/playbackstate-znZk3SSJ.js.gz +0 -0
  306. package/client/assets/presentation.utils-CjjYs5II.js.br +0 -0
  307. package/client/assets/presentation.utils-CjjYs5II.js.gz +0 -0
  308. package/client/assets/rundownUtils-BTQ3EeqN.js.br +0 -0
  309. package/client/assets/rundownUtils-BTQ3EeqN.js.gz +0 -0
  310. package/client/assets/timer.utils-B-Ui91P7.js +0 -2
  311. package/client/assets/timer.utils-B-Ui91P7.js.br +0 -0
  312. package/client/assets/timer.utils-B-Ui91P7.js.gz +0 -0
  313. package/client/assets/useCustomFields-zr9SUl5o.js.br +0 -0
  314. package/client/assets/useCustomFields-zr9SUl5o.js.gz +0 -0
  315. package/client/assets/useEventSelection-B9mbj1cM.js.br +0 -0
  316. package/client/assets/useEventSelection-B9mbj1cM.js.gz +0 -0
  317. package/client/assets/useProjectData-DD_BQ9eJ.js.br +0 -0
  318. package/client/assets/useProjectData-DD_BQ9eJ.js.gz +0 -0
  319. package/client/assets/useReport-DozG5uz5.js.br +0 -0
  320. package/client/assets/useReport-DozG5uz5.js.gz +0 -0
  321. package/client/assets/useRundown-D6vokFHi.js.br +0 -0
  322. package/client/assets/useRundown-D6vokFHi.js.gz +0 -0
  323. package/client/assets/useSelectAndRevealEntry-Dd6MpVHe.js.br +0 -0
  324. package/client/assets/useSelectAndRevealEntry-Dd6MpVHe.js.gz +0 -0
  325. package/client/assets/useWindowTitle-bg-fLPOk.js.br +0 -0
  326. package/client/assets/useWindowTitle-bg-fLPOk.js.gz +0 -0
  327. package/client/assets/validateEvent-BUgLWn7x.js.br +0 -0
  328. package/client/assets/validateEvent-BUgLWn7x.js.gz +0 -0
  329. package/client/assets/vendor-CKDP5hij.js.br +0 -0
  330. package/client/assets/viewLoader.utils-Bn5zu5sz.js.br +0 -0
  331. package/client/assets/viewLoader.utils-Bn5zu5sz.js.gz +0 -0
  332. package/client/assets/viewUtils-DQFwr7hm.js.br +0 -0
  333. package/client/assets/viewUtils-DQFwr7hm.js.gz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"useRundown-D6vokFHi.js","sources":["../../../../packages/types/src/definitions/core/OntimeEntry.ts","../../../../packages/types/src/utils/guards.ts","../../../../packages/utils/src/date-utils/checkIsNextDay.ts","../../../../packages/utils/src/date-utils/isNewLatest.ts","../../src/common/api/rundown.ts","../../src/common/utils/rundownMetadata.ts","../../src/common/hooks-query/useRundown.ts"],"sourcesContent":["import type { MaybeNumber } from '../../utils/utils.type.js';\nimport type { EndAction } from '../EndAction.type.js';\nimport type { TimerType } from '../TimerType.type.js';\nimport type { TimeStrategy } from '../TimeStrategy.type.js';\nimport type { Trigger } from './Automation.type.js';\nimport type { EntryCustomFields } from './CustomFields.type.js';\n\nexport type EntryId = string;\n\nexport enum SupportedEntry {\n Event = 'event',\n Delay = 'delay',\n Group = 'group',\n Milestone = 'milestone',\n}\n\nexport type OntimeBaseEvent = {\n type: SupportedEntry;\n id: EntryId;\n};\n\nexport type OntimeDelay = OntimeBaseEvent & {\n type: SupportedEntry.Delay;\n duration: number;\n parent: EntryId | null;\n};\n\nexport type OntimeMilestone = OntimeBaseEvent & {\n type: SupportedEntry.Milestone;\n cue: string;\n title: string;\n note: string;\n colour: string;\n custom: EntryCustomFields;\n parent: EntryId | null;\n // !==== RUNTIME METADATA ====! //\n revision: number;\n};\n\nexport type OntimeGroup = OntimeBaseEvent & {\n type: SupportedEntry.Group;\n title: string;\n note: string;\n entries: EntryId[];\n targetDuration: MaybeNumber;\n colour: string;\n custom: EntryCustomFields;\n // !==== RUNTIME METADATA ====! //\n revision: number;\n timeStart: MaybeNumber; // calculated at runtime\n timeEnd: MaybeNumber; // calculated at runtime\n duration: number; // calculated at runtime\n isFirstLinked: boolean; // calculated at runtime, whether the first event is linked\n};\n\nexport type OntimeEvent = OntimeBaseEvent & {\n type: SupportedEntry.Event;\n flag: boolean;\n cue: string;\n title: string;\n note: string;\n endAction: EndAction;\n timerType: TimerType;\n countToEnd: boolean;\n linkStart: boolean;\n timeStrategy: TimeStrategy;\n timeStart: number;\n timeEnd: number;\n duration: number;\n skip: boolean;\n colour: string;\n timeWarning: number;\n timeDanger: number;\n custom: EntryCustomFields;\n triggers: Trigger[];\n parent: EntryId | null;\n // !==== RUNTIME METADATA ====! //\n revision: number;\n delay: number; // calculated at runtime\n dayOffset: number; // calculated at runtime\n gap: number; // calculated at runtime\n};\n\nexport type PlayableEvent = OntimeEvent & { skip: false };\nexport type TimeField = 'timeStart' | 'timeEnd' | 'duration';\nexport type OntimeEntry = OntimeDelay | OntimeGroup | OntimeEvent | OntimeMilestone;\n\n// we need to create a manual union type since keys cannot be used in type unions\nexport type OntimeEntryCommonKeys = keyof OntimeEvent | keyof OntimeDelay | keyof OntimeGroup | keyof OntimeMilestone;\n","import type { AutomationOutput, HTTPOutput, OntimeAction, OSCOutput } from '../definitions/core/Automation.type.js';\nimport type {\n OntimeDelay,\n OntimeEntry,\n OntimeEvent,\n OntimeGroup,\n OntimeMilestone,\n PlayableEvent,\n} from '../definitions/core/OntimeEntry.js';\nimport { SupportedEntry } from '../definitions/core/OntimeEntry.js';\nimport { type TimerLifeCycle, timerLifecycleValues } from '../definitions/core/TimerLifecycle.type.js';\n\ntype MaybeEvent = OntimeEntry | Partial<OntimeEntry> | null | undefined;\n\nexport function isOntimeEvent(event: MaybeEvent): event is OntimeEvent {\n return event?.type === SupportedEntry.Event;\n}\n\nexport function isPlayableEvent(event: OntimeEvent): event is PlayableEvent {\n return !event.skip;\n}\n\nexport function isOntimeDelay(event: MaybeEvent): event is OntimeDelay {\n return event?.type === SupportedEntry.Delay;\n}\n\nexport function isOntimeGroup(event: MaybeEvent): event is OntimeGroup {\n return event?.type === SupportedEntry.Group;\n}\n\nexport function isOntimeMilestone(event: MaybeEvent): event is OntimeMilestone {\n return event?.type === SupportedEntry.Milestone;\n}\n\ntype AnyKeys<T> = keyof T;\n\nexport function isKeyOfType<T extends object>(key: PropertyKey, obj: T): key is AnyKeys<T> {\n return key in obj;\n}\n\nexport function isOSCOutput(output: AutomationOutput): output is OSCOutput {\n return output.type === 'osc';\n}\n\nexport function isHTTPOutput(output: AutomationOutput): output is HTTPOutput {\n return output.type === 'http';\n}\n\nexport function isOntimeAction(output: AutomationOutput): output is OntimeAction {\n return output.type === 'ontime';\n}\n\nexport function isTimerLifeCycle(maybeCycle: unknown): maybeCycle is TimerLifeCycle {\n if (typeof maybeCycle !== 'string') return false;\n return timerLifecycleValues.includes(maybeCycle);\n}\n","import type { OntimeEvent } from 'ontime-types';\n\nimport { dayInMs } from './conversionUtils.js';\n\n/**\n * Utility function checks whether a given event is the day after from its predecessor\n */\nexport function checkIsNextDay(\n current: Pick<OntimeEvent, 'timeStart' | 'dayOffset'>,\n previous: Pick<OntimeEvent, 'timeStart' | 'duration' | 'dayOffset'> | null,\n): boolean {\n if (!previous) {\n return false;\n }\n\n // if the day offsets are the same it can't be the next day\n if (current.dayOffset <= previous.dayOffset) {\n return false;\n }\n\n // if the previous event crossed midnight then the current is the same day\n if (previous.timeStart + previous.duration > dayInMs) {\n return false;\n }\n\n return true;\n}\n","import type { OntimeEvent } from 'ontime-types';\n\nimport { dayInMs } from './conversionUtils.js';\n\n/**\n * Checks whether a new element is the latest in the list\n */\nexport function isNewLatest(\n currentEvent: Pick<OntimeEvent, 'timeStart' | 'duration' | 'dayOffset'>,\n previousEvent: Pick<OntimeEvent, 'timeStart' | 'duration' | 'dayOffset'> | null,\n) {\n // true if there is no previous\n if (!previousEvent) {\n return true;\n }\n\n const normalisedCurrentEnd = currentEvent.timeStart + currentEvent.duration + currentEvent.dayOffset * dayInMs;\n const normalisedPreviousEnd = previousEvent.timeStart + previousEvent.duration + previousEvent.dayOffset * dayInMs;\n\n return normalisedCurrentEnd >= normalisedPreviousEnd;\n}\n","import axios, { AxiosResponse } from 'axios';\nimport { EntryId, OntimeEntry, OntimeEvent, ProjectRundownsList, Rundown, TransientEventPayload } from 'ontime-types';\n\nimport { apiEntryUrl } from './constants';\nimport type { RequestOptions } from './requestOptions';\n\ntype RundownId = string;\nconst rundownPath = `${apiEntryUrl}/rundowns`;\n\n// #region operations on project rundowns =========================\n\n/**\n * HTTP request to fetch a list of existing rundowns\n */\nexport async function fetchProjectRundownList(options?: RequestOptions): Promise<ProjectRundownsList> {\n const res = await axios.get(rundownPath, { signal: options?.signal });\n return res.data;\n}\n\n/**\n * HTTP request to fetch all entries in the currently loaded rundown\n */\nexport async function fetchCurrentRundown(options?: RequestOptions): Promise<Rundown> {\n const res = await axios.get(`${rundownPath}/current`, { signal: options?.signal });\n if (!isValidRundown(res.data)) {\n throw new Error('Invalid rundown payload');\n }\n return res.data;\n\n function isValidRundown(x: any): x is Rundown {\n return (\n x &&\n typeof x === 'object' &&\n typeof x.id === 'string' &&\n Array.isArray(x.order) &&\n Array.isArray(x.flatOrder) &&\n x.entries &&\n typeof x.entries === 'object' &&\n typeof x.revision === 'number'\n );\n }\n}\n\n/**\n * HTTP request to switch the currently loaded rundown\n */\nexport async function loadRundown(rundownId: RundownId): Promise<AxiosResponse<ProjectRundownsList>> {\n return axios.post(`${rundownPath}/${rundownId}/load`);\n}\n\n/**\n * HTTP request to create a new rundown\n */\nexport async function createRundown(title: string): Promise<AxiosResponse<ProjectRundownsList>> {\n return axios.post(rundownPath, { title });\n}\n\n/**\n * HTTP request to duplicate an existing rundown\n */\nexport async function duplicateRundown(rundownId: RundownId): Promise<AxiosResponse<ProjectRundownsList>> {\n return axios.post(`${rundownPath}/${rundownId}/duplicate`);\n}\n\n/**\n * HTTP request to rename an existing rundown\n */\nexport async function renameRundown(rundownId: RundownId, title: string): Promise<AxiosResponse<ProjectRundownsList>> {\n return axios.patch(`${rundownPath}/${rundownId}`, { title });\n}\n\n/**\n * HTTP request to delete a rundown\n */\nexport async function deleteRundown(rundownId: RundownId): Promise<AxiosResponse<ProjectRundownsList>> {\n return axios.delete(`${rundownPath}/${rundownId}`);\n}\n\n// #endregion operations on project rundowns ======================\n// #region operations on rundown entries ==========================\n\n/**\n * HTTP request to post new entry\n */\nexport async function postAddEntry(\n rundownId: RundownId,\n data: TransientEventPayload,\n): Promise<AxiosResponse<OntimeEntry>> {\n return axios.post(`${rundownPath}/${rundownId}/entry`, data);\n}\n\n/**\n * HTTP request to edit an entry\n */\nexport async function putEditEntry(\n rundownId: RundownId,\n data: Partial<OntimeEntry>,\n): Promise<AxiosResponse<OntimeEntry>> {\n return axios.put(`${rundownPath}/${rundownId}/entry`, data);\n}\n\nexport type BatchEditEntry = {\n data: Partial<OntimeEvent>;\n ids: EntryId[];\n};\n\n/**\n * HTTP request to edit multiple events\n */\nexport async function putBatchEditEvents(rundownId: RundownId, data: BatchEditEntry): Promise<AxiosResponse<Rundown>> {\n return axios.put(`${rundownPath}/${rundownId}/batch`, data);\n}\n\nexport type ReorderEntry = {\n entryId: EntryId;\n destinationId: EntryId;\n order: 'before' | 'after' | 'insert';\n};\n\n/**\n * HTTP request to reorder an entry\n */\nexport async function patchReorderEntry(rundownId: RundownId, data: ReorderEntry): Promise<AxiosResponse<Rundown>> {\n return axios.patch(`${rundownPath}/${rundownId}/reorder`, data);\n}\n\n/**\n * HTTP request to swap two events\n */\nexport async function requestEventSwap(\n rundownId: RundownId,\n from: EntryId,\n to: EntryId,\n): Promise<AxiosResponse<Rundown>> {\n return axios.patch(`${rundownPath}/${rundownId}/swap`, { from, to });\n}\n\n/**\n * HTTP request to request application of delay\n */\nexport async function requestApplyDelay(rundownId: RundownId, delayId: EntryId): Promise<AxiosResponse<Rundown>> {\n return axios.patch(`${rundownPath}/${rundownId}/applydelay/${delayId}`);\n}\n\n/**\n * HTTP request for cloning an entry\n */\nexport async function postCloneEntry(\n rundownId: RundownId,\n entryId: EntryId,\n options?: { before?: EntryId; after?: EntryId },\n): Promise<AxiosResponse<Rundown>> {\n return axios.post(`${rundownPath}/${rundownId}/clone/${entryId}`, options);\n}\n\n/**\n * HTTP request for grouping a list of entries into a group\n */\nexport async function requestGroupEntries(rundownId: RundownId, entryIds: EntryId[]): Promise<AxiosResponse<Rundown>> {\n return axios.post(`${rundownPath}/${rundownId}/group`, { ids: entryIds });\n}\n\n/**\n * HTTP request for dissolving of a group\n */\nexport async function requestUngroup(rundownId: RundownId, groupId: EntryId): Promise<AxiosResponse<Rundown>> {\n return axios.post(`${rundownPath}/${rundownId}/ungroup/${groupId}`);\n}\n\n/**\n * HTTP request to delete entries of a given rundown\n */\nexport async function deleteEntries(rundownId: RundownId, entryIds: EntryId[]): Promise<AxiosResponse<Rundown>> {\n return axios.delete(`${rundownPath}/${rundownId}/entries`, { data: { ids: entryIds } });\n}\n\n/**\n * HTTP request to delete all entries of a given rundown\n */\nexport async function requestDeleteAll(rundownId: RundownId): Promise<AxiosResponse<Rundown>> {\n return axios.delete(`${rundownPath}/${rundownId}/all`);\n}\n\n// #endregion operations on rundown entries =======================\n","import {\n isOntimeEvent,\n isOntimeGroup,\n isPlayableEvent,\n MaybeString,\n OntimeDelay,\n OntimeEntry,\n OntimeEvent,\n OntimeMilestone,\n PlayableEvent,\n Rundown,\n} from 'ontime-types';\nimport { checkIsNextDay, isNewLatest } from 'ontime-utils';\n\nexport type RundownMetadata = {\n previousEvent: PlayableEvent | null; // The playableEvent from the previous iteration, used by indicators\n latestEvent: PlayableEvent | null; // The playableEvent most forwards in time processed so far\n previousEntryId: MaybeString; // previous entry is used to infer position in the rundown for new events\n thisId: MaybeString;\n eventIndex: number;\n isPast: boolean;\n isNextDay: boolean;\n totalGap: number;\n isLinkedToLoaded: boolean; // check if the event can link all the way back to the currently playing event\n isLoaded: boolean;\n groupId: MaybeString;\n groupColour: string | undefined;\n groupEntries: number | undefined;\n isFirstAfterGroup: boolean;\n};\n\nexport type ExtendedEntry<T extends OntimeEntry = OntimeEntry> = T & RundownMetadata;\n\nexport const lastMetadataKey = 'LAST';\n\nexport type RundownMetadataObject = Record<string, Readonly<RundownMetadata>>;\n\n/**\n * Generates a Rundown Metadata object from a rundown\n */\nexport function getRundownMetadata(\n data: Pick<Rundown, 'entries' | 'flatOrder'>,\n selectedEventId: MaybeString,\n): RundownMetadataObject {\n const { metadata, process } = initRundownMetadata(selectedEventId);\n // keep a single reference to the metadata which we override for every entry\n let lastSnapshot = metadata;\n const rundownMetadata: RundownMetadataObject = {};\n\n for (const id of data.flatOrder) {\n const entry = data.entries[id];\n lastSnapshot = process(entry);\n rundownMetadata[id] = lastSnapshot;\n }\n\n // ensure some blank data even for empty rundowns\n rundownMetadata[lastMetadataKey] = lastSnapshot;\n\n return rundownMetadata;\n}\n\nexport function getFlatRundownMetadata(\n data: Pick<Rundown, 'entries' | 'flatOrder'>,\n selectedEventId: MaybeString,\n): ExtendedEntry[] {\n const { process } = initRundownMetadata(selectedEventId);\n const flatRundown: ExtendedEntry[] = [];\n\n for (const id of data.flatOrder) {\n const entry = data.entries[id];\n const extendedEntry = { ...entry, ...process(entry) };\n flatRundown.push(extendedEntry);\n }\n\n return flatRundown;\n}\n\n/**\n * Creates a process function which aggregates the rundown metadata and event metadata\n */\nexport function initRundownMetadata(selectedEventId: MaybeString) {\n let rundownMeta: RundownMetadata = {\n previousEvent: null,\n latestEvent: null,\n previousEntryId: null,\n thisId: null,\n eventIndex: 0,\n isPast: Boolean(selectedEventId), // all events before the current selected are in the past\n isNextDay: false,\n totalGap: 0,\n isLinkedToLoaded: false,\n isLoaded: false,\n groupId: null,\n groupColour: undefined,\n groupEntries: undefined,\n isFirstAfterGroup: false,\n };\n\n function process(entry: OntimeEntry): Readonly<RundownMetadata> {\n const processedRundownMetadata = processEntry(rundownMeta, selectedEventId, entry);\n rundownMeta = processedRundownMetadata;\n return rundownMeta;\n }\n\n return { metadata: rundownMeta, process };\n}\n\n/**\n * Receives a rundown entry and processes its place in the rundown\n */\nfunction processEntry(\n rundownMetadata: RundownMetadata,\n selectedEventId: MaybeString,\n entry: Readonly<OntimeEntry>,\n): Readonly<RundownMetadata> {\n const processedData = { ...rundownMetadata };\n // initialise data to be overridden below\n processedData.isNextDay = false;\n processedData.isLoaded = false;\n\n processedData.previousEntryId = processedData.thisId; // thisId comes from the previous iteration\n processedData.thisId = entry.id; // we reassign thisId\n processedData.previousEvent = processedData.latestEvent;\n\n if (entry.id === selectedEventId) {\n processedData.isLoaded = true;\n processedData.isPast = false;\n processedData.isLinkedToLoaded = true;\n }\n\n if (isOntimeGroup(entry)) {\n processedData.groupId = entry.id;\n processedData.groupColour = entry.colour;\n processedData.groupEntries = entry.entries.length;\n } else {\n // for delays and groups, we insert the group metadata\n if ((entry as OntimeEvent | OntimeDelay | OntimeMilestone).parent !== processedData.groupId) {\n // if the parent is not the current group, we need to update the groupId\n processedData.groupId = (entry as OntimeEvent | OntimeDelay | OntimeMilestone).parent;\n processedData.groupEntries = undefined;\n if ((entry as OntimeEvent | OntimeDelay | OntimeMilestone).parent === null) {\n // if the entry has no parent, it cannot have a group colour\n processedData.groupColour = undefined;\n }\n }\n\n if (isOntimeEvent(entry)) {\n // event indexes are 1 based in UI\n processedData.eventIndex += 1;\n processedData.isFirstAfterGroup = Boolean(processedData.previousEvent?.parent) && entry.parent === null;\n\n if (isPlayableEvent(entry)) {\n processedData.isNextDay = checkIsNextDay(entry, processedData.previousEvent);\n \n if (!processedData.isPast && !processedData.isLoaded) {\n /**\n * isLinkToLoaded is a chain value that we maintain until we\n * a) find an unlinked event\n * b) find a countToEnd event\n */\n processedData.totalGap += entry.gap;\n processedData.isLinkedToLoaded =\n entry.linkStart && !processedData.previousEvent?.countToEnd && processedData.isLinkedToLoaded;\n }\n\n if (isNewLatest(entry, processedData.latestEvent)) {\n // this event is the forward most event in rundown, for next iteration\n processedData.latestEvent = entry;\n }\n }\n }\n }\n\n return processedData;\n}\n","import { useMemo } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport { EntryId, OntimeEntry, Rundown } from 'ontime-types';\n\nimport { queryRefetchIntervalSlow } from '../../ontimeConfig';\nimport { RUNDOWN } from '../api/constants';\nimport { fetchCurrentRundown } from '../api/rundown';\nimport { useSelectedEventId } from '../hooks/useSocket';\nimport { ExtendedEntry, getFlatRundownMetadata, getRundownMetadata } from '../utils/rundownMetadata';\n\n// revision is -1 so that the remote revision is higher\nconst cachedRundownPlaceholder: Rundown = {\n id: 'default',\n title: '',\n order: [],\n flatOrder: [],\n entries: {},\n revision: -1,\n};\n\n/**\n * Normalised rundown data\n */\nexport default function useRundown() {\n const { data, status, isError, refetch, isFetching } = useQuery<Rundown>({\n queryKey: RUNDOWN,\n queryFn: ({ signal }) => fetchCurrentRundown({ signal }),\n refetchInterval: queryRefetchIntervalSlow,\n });\n\n return { data: data ?? cachedRundownPlaceholder, status, isError, refetch, isFetching };\n}\n\nexport function useRundownWithMetadata() {\n const { data, status } = useRundown();\n const selectedEventId = useSelectedEventId();\n const rundownMetadata = useMemo(() => getRundownMetadata(data, selectedEventId), [data, selectedEventId]);\n return { data, status, rundownMetadata };\n}\n\n/**\n * Provides access to a flat rundown\n * built from the order and rundown fields\n */\nexport function useFlatRundown() {\n const { data, status } = useRundown();\n\n const flatRundown = useMemo(() => {\n if (data.revision === -1) {\n return [];\n }\n return data.flatOrder.map((id) => data.entries[id]).filter((entry): entry is OntimeEntry => entry !== undefined);\n }, [data]);\n\n return { data: flatRundown, rundownId: data.id, status };\n}\n\nexport function useFlatRundownWithMetadata() {\n const { data, status } = useRundown();\n const selectedEventId = useSelectedEventId();\n\n const rundownWithMetadata = useMemo(() => getFlatRundownMetadata(data, selectedEventId), [data, selectedEventId]);\n return { data: rundownWithMetadata, status };\n}\n\n/**\n * Provides access to a partial rundown based on a filter callback\n *\n * Callers MUST memoize the callback with useCallback to prevent\n * re-filtering on every render.\n *\n */\nexport function usePartialRundown(cb: (event: ExtendedEntry<OntimeEntry>) => boolean) {\n const { data, status } = useFlatRundownWithMetadata();\n const filteredData = useMemo(() => {\n return data.filter(cb);\n }, [data, cb]);\n\n return { data: filteredData, status };\n}\n\n/**\n * Hook to get a specific entry by ID from the rundown\n */\nexport function useEntry(entryId: EntryId | null): OntimeEntry | null {\n const { data: rundown } = useRundown();\n\n if (entryId === null) return null;\n return rundown.entries[entryId] ?? null;\n}\n"],"names":["SupportedEntry","Event","Delay","Group","Milestone","isOntimeEvent","event","type","isPlayableEvent","skip","isOntimeDelay","isOntimeGroup","isOntimeMilestone","isKeyOfType","key","obj","isOSCOutput","output","isHTTPOutput","isOntimeAction","checkIsNextDay","current","previous","dayOffset","timeStart","duration","dayInMs","isNewLatest","currentEvent","previousEvent","normalisedCurrentEnd","normalisedPreviousEnd","rundownPath","apiEntryUrl","fetchProjectRundownList","options","axios","get","signal","data","fetchCurrentRundown","res","isValidRundown","Error","x","id","Array","isArray","order","flatOrder","entries","revision","loadRundown","rundownId","post","createRundown","title","duplicateRundown","renameRundown","patch","deleteRundown","delete","postAddEntry","putEditEntry","put","putBatchEditEvents","patchReorderEntry","requestEventSwap","from","to","requestApplyDelay","delayId","postCloneEntry","entryId","requestGroupEntries","entryIds","ids","requestUngroup","groupId","deleteEntries","requestDeleteAll","lastMetadataKey","getRundownMetadata","selectedEventId","metadata","process","initRundownMetadata","lastSnapshot","rundownMetadata","entry","getFlatRundownMetadata","flatRundown","extendedEntry","push","rundownMeta","latestEvent","previousEntryId","thisId","eventIndex","isPast","Boolean","isNextDay","totalGap","isLinkedToLoaded","isLoaded","groupColour","undefined","groupEntries","isFirstAfterGroup","processedRundownMetadata","processEntry","processedData","colour","length","parent","gap","linkStart","countToEnd","cachedRundownPlaceholder","useRundown","status","isError","refetch","isFetching","useQuery","queryKey","RUNDOWN","queryFn","refetchInterval","queryRefetchIntervalSlow","useRundownWithMetadata","useSelectedEventId","useMemo","useFlatRundown","map","filter","useFlatRundownWithMetadata","usePartialRundown","cb","useEntry","rundown"],"mappings":"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"}
1
+ {"version":3,"file":"useRundown-DAo6huE4.js","sources":["../../../../packages/types/src/definitions/core/OntimeEntry.ts","../../../../packages/types/src/utils/guards.ts","../../../../packages/utils/src/date-utils/checkIsNextDay.ts","../../../../packages/utils/src/date-utils/isNewLatest.ts","../../src/common/api/rundown.ts","../../src/common/utils/rundownMetadata.ts","../../src/common/hooks-query/useRundown.ts"],"sourcesContent":["import type { MaybeNumber } from '../../utils/utils.type.js';\nimport type { EndAction } from '../EndAction.type.js';\nimport type { TimerType } from '../TimerType.type.js';\nimport type { TimeStrategy } from '../TimeStrategy.type.js';\nimport type { Trigger } from './Automation.type.js';\nimport type { EntryCustomFields } from './CustomFields.type.js';\n\nexport type EntryId = string;\n\nexport enum SupportedEntry {\n Event = 'event',\n Delay = 'delay',\n Group = 'group',\n Milestone = 'milestone',\n}\n\nexport type OntimeBaseEvent = {\n type: SupportedEntry;\n id: EntryId;\n};\n\nexport type OntimeDelay = OntimeBaseEvent & {\n type: SupportedEntry.Delay;\n duration: number;\n parent: EntryId | null;\n};\n\nexport type OntimeMilestone = OntimeBaseEvent & {\n type: SupportedEntry.Milestone;\n cue: string;\n title: string;\n note: string;\n colour: string;\n custom: EntryCustomFields;\n parent: EntryId | null;\n // !==== RUNTIME METADATA ====! //\n revision: number;\n};\n\nexport type OntimeGroup = OntimeBaseEvent & {\n type: SupportedEntry.Group;\n title: string;\n note: string;\n entries: EntryId[];\n targetDuration: MaybeNumber;\n colour: string;\n custom: EntryCustomFields;\n // !==== RUNTIME METADATA ====! //\n revision: number;\n timeStart: MaybeNumber; // calculated at runtime\n timeEnd: MaybeNumber; // calculated at runtime\n duration: number; // calculated at runtime\n isFirstLinked: boolean; // calculated at runtime, whether the first event is linked\n};\n\nexport type OntimeEvent = OntimeBaseEvent & {\n type: SupportedEntry.Event;\n flag: boolean;\n cue: string;\n title: string;\n note: string;\n endAction: EndAction;\n timerType: TimerType;\n countToEnd: boolean;\n linkStart: boolean;\n timeStrategy: TimeStrategy;\n timeStart: number;\n timeEnd: number;\n duration: number;\n skip: boolean;\n colour: string;\n timeWarning: number;\n timeDanger: number;\n custom: EntryCustomFields;\n triggers: Trigger[];\n parent: EntryId | null;\n // !==== RUNTIME METADATA ====! //\n revision: number;\n delay: number; // calculated at runtime\n dayOffset: number; // calculated at runtime\n gap: number; // calculated at runtime\n};\n\nexport type PlayableEvent = OntimeEvent & { skip: false };\nexport type TimeField = 'timeStart' | 'timeEnd' | 'duration';\nexport type OntimeEntry = OntimeDelay | OntimeGroup | OntimeEvent | OntimeMilestone;\n\n// we need to create a manual union type since keys cannot be used in type unions\nexport type OntimeEntryCommonKeys = keyof OntimeEvent | keyof OntimeDelay | keyof OntimeGroup | keyof OntimeMilestone;\n","import type { AutomationOutput, HTTPOutput, OntimeAction, OSCOutput } from '../definitions/core/Automation.type.js';\nimport type {\n OntimeDelay,\n OntimeEntry,\n OntimeEvent,\n OntimeGroup,\n OntimeMilestone,\n PlayableEvent,\n} from '../definitions/core/OntimeEntry.js';\nimport { SupportedEntry } from '../definitions/core/OntimeEntry.js';\nimport { type TimerLifeCycle, timerLifecycleValues } from '../definitions/core/TimerLifecycle.type.js';\n\ntype MaybeEvent = OntimeEntry | Partial<OntimeEntry> | null | undefined;\n\nexport function isOntimeEvent(event: MaybeEvent): event is OntimeEvent {\n return event?.type === SupportedEntry.Event;\n}\n\nexport function isPlayableEvent(event: OntimeEvent): event is PlayableEvent {\n return !event.skip;\n}\n\nexport function isOntimeDelay(event: MaybeEvent): event is OntimeDelay {\n return event?.type === SupportedEntry.Delay;\n}\n\nexport function isOntimeGroup(event: MaybeEvent): event is OntimeGroup {\n return event?.type === SupportedEntry.Group;\n}\n\nexport function isOntimeMilestone(event: MaybeEvent): event is OntimeMilestone {\n return event?.type === SupportedEntry.Milestone;\n}\n\ntype AnyKeys<T> = keyof T;\n\nexport function isKeyOfType<T extends object>(key: PropertyKey, obj: T): key is AnyKeys<T> {\n return key in obj;\n}\n\nexport function isOSCOutput(output: AutomationOutput): output is OSCOutput {\n return output.type === 'osc';\n}\n\nexport function isHTTPOutput(output: AutomationOutput): output is HTTPOutput {\n return output.type === 'http';\n}\n\nexport function isOntimeAction(output: AutomationOutput): output is OntimeAction {\n return output.type === 'ontime';\n}\n\nexport function isTimerLifeCycle(maybeCycle: unknown): maybeCycle is TimerLifeCycle {\n if (typeof maybeCycle !== 'string') return false;\n return timerLifecycleValues.includes(maybeCycle);\n}\n","import type { OntimeEvent } from 'ontime-types';\n\nimport { dayInMs } from './conversionUtils.js';\n\n/**\n * Utility function checks whether a given event is the day after from its predecessor\n */\nexport function checkIsNextDay(\n current: Pick<OntimeEvent, 'timeStart' | 'dayOffset'>,\n previous: Pick<OntimeEvent, 'timeStart' | 'duration' | 'dayOffset'> | null,\n): boolean {\n if (!previous) {\n return false;\n }\n\n // if the day offsets are the same it can't be the next day\n if (current.dayOffset <= previous.dayOffset) {\n return false;\n }\n\n // if the previous event crossed midnight then the current is the same day\n if (previous.timeStart + previous.duration > dayInMs) {\n return false;\n }\n\n return true;\n}\n","import type { OntimeEvent } from 'ontime-types';\n\nimport { dayInMs } from './conversionUtils.js';\n\n/**\n * Checks whether a new element is the latest in the list\n */\nexport function isNewLatest(\n currentEvent: Pick<OntimeEvent, 'timeStart' | 'duration' | 'dayOffset'>,\n previousEvent: Pick<OntimeEvent, 'timeStart' | 'duration' | 'dayOffset'> | null,\n) {\n // true if there is no previous\n if (!previousEvent) {\n return true;\n }\n\n const normalisedCurrentEnd = currentEvent.timeStart + currentEvent.duration + currentEvent.dayOffset * dayInMs;\n const normalisedPreviousEnd = previousEvent.timeStart + previousEvent.duration + previousEvent.dayOffset * dayInMs;\n\n return normalisedCurrentEnd >= normalisedPreviousEnd;\n}\n","import axios, { AxiosResponse } from 'axios';\nimport { EntryId, OntimeEntry, OntimeEvent, ProjectRundownsList, Rundown, TransientEventPayload } from 'ontime-types';\n\nimport { apiEntryUrl } from './constants';\nimport type { RequestOptions } from './requestOptions';\n\ntype RundownId = string;\nconst rundownPath = `${apiEntryUrl}/rundowns`;\n\n// #region operations on project rundowns =========================\n\n/**\n * HTTP request to fetch a list of existing rundowns\n */\nexport async function fetchProjectRundownList(options?: RequestOptions): Promise<ProjectRundownsList> {\n const res = await axios.get(rundownPath, { signal: options?.signal });\n return res.data;\n}\n\n/**\n * HTTP request to fetch all entries in the currently loaded rundown\n */\nexport async function fetchCurrentRundown(options?: RequestOptions): Promise<Rundown> {\n const res = await axios.get(`${rundownPath}/current`, { signal: options?.signal });\n if (!isValidRundown(res.data)) {\n throw new Error('Invalid rundown payload');\n }\n return res.data;\n\n function isValidRundown(x: any): x is Rundown {\n return (\n x &&\n typeof x === 'object' &&\n typeof x.id === 'string' &&\n Array.isArray(x.order) &&\n Array.isArray(x.flatOrder) &&\n x.entries &&\n typeof x.entries === 'object' &&\n typeof x.revision === 'number'\n );\n }\n}\n\n/**\n * HTTP request to switch the currently loaded rundown\n */\nexport async function loadRundown(rundownId: RundownId): Promise<AxiosResponse<ProjectRundownsList>> {\n return axios.post(`${rundownPath}/${rundownId}/load`);\n}\n\n/**\n * HTTP request to create a new rundown\n */\nexport async function createRundown(title: string): Promise<AxiosResponse<ProjectRundownsList>> {\n return axios.post(rundownPath, { title });\n}\n\n/**\n * HTTP request to duplicate an existing rundown\n */\nexport async function duplicateRundown(rundownId: RundownId): Promise<AxiosResponse<ProjectRundownsList>> {\n return axios.post(`${rundownPath}/${rundownId}/duplicate`);\n}\n\n/**\n * HTTP request to rename an existing rundown\n */\nexport async function renameRundown(rundownId: RundownId, title: string): Promise<AxiosResponse<ProjectRundownsList>> {\n return axios.patch(`${rundownPath}/${rundownId}`, { title });\n}\n\n/**\n * HTTP request to delete a rundown\n */\nexport async function deleteRundown(rundownId: RundownId): Promise<AxiosResponse<ProjectRundownsList>> {\n return axios.delete(`${rundownPath}/${rundownId}`);\n}\n\n// #endregion operations on project rundowns ======================\n// #region operations on rundown entries ==========================\n\n/**\n * HTTP request to post new entry\n */\nexport async function postAddEntry(\n rundownId: RundownId,\n data: TransientEventPayload,\n): Promise<AxiosResponse<OntimeEntry>> {\n return axios.post(`${rundownPath}/${rundownId}/entry`, data);\n}\n\n/**\n * HTTP request to edit an entry\n */\nexport async function putEditEntry(\n rundownId: RundownId,\n data: Partial<OntimeEntry>,\n): Promise<AxiosResponse<OntimeEntry>> {\n return axios.put(`${rundownPath}/${rundownId}/entry`, data);\n}\n\nexport type BatchEditEntry = {\n data: Partial<OntimeEvent>;\n ids: EntryId[];\n};\n\n/**\n * HTTP request to edit multiple events\n */\nexport async function putBatchEditEvents(rundownId: RundownId, data: BatchEditEntry): Promise<AxiosResponse<Rundown>> {\n return axios.put(`${rundownPath}/${rundownId}/batch`, data);\n}\n\nexport type ReorderEntry = {\n entryId: EntryId;\n destinationId: EntryId;\n order: 'before' | 'after' | 'insert';\n};\n\n/**\n * HTTP request to reorder an entry\n */\nexport async function patchReorderEntry(rundownId: RundownId, data: ReorderEntry): Promise<AxiosResponse<Rundown>> {\n return axios.patch(`${rundownPath}/${rundownId}/reorder`, data);\n}\n\n/**\n * HTTP request to swap two events\n */\nexport async function requestEventSwap(\n rundownId: RundownId,\n from: EntryId,\n to: EntryId,\n): Promise<AxiosResponse<Rundown>> {\n return axios.patch(`${rundownPath}/${rundownId}/swap`, { from, to });\n}\n\n/**\n * HTTP request to request application of delay\n */\nexport async function requestApplyDelay(rundownId: RundownId, delayId: EntryId): Promise<AxiosResponse<Rundown>> {\n return axios.patch(`${rundownPath}/${rundownId}/applydelay/${delayId}`);\n}\n\n/**\n * HTTP request for cloning an entry\n */\nexport async function postCloneEntry(\n rundownId: RundownId,\n entryId: EntryId,\n options?: { before?: EntryId; after?: EntryId },\n): Promise<AxiosResponse<Rundown>> {\n return axios.post(`${rundownPath}/${rundownId}/clone/${entryId}`, options);\n}\n\n/**\n * HTTP request for grouping a list of entries into a group\n */\nexport async function requestGroupEntries(rundownId: RundownId, entryIds: EntryId[]): Promise<AxiosResponse<Rundown>> {\n return axios.post(`${rundownPath}/${rundownId}/group`, { ids: entryIds });\n}\n\n/**\n * HTTP request for dissolving of a group\n */\nexport async function requestUngroup(rundownId: RundownId, groupId: EntryId): Promise<AxiosResponse<Rundown>> {\n return axios.post(`${rundownPath}/${rundownId}/ungroup/${groupId}`);\n}\n\n/**\n * HTTP request to delete entries of a given rundown\n */\nexport async function deleteEntries(rundownId: RundownId, entryIds: EntryId[]): Promise<AxiosResponse<Rundown>> {\n return axios.delete(`${rundownPath}/${rundownId}/entries`, { data: { ids: entryIds } });\n}\n\n/**\n * HTTP request to delete all entries of a given rundown\n */\nexport async function requestDeleteAll(rundownId: RundownId): Promise<AxiosResponse<Rundown>> {\n return axios.delete(`${rundownPath}/${rundownId}/all`);\n}\n\n// #endregion operations on rundown entries =======================\n","import {\n isOntimeEvent,\n isOntimeGroup,\n isPlayableEvent,\n MaybeString,\n OntimeDelay,\n OntimeEntry,\n OntimeEvent,\n OntimeMilestone,\n PlayableEvent,\n Rundown,\n} from 'ontime-types';\nimport { checkIsNextDay, isNewLatest } from 'ontime-utils';\n\nexport type RundownMetadata = {\n previousEvent: PlayableEvent | null; // The playableEvent from the previous iteration, used by indicators\n latestEvent: PlayableEvent | null; // The playableEvent most forwards in time processed so far\n previousEntryId: MaybeString; // previous entry is used to infer position in the rundown for new events\n thisId: MaybeString;\n eventIndex: number;\n isPast: boolean;\n isNextDay: boolean;\n totalGap: number;\n isLinkedToLoaded: boolean; // check if the event can link all the way back to the currently playing event\n isLoaded: boolean;\n groupId: MaybeString;\n groupColour: string | undefined;\n groupEntries: number | undefined;\n isFirstAfterGroup: boolean;\n};\n\nexport type ExtendedEntry<T extends OntimeEntry = OntimeEntry> = T & RundownMetadata;\n\nexport const lastMetadataKey = 'LAST';\n\nexport type RundownMetadataObject = Record<string, Readonly<RundownMetadata>>;\n\n/**\n * Generates a Rundown Metadata object from a rundown\n */\nexport function getRundownMetadata(\n data: Pick<Rundown, 'entries' | 'flatOrder'>,\n selectedEventId: MaybeString,\n): RundownMetadataObject {\n const { metadata, process } = initRundownMetadata(selectedEventId);\n // keep a single reference to the metadata which we override for every entry\n let lastSnapshot = metadata;\n const rundownMetadata: RundownMetadataObject = {};\n\n for (const id of data.flatOrder) {\n const entry = data.entries[id];\n lastSnapshot = process(entry);\n rundownMetadata[id] = lastSnapshot;\n }\n\n // ensure some blank data even for empty rundowns\n rundownMetadata[lastMetadataKey] = lastSnapshot;\n\n return rundownMetadata;\n}\n\nexport function getFlatRundownMetadata(\n data: Pick<Rundown, 'entries' | 'flatOrder'>,\n selectedEventId: MaybeString,\n): ExtendedEntry[] {\n const { process } = initRundownMetadata(selectedEventId);\n const flatRundown: ExtendedEntry[] = [];\n\n for (const id of data.flatOrder) {\n const entry = data.entries[id];\n const extendedEntry = { ...entry, ...process(entry) };\n flatRundown.push(extendedEntry);\n }\n\n return flatRundown;\n}\n\n/**\n * Creates a process function which aggregates the rundown metadata and event metadata\n */\nexport function initRundownMetadata(selectedEventId: MaybeString) {\n let rundownMeta: RundownMetadata = {\n previousEvent: null,\n latestEvent: null,\n previousEntryId: null,\n thisId: null,\n eventIndex: 0,\n isPast: Boolean(selectedEventId), // all events before the current selected are in the past\n isNextDay: false,\n totalGap: 0,\n isLinkedToLoaded: false,\n isLoaded: false,\n groupId: null,\n groupColour: undefined,\n groupEntries: undefined,\n isFirstAfterGroup: false,\n };\n\n function process(entry: OntimeEntry): Readonly<RundownMetadata> {\n const processedRundownMetadata = processEntry(rundownMeta, selectedEventId, entry);\n rundownMeta = processedRundownMetadata;\n return rundownMeta;\n }\n\n return { metadata: rundownMeta, process };\n}\n\n/**\n * Receives a rundown entry and processes its place in the rundown\n */\nfunction processEntry(\n rundownMetadata: RundownMetadata,\n selectedEventId: MaybeString,\n entry: Readonly<OntimeEntry>,\n): Readonly<RundownMetadata> {\n const processedData = { ...rundownMetadata };\n // initialise data to be overridden below\n processedData.isNextDay = false;\n processedData.isLoaded = false;\n\n processedData.previousEntryId = processedData.thisId; // thisId comes from the previous iteration\n processedData.thisId = entry.id; // we reassign thisId\n processedData.previousEvent = processedData.latestEvent;\n\n if (entry.id === selectedEventId) {\n processedData.isLoaded = true;\n processedData.isPast = false;\n processedData.isLinkedToLoaded = true;\n }\n\n if (isOntimeGroup(entry)) {\n processedData.groupId = entry.id;\n processedData.groupColour = entry.colour;\n processedData.groupEntries = entry.entries.length;\n } else {\n // for delays and groups, we insert the group metadata\n if ((entry as OntimeEvent | OntimeDelay | OntimeMilestone).parent !== processedData.groupId) {\n // if the parent is not the current group, we need to update the groupId\n processedData.groupId = (entry as OntimeEvent | OntimeDelay | OntimeMilestone).parent;\n processedData.groupEntries = undefined;\n if ((entry as OntimeEvent | OntimeDelay | OntimeMilestone).parent === null) {\n // if the entry has no parent, it cannot have a group colour\n processedData.groupColour = undefined;\n }\n }\n\n if (isOntimeEvent(entry)) {\n // event indexes are 1 based in UI\n processedData.eventIndex += 1;\n processedData.isFirstAfterGroup = Boolean(processedData.previousEvent?.parent) && entry.parent === null;\n\n if (isPlayableEvent(entry)) {\n processedData.isNextDay = checkIsNextDay(entry, processedData.previousEvent);\n \n if (!processedData.isPast && !processedData.isLoaded) {\n /**\n * isLinkToLoaded is a chain value that we maintain until we\n * a) find an unlinked event\n * b) find a countToEnd event\n */\n processedData.totalGap += entry.gap;\n processedData.isLinkedToLoaded =\n entry.linkStart && !processedData.previousEvent?.countToEnd && processedData.isLinkedToLoaded;\n }\n\n if (isNewLatest(entry, processedData.latestEvent)) {\n // this event is the forward most event in rundown, for next iteration\n processedData.latestEvent = entry;\n }\n }\n }\n }\n\n return processedData;\n}\n","import { useMemo } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport { EntryId, OntimeEntry, Rundown } from 'ontime-types';\n\nimport { queryRefetchIntervalSlow } from '../../ontimeConfig';\nimport { RUNDOWN } from '../api/constants';\nimport { fetchCurrentRundown } from '../api/rundown';\nimport { useSelectedEventId } from '../hooks/useSocket';\nimport { ExtendedEntry, getFlatRundownMetadata, getRundownMetadata } from '../utils/rundownMetadata';\n\n// revision is -1 so that the remote revision is higher\nconst cachedRundownPlaceholder: Rundown = {\n id: 'default',\n title: '',\n order: [],\n flatOrder: [],\n entries: {},\n revision: -1,\n};\n\n/**\n * Normalised rundown data\n */\nexport default function useRundown() {\n const { data, status, isError, refetch, isFetching } = useQuery<Rundown>({\n queryKey: RUNDOWN,\n queryFn: ({ signal }) => fetchCurrentRundown({ signal }),\n refetchInterval: queryRefetchIntervalSlow,\n });\n\n return { data: data ?? cachedRundownPlaceholder, status, isError, refetch, isFetching };\n}\n\nexport function useRundownWithMetadata() {\n const { data, status } = useRundown();\n const selectedEventId = useSelectedEventId();\n const rundownMetadata = useMemo(() => getRundownMetadata(data, selectedEventId), [data, selectedEventId]);\n return { data, status, rundownMetadata };\n}\n\n/**\n * Provides access to a flat rundown\n * built from the order and rundown fields\n */\nexport function useFlatRundown() {\n const { data, status } = useRundown();\n\n const flatRundown = useMemo(() => {\n if (data.revision === -1) {\n return [];\n }\n return data.flatOrder.map((id) => data.entries[id]).filter((entry): entry is OntimeEntry => entry !== undefined);\n }, [data]);\n\n return { data: flatRundown, rundownId: data.id, status };\n}\n\nexport function useFlatRundownWithMetadata() {\n const { data, status } = useRundown();\n const selectedEventId = useSelectedEventId();\n\n const rundownWithMetadata = useMemo(() => getFlatRundownMetadata(data, selectedEventId), [data, selectedEventId]);\n return { data: rundownWithMetadata, status };\n}\n\n/**\n * Provides access to a partial rundown based on a filter callback\n *\n * Callers MUST memoize the callback with useCallback to prevent\n * re-filtering on every render.\n *\n */\nexport function usePartialRundown(cb: (event: ExtendedEntry<OntimeEntry>) => boolean) {\n const { data, status } = useFlatRundownWithMetadata();\n const filteredData = useMemo(() => {\n return data.filter(cb);\n }, [data, cb]);\n\n return { data: filteredData, status };\n}\n\n/**\n * Hook to get a specific entry by ID from the rundown\n */\nexport function useEntry(entryId: EntryId | null): OntimeEntry | null {\n const { data: rundown } = useRundown();\n\n if (entryId === null) return null;\n return rundown.entries[entryId] ?? null;\n}\n"],"names":["SupportedEntry","Event","Delay","Group","Milestone","isOntimeEvent","event","type","isPlayableEvent","skip","isOntimeDelay","isOntimeGroup","isOntimeMilestone","isKeyOfType","key","obj","isOSCOutput","output","isHTTPOutput","isOntimeAction","checkIsNextDay","current","previous","dayOffset","timeStart","duration","dayInMs","isNewLatest","currentEvent","previousEvent","normalisedCurrentEnd","normalisedPreviousEnd","rundownPath","apiEntryUrl","fetchProjectRundownList","options","axios","get","signal","data","fetchCurrentRundown","res","isValidRundown","Error","x","id","Array","isArray","order","flatOrder","entries","revision","loadRundown","rundownId","post","createRundown","title","duplicateRundown","renameRundown","patch","deleteRundown","delete","postAddEntry","putEditEntry","put","putBatchEditEvents","patchReorderEntry","requestEventSwap","from","to","requestApplyDelay","delayId","postCloneEntry","entryId","requestGroupEntries","entryIds","ids","requestUngroup","groupId","deleteEntries","requestDeleteAll","lastMetadataKey","getRundownMetadata","selectedEventId","metadata","process","initRundownMetadata","lastSnapshot","rundownMetadata","entry","getFlatRundownMetadata","flatRundown","extendedEntry","push","rundownMeta","latestEvent","previousEntryId","thisId","eventIndex","isPast","Boolean","isNextDay","totalGap","isLinkedToLoaded","isLoaded","groupColour","undefined","groupEntries","isFirstAfterGroup","processedRundownMetadata","processEntry","processedData","colour","length","parent","gap","linkStart","countToEnd","cachedRundownPlaceholder","useRundown","status","isError","refetch","isFetching","useQuery","queryKey","RUNDOWN","queryFn","refetchInterval","queryRefetchIntervalSlow","useRundownWithMetadata","useSelectedEventId","useMemo","useFlatRundown","map","filter","useFlatRundownWithMetadata","usePartialRundown","cb","useEntry","rundown"],"mappings":"wdASYA,IAAAA,GAAAA,IACVC,EAAAA,MAAQ,QACRC,EAAAA,MAAQ,QACRC,EAAAA,MAAQ,QACRC,EAAAA,UAAY,YAJFJ,IAAAA,GAAAA,CAAAA,CAAAA,ECKL,SAASK,EAAcC,EAAyC,CAC9DA,OAAAA,GAAAA,YAAAA,EAAOC,QAASP,EAAeC,KACxC,CAEO,SAASO,EAAgBF,EAA4C,CAC1E,MAAO,CAACA,EAAMG,IAChB,CAEO,SAASC,EAAcJ,EAAyC,CAC9DA,OAAAA,GAAAA,YAAAA,EAAOC,QAASP,EAAeE,KACxC,CAEO,SAASS,EAAcL,EAAyC,CAC9DA,OAAAA,GAAAA,YAAAA,EAAOC,QAASP,EAAeG,KACxC,CAEO,SAASS,EAAkBN,EAA6C,CACtEA,OAAAA,GAAAA,YAAAA,EAAOC,QAASP,EAAeI,SACxC,CAIgBS,SAAAA,EAA8BC,EAAkBC,EAA2B,CACzF,OAAOD,KAAOC,CAChB,CAEO,SAASC,EAAYC,EAA+C,CACzE,OAAOA,EAAOV,OAAS,KACzB,CAEO,SAASW,EAAaD,EAAgD,CAC3E,OAAOA,EAAOV,OAAS,MACzB,CAEO,SAASY,EAAeF,EAAkD,CAC/E,OAAOA,EAAOV,OAAS,QACzB,CC3CgBa,SAAAA,EACdC,EACAC,EACS,CAWT,MAVI,GAACA,GAKDD,EAAQE,WAAaD,EAASC,WAK9BD,EAASE,UAAYF,EAASG,SAAWC,EAK/C,CCnBgBC,SAAAA,EACdC,EACAC,EACA,CAEA,GAAI,CAACA,EACI,MAAA,GAGT,MAAMC,EAAuBF,EAAaJ,UAAYI,EAAaH,SAAWG,EAAaL,UAAYG,EACjGK,EAAwBF,EAAcL,UAAYK,EAAcJ,SAAWI,EAAcN,UAAYG,EAE3G,OAAOI,GAAwBC,CACjC,CCbA,MAAMC,EAAc,GAAGC,CAAW,YAOlC,eAAsBC,EAAwBC,EAAwD,CAEpG,OADY,MAAMC,EAAMC,IAAIL,EAAa,CAAEM,OAAQH,GAAAA,YAAAA,EAASG,MAAAA,CAAQ,GACzDC,IACb,CAKA,eAAsBC,EAAoBL,EAA4C,CACpF,MAAMM,EAAM,MAAML,EAAMC,IAAI,GAAGL,CAAW,WAAY,CAAEM,OAAQH,GAAAA,YAAAA,EAASG,MAAAA,CAAQ,EACjF,GAAI,CAACI,EAAeD,EAAIF,IAAI,EACpB,MAAA,IAAII,MAAM,yBAAyB,EAE3C,OAAOF,EAAIF,KAEX,SAASG,EAAeE,EAAsB,CAE1CA,OAAAA,GACA,OAAOA,GAAM,UACb,OAAOA,EAAEC,IAAO,UAChBC,MAAMC,QAAQH,EAAEI,KAAK,GACrBF,MAAMC,QAAQH,EAAEK,SAAS,GACzBL,EAAEM,SACF,OAAON,EAAEM,SAAY,UACrB,OAAON,EAAEO,UAAa,QAAA,CAG5B,CAKA,eAAsBC,EAAYC,EAAmE,CACnG,OAAOjB,EAAMkB,KAAK,GAAGtB,CAAW,IAAIqB,CAAS,OAAO,CACtD,CAKA,eAAsBE,EAAcC,EAA4D,CACvFpB,OAAAA,EAAMkB,KAAKtB,EAAa,CAAEwB,MAAAA,CAAAA,CAAO,CAC1C,CAKA,eAAsBC,EAAiBJ,EAAmE,CACxG,OAAOjB,EAAMkB,KAAK,GAAGtB,CAAW,IAAIqB,CAAS,YAAY,CAC3D,CAKsBK,eAAAA,EAAcL,EAAsBG,EAA4D,CACpH,OAAOpB,EAAMuB,MAAM,GAAG3B,CAAW,IAAIqB,CAAS,GAAI,CAAEG,MAAAA,CAAAA,CAAO,CAC7D,CAKA,eAAsBI,EAAcP,EAAmE,CACrG,OAAOjB,EAAMyB,OAAO,GAAG7B,CAAW,IAAIqB,CAAS,EAAE,CACnD,CAQsBS,eAAAA,EACpBT,EACAd,EACqC,CACrC,OAAOH,EAAMkB,KAAK,GAAGtB,CAAW,IAAIqB,CAAS,SAAUd,CAAI,CAC7D,CAKsBwB,eAAAA,EACpBV,EACAd,EACqC,CACrC,OAAOH,EAAM4B,IAAI,GAAGhC,CAAW,IAAIqB,CAAS,SAAUd,CAAI,CAC5D,CAUsB0B,eAAAA,EAAmBZ,EAAsBd,EAAuD,CACpH,OAAOH,EAAM4B,IAAI,GAAGhC,CAAW,IAAIqB,CAAS,SAAUd,CAAI,CAC5D,CAWsB2B,eAAAA,EAAkBb,EAAsBd,EAAqD,CACjH,OAAOH,EAAMuB,MAAM,GAAG3B,CAAW,IAAIqB,CAAS,WAAYd,CAAI,CAChE,CAKsB4B,eAAAA,EACpBd,EACAe,EACAC,EACiC,CACjC,OAAOjC,EAAMuB,MAAM,GAAG3B,CAAW,IAAIqB,CAAS,QAAS,CAAEe,KAAAA,EAAMC,GAAAA,CAAAA,CAAI,CACrE,CAKsBC,eAAAA,EAAkBjB,EAAsBkB,EAAmD,CACxGnC,OAAAA,EAAMuB,MAAM,GAAG3B,CAAW,IAAIqB,CAAS,eAAekB,CAAO,EAAE,CACxE,CAKsBC,eAAAA,EACpBnB,EACAoB,EACAtC,EACiC,CAC1BC,OAAAA,EAAMkB,KAAK,GAAGtB,CAAW,IAAIqB,CAAS,UAAUoB,CAAO,GAAItC,CAAO,CAC3E,CAKsBuC,eAAAA,EAAoBrB,EAAsBsB,EAAsD,CACpH,OAAOvC,EAAMkB,KAAK,GAAGtB,CAAW,IAAIqB,CAAS,SAAU,CAAEuB,IAAKD,CAAAA,CAAU,CAC1E,CAKsBE,eAAAA,GAAexB,EAAsByB,EAAmD,CACrG1C,OAAAA,EAAMkB,KAAK,GAAGtB,CAAW,IAAIqB,CAAS,YAAYyB,CAAO,EAAE,CACpE,CAKsBC,eAAAA,GAAc1B,EAAsBsB,EAAsD,CAC9G,OAAOvC,EAAMyB,OAAO,GAAG7B,CAAW,IAAIqB,CAAS,WAAY,CAAEd,KAAM,CAAEqC,IAAKD,CAAAA,CAAS,CAAG,CACxF,CAKA,eAAsBK,GAAiB3B,EAAuD,CAC5F,OAAOjB,EAAMyB,OAAO,GAAG7B,CAAW,IAAIqB,CAAS,MAAM,CACvD,CCpJO,MAAM4B,EAAkB,OAOfC,SAAAA,EACd3C,EACA4C,EACuB,CACjB,KAAA,CAAEC,SAAAA,EAAUC,QAAAA,CAAAA,EAAYC,EAAoBH,CAAe,EAEjE,IAAII,EAAeH,EACnB,MAAMI,EAAyC,CAAC,EAErC3C,UAAAA,KAAMN,EAAKU,UAAW,CACzBwC,MAAAA,EAAQlD,EAAKW,QAAQL,CAAE,EAC7B0C,EAAeF,EAAQI,CAAK,EAC5BD,EAAgB3C,CAAE,EAAI0C,CAAAA,CAIxBC,OAAAA,EAAgBP,CAAe,EAAIM,EAE5BC,CACT,CAEgBE,SAAAA,EACdnD,EACA4C,EACiB,CACX,KAAA,CAAEE,QAAAA,CAAAA,EAAYC,EAAoBH,CAAe,EACjDQ,EAA+B,CAAE,EAE5B9C,UAAAA,KAAMN,EAAKU,UAAW,CACzBwC,MAAAA,EAAQlD,EAAKW,QAAQL,CAAE,EACvB+C,EAAgB,CAAE,GAAGH,EAAO,GAAGJ,EAAQI,CAAK,CAAE,EACpDE,EAAYE,KAAKD,CAAa,CAAA,CAGzBD,OAAAA,CACT,CAKO,SAASL,EAAoBH,EAA8B,CAChE,IAAIW,EAA+B,CACjCjE,cAAe,KACfkE,YAAa,KACbC,gBAAiB,KACjBC,OAAQ,KACRC,WAAY,EACZC,OAAQC,EAAQjB,EAChBkB,UAAW,GACXC,SAAU,EACVC,iBAAkB,GAClBC,SAAU,GACV1B,QAAS,KACT2B,YAAaC,OACbC,aAAcD,OACdE,kBAAmB,EACrB,EAEA,SAASvB,EAAQI,EAA+C,CAEhDoB,OAAAA,EADmBC,EAAahB,EAAaX,EAAiBM,CAAK,EAE1EK,CAAAA,CAGF,MAAA,CAAEV,SAAUU,EAAaT,QAAAA,CAAQ,CAC1C,CAKA,SAASyB,EACPtB,EACAL,EACAM,EAC2B,SAC3B,MAAMsB,EAAgB,CAAE,GAAGvB,CAAgB,EAE3CuB,OAAAA,EAAcV,UAAY,GAC1BU,EAAcP,SAAW,GAEzBO,EAAcf,gBAAkBe,EAAcd,OAC9Cc,EAAcd,OAASR,EAAM5C,GAC7BkE,EAAclF,cAAgBkF,EAAchB,YAExCN,EAAM5C,KAAOsC,IACf4B,EAAcP,SAAW,GACzBO,EAAcZ,OAAS,GACvBY,EAAcR,iBAAmB,IAG/B5F,EAAc8E,CAAK,GACrBsB,EAAcjC,QAAUW,EAAM5C,GAC9BkE,EAAcN,YAAchB,EAAMuB,OACpBL,EAAAA,aAAelB,EAAMvC,QAAQ+D,SAGtCxB,EAAsDyB,SAAWH,EAAcjC,UAElFiC,EAAcjC,QAAWW,EAAsDyB,OAC/EH,EAAcJ,aAAeD,OACxBjB,EAAsDyB,SAAW,OAEpEH,EAAcN,YAAcC,SAI5BrG,EAAcoF,CAAK,IAErBsB,EAAcb,YAAc,EAC5Ba,EAAcH,kBAAoBR,IAAQW,EAAAA,EAAclF,gBAAdkF,MAAAA,EAA6BG,SAAWzB,EAAMyB,SAAW,KAE/F1G,EAAgBiF,CAAK,IACvBsB,EAAcV,UAAYjF,EAAeqE,EAAOsB,EAAclF,aAAa,EAEvE,CAACkF,EAAcZ,QAAU,CAACY,EAAcP,WAM1CO,EAAcT,UAAYb,EAAM0B,IAChCJ,EAAcR,iBACZd,EAAM2B,WAAa,GAACL,EAAAA,EAAclF,gBAAdkF,MAAAA,EAA6BM,aAAcN,EAAcR,kBAG7E5E,EAAY8D,EAAOsB,EAAchB,WAAW,IAE9CgB,EAAchB,YAAcN,MAM7BsB,CACT,CCnKA,MAAMO,EAAoC,CACxCzE,GAAI,UACJW,MAAO,GACPR,MAAO,CAAE,EACTC,UAAW,CAAE,EACbC,QAAS,CAAC,EACVC,SAAU,EACZ,EAKA,SAAwBoE,GAAa,CAC7B,KAAA,CAAEhF,KAAAA,EAAMiF,OAAAA,EAAQC,QAAAA,EAASC,QAAAA,EAASC,WAAAA,GAAeC,EAAkB,CACvEC,SAAUC,EACVC,QAASA,CAAC,CAAEzF,OAAAA,KAAaE,EAAoB,CAAEF,OAAAA,CAAAA,CAAQ,EACvD0F,gBAAiBC,CAAAA,CAClB,EAEM,MAAA,CAAE1F,KAAMA,GAAQ+E,EAA0BE,OAAAA,EAAQC,QAAAA,EAASC,QAAAA,EAASC,WAAAA,CAAW,CACxF,CAEO,SAASO,IAAyB,CACjC,KAAA,CAAE3F,KAAAA,EAAMiF,OAAAA,GAAWD,EAAW,EAC9BpC,EAAkBgD,EAAmB,EACrC3C,EAAkB4C,UAAQ,IAAMlD,EAAmB3C,EAAM4C,CAAe,EAAG,CAAC5C,EAAM4C,CAAe,CAAC,EACjG,MAAA,CAAE5C,KAAAA,EAAMiF,OAAAA,EAAQhC,gBAAAA,CAAgB,CACzC,CAMO,SAAS6C,IAAiB,CACzB,KAAA,CAAE9F,KAAAA,EAAMiF,OAAAA,GAAWD,EAAW,EAS7B,MAAA,CAAEhF,KAPW6F,EAAAA,QAAQ,IACtB7F,EAAKY,WAAa,GACb,CAAE,EAEJZ,EAAKU,UAAUqF,IAAKzF,GAAON,EAAKW,QAAQL,CAAE,CAAC,EAAE0F,OAAQ9C,GAAgCA,IAAUiB,MAAS,EAC9G,CAACnE,CAAI,CAAC,EAEmBc,UAAWd,EAAKM,GAAI2E,OAAAA,CAAO,CACzD,CAEO,SAASgB,GAA6B,CACrC,KAAA,CAAEjG,KAAAA,EAAMiF,OAAAA,GAAWD,EAAW,EAC9BpC,EAAkBgD,EAAmB,EAGpC,MAAA,CAAE5F,KADmB6F,UAAQ,IAAM1C,EAAuBnD,EAAM4C,CAAe,EAAG,CAAC5C,EAAM4C,CAAe,CAAC,EAC5EqC,OAAAA,CAAO,CAC7C,CASO,SAASiB,GAAkBC,EAAoD,CAC9E,KAAA,CAAEnG,KAAAA,EAAMiF,OAAAA,GAAWgB,EAA2B,EAK7C,MAAA,CAAEjG,KAJY6F,EAAAA,QAAQ,IACpB7F,EAAKgG,OAAOG,CAAE,EACpB,CAACnG,EAAMmG,CAAE,CAAC,EAEgBlB,OAAAA,CAAO,CACtC,CAKO,SAASmB,GAASlE,EAA6C,CAC9D,KAAA,CAAElC,KAAMqG,GAAYrB,EAAW,EAEjC9C,OAAAA,IAAY,KAAa,KACtBmE,EAAQ1F,QAAQuB,CAAO,GAAK,IACrC"}
@@ -1,2 +1,2 @@
1
- import{l as p,h as o,aG as g}from"./vendor-CKDP5hij.js";import{l as d}from"./useEventSelection-B9mbj1cM.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="cc9c16be-c9a7-4ef4-a2fc-bec22b96d206",e._sentryDebugIdIdentifier="sentry-dbid-cc9c16be-c9a7-4ef4-a2fc-bec22b96d206")}catch{}})();function m(e,t){return Object.values(e).includes(t)}const i="settings";function E(){const[e,t]=p(),n=o.useMemo(()=>e.get(i)??"project",[e]),c=o.useMemo(()=>!!e.get(i),[e]),[s,r]=n.split("__"),u=o.useCallback(()=>{e.delete(i),t(e)},[e,t]),a=o.useCallback(l=>{e.set(i,l),t(e)},[e,t]);return{isOpen:c,panel:s,location:r,setLocation:a,close:u}}const f="layout";var b=(e=>(e.CONTROL="control",e.PLANNING="planning",e.TRACKING="tracking",e))(b||{});function S(e){return m(b,e)?e:"control"}function G(){const[e,t]=p();return{layoutMode:S(e.get(f)),setLayoutMode:s=>{const r=new URLSearchParams(e);r.set(f,s),t(r,{replace:!0})}}}function h(e){const[t,n]=g({key:`rundown.${e}-editor-collapsed-groups`,defaultValue:[]}),c=o.useMemo(()=>new Set(t),[t]),s=o.useCallback(a=>c.has(a),[c]),r=o.useCallback(a=>{a&&n(l=>l.includes(a)?l:[...l,a])},[n]),u=o.useCallback(a=>{a&&n(l=>l.filter(y=>y!==a))},[n]);return{getIsCollapsed:s,collapseGroup:r,expandGroup:u}}function P(e){const{expandGroup:t}=h(e),n=d(s=>s.setSelectedEvents),c=d(s=>s.scrollToEntry);return o.useCallback(({id:s,index:r,parent:u})=>{t(u),n({id:s,index:r,selectMode:"click"}),requestAnimationFrame(()=>{c(s)})},[t,c,n])}export{b as E,G as a,P as b,h as c,E as u};
2
- //# sourceMappingURL=useSelectAndRevealEntry-Dd6MpVHe.js.map
1
+ import{l as p,h as o,aG as g}from"./vendor-BKUJ0_Du.js";import{l as d}from"./useEventSelection-Bpbu89c7.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="cc9c16be-c9a7-4ef4-a2fc-bec22b96d206",e._sentryDebugIdIdentifier="sentry-dbid-cc9c16be-c9a7-4ef4-a2fc-bec22b96d206")}catch{}})();function m(e,t){return Object.values(e).includes(t)}const i="settings";function E(){const[e,t]=p(),n=o.useMemo(()=>e.get(i)??"project",[e]),c=o.useMemo(()=>!!e.get(i),[e]),[s,r]=n.split("__"),u=o.useCallback(()=>{e.delete(i),t(e)},[e,t]),a=o.useCallback(l=>{e.set(i,l),t(e)},[e,t]);return{isOpen:c,panel:s,location:r,setLocation:a,close:u}}const f="layout";var b=(e=>(e.CONTROL="control",e.PLANNING="planning",e.TRACKING="tracking",e))(b||{});function S(e){return m(b,e)?e:"control"}function G(){const[e,t]=p();return{layoutMode:S(e.get(f)),setLayoutMode:s=>{const r=new URLSearchParams(e);r.set(f,s),t(r,{replace:!0})}}}function h(e){const[t,n]=g({key:`rundown.${e}-editor-collapsed-groups`,defaultValue:[]}),c=o.useMemo(()=>new Set(t),[t]),s=o.useCallback(a=>c.has(a),[c]),r=o.useCallback(a=>{a&&n(l=>l.includes(a)?l:[...l,a])},[n]),u=o.useCallback(a=>{a&&n(l=>l.filter(y=>y!==a))},[n]);return{getIsCollapsed:s,collapseGroup:r,expandGroup:u}}function P(e){const{expandGroup:t}=h(e),n=d(s=>s.setSelectedEvents),c=d(s=>s.scrollToEntry);return o.useCallback(({id:s,index:r,parent:u})=>{t(u),n({id:s,index:r,selectMode:"click"}),requestAnimationFrame(()=>{c(s)})},[t,c,n])}export{b as E,G as a,P as b,h as c,E as u};
2
+ //# sourceMappingURL=useSelectAndRevealEntry-DTg0hmxA.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSelectAndRevealEntry-Dd6MpVHe.js","sources":["../../../../packages/utils/src/common/objectUtils.ts","../../src/features/app-settings/useAppSettingsNavigation.tsx","../../src/views/editor/useEditorLayout.ts","../../src/features/rundown/useCollapsedGroups.ts","../../src/features/rundown/useSelectAndRevealEntry.ts"],"sourcesContent":["/**\n * Extracts a value from a nested object using a dot-separated path\n */\nexport function getPropertyFromPath<T extends object>(path: string, obj: T): unknown | undefined {\n const keys = path.split('.');\n let result: any = obj;\n\n // iterate through variable parts, and look for the property in the given object\n for (const key of keys) {\n if (result && typeof result === 'object' && key in result) {\n result = result[key];\n } else {\n return undefined;\n }\n }\n\n return result;\n}\n\n/**\n * Whether an object is empty\n */\nexport function isObjectEmpty(obj: object): boolean {\n return Object.keys(obj).length === 0;\n}\n\n/**\n * Removes a copy of the object without the properties which have undefined values\n */\nexport function withoutUndefinedValues<T extends Record<string, unknown>>(\n obj: T,\n): { [K in keyof T]: Exclude<T[K], undefined> } {\n Object.keys(obj).forEach((key) => obj[key] === undefined && delete obj[key]);\n return obj as { [K in keyof T]: Exclude<T[K], undefined> };\n}\n\n/**\n * Checks whether a value is part of an enum\n */\nexport function isValueOfEnum<T extends object>(enumObj: T, value: unknown): value is T[keyof T] {\n return Object.values(enumObj).includes(value);\n}\n","import { useCallback, useMemo } from 'react';\nimport { useSearchParams } from 'react-router';\n\nimport { SettingsOptionId } from './useAppSettingsMenu';\n\nconst settingsKey = 'settings';\n\nexport default function useAppSettingsNavigation() {\n const [searchParams, setSearchParams] = useSearchParams();\n\n const selectedPanel = useMemo(\n () => (searchParams.get(settingsKey) as SettingsOptionId | null) ?? 'project',\n [searchParams],\n );\n const isOpen = useMemo(() => Boolean(searchParams.get(settingsKey)), [searchParams]);\n const [panel, location] = selectedPanel.split('__');\n\n const close = useCallback(() => {\n searchParams.delete(settingsKey);\n setSearchParams(searchParams);\n }, [searchParams, setSearchParams]);\n\n const setLocation = useCallback(\n (panelId: SettingsOptionId) => {\n searchParams.set(settingsKey, panelId);\n setSearchParams(searchParams);\n },\n [searchParams, setSearchParams],\n );\n\n return { isOpen, panel, location, setLocation, close };\n}\n","import { useSearchParams } from 'react-router';\nimport { isValueOfEnum } from 'ontime-utils';\n\nconst layoutParam = 'layout';\n\nexport enum EditorLayoutMode {\n CONTROL = 'control',\n PLANNING = 'planning',\n TRACKING = 'tracking',\n}\n\n/**\n * Resolves the current editor layout mode from a nullable string value\n */\nfunction getEditorLayout(value: string | null): EditorLayoutMode {\n if (isValueOfEnum(EditorLayoutMode, value)) {\n return value;\n }\n return EditorLayoutMode.CONTROL;\n}\n\nexport function useEditorLayout() {\n const [searchParams, setSearchParams] = useSearchParams();\n const layoutMode = getEditorLayout(searchParams.get(layoutParam));\n\n const setLayoutMode = (mode: EditorLayoutMode) => {\n const nextParams = new URLSearchParams(searchParams);\n nextParams.set(layoutParam, mode);\n setSearchParams(nextParams, { replace: true });\n };\n\n return { layoutMode, setLayoutMode };\n}\n","import { useCallback, useMemo } from 'react';\nimport { useSessionStorage } from '@mantine/hooks';\nimport { EntryId } from 'ontime-types';\n\n/**\n * Keeps track of which groups are collapsed\n * This information is saved in session storage as an array (serializable)\n * but provides Set-like operations for fast lookups\n */\nexport function useCollapsedGroups(rundownId: string) {\n const [collapsedGroups, setCollapsedGroups] = useSessionStorage<EntryId[]>({\n key: `rundown.${rundownId}-editor-collapsed-groups`,\n defaultValue: [],\n });\n\n const collapsedGroupSet = useMemo(() => new Set(collapsedGroups), [collapsedGroups]);\n\n const getIsCollapsed = useCallback(\n (groupId: EntryId): boolean => {\n return collapsedGroupSet.has(groupId);\n },\n [collapsedGroupSet],\n );\n\n const collapseGroup = useCallback(\n (groupId: EntryId | null | undefined) => {\n if (!groupId) return;\n setCollapsedGroups((prev) => {\n if (prev.includes(groupId)) {\n return prev;\n }\n return [...prev, groupId];\n });\n },\n [setCollapsedGroups],\n );\n\n const expandGroup = useCallback(\n (groupId: EntryId | null | undefined) => {\n if (!groupId) return;\n setCollapsedGroups((prev) => prev.filter((id) => id !== groupId));\n },\n [setCollapsedGroups],\n );\n\n return { getIsCollapsed, collapseGroup, expandGroup };\n}\n","import { useCallback } from 'react';\nimport { EntryId, MaybeString } from 'ontime-types';\n\nimport { useCollapsedGroups } from './useCollapsedGroups';\nimport { useEventSelection } from './useEventSelection';\n\ntype SelectAndRevealOptions = {\n id: EntryId;\n index: number;\n parent?: MaybeString;\n};\n\nexport function useSelectAndRevealEntry(rundownId: string) {\n const { expandGroup } = useCollapsedGroups(rundownId);\n const selectEntry = useEventSelection((state) => state.setSelectedEvents);\n const scrollToEntry = useEventSelection((state) => state.scrollToEntry);\n\n return useCallback(\n ({ id, index, parent }: SelectAndRevealOptions) => {\n expandGroup(parent);\n selectEntry({ id, index, selectMode: 'click' });\n // Wait one frame so collapsed-group expansion is reflected in rendered/visible entries before scrolling.\n requestAnimationFrame(() => {\n scrollToEntry(id);\n });\n },\n [expandGroup, scrollToEntry, selectEntry],\n );\n}\n"],"names":["isValueOfEnum","enumObj","value","Object","values","includes","settingsKey","useAppSettingsNavigation","searchParams","setSearchParams","useSearchParams","selectedPanel","useMemo","get","isOpen","Boolean","panel","location","split","close","useCallback","delete","setLocation","panelId","set","layoutParam","EditorLayoutMode","CONTROL","PLANNING","TRACKING","getEditorLayout","useEditorLayout","layoutMode","setLayoutMode","mode","nextParams","URLSearchParams","replace","useCollapsedGroups","rundownId","collapsedGroups","setCollapsedGroups","useSessionStorage","key","defaultValue","collapsedGroupSet","Set","getIsCollapsed","groupId","has","collapseGroup","prev","expandGroup","filter","id","useSelectAndRevealEntry","selectEntry","useEventSelection","state","setSelectedEvents","scrollToEntry","index","parent","selectMode","requestAnimationFrame"],"mappings":"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"}
1
+ {"version":3,"file":"useSelectAndRevealEntry-DTg0hmxA.js","sources":["../../../../packages/utils/src/common/objectUtils.ts","../../src/features/app-settings/useAppSettingsNavigation.tsx","../../src/views/editor/useEditorLayout.ts","../../src/features/rundown/useCollapsedGroups.ts","../../src/features/rundown/useSelectAndRevealEntry.ts"],"sourcesContent":["/**\n * Extracts a value from a nested object using a dot-separated path\n */\nexport function getPropertyFromPath<T extends object>(path: string, obj: T): unknown | undefined {\n const keys = path.split('.');\n let result: any = obj;\n\n // iterate through variable parts, and look for the property in the given object\n for (const key of keys) {\n if (result && typeof result === 'object' && key in result) {\n result = result[key];\n } else {\n return undefined;\n }\n }\n\n return result;\n}\n\n/**\n * Whether an object is empty\n */\nexport function isObjectEmpty(obj: object): boolean {\n return Object.keys(obj).length === 0;\n}\n\n/**\n * Removes a copy of the object without the properties which have undefined values\n */\nexport function withoutUndefinedValues<T extends Record<string, unknown>>(\n obj: T,\n): { [K in keyof T]: Exclude<T[K], undefined> } {\n Object.keys(obj).forEach((key) => obj[key] === undefined && delete obj[key]);\n return obj as { [K in keyof T]: Exclude<T[K], undefined> };\n}\n\n/**\n * Checks whether a value is part of an enum\n */\nexport function isValueOfEnum<T extends object>(enumObj: T, value: unknown): value is T[keyof T] {\n return Object.values(enumObj).includes(value);\n}\n","import { useCallback, useMemo } from 'react';\nimport { useSearchParams } from 'react-router';\n\nimport { SettingsOptionId } from './useAppSettingsMenu';\n\nconst settingsKey = 'settings';\n\nexport default function useAppSettingsNavigation() {\n const [searchParams, setSearchParams] = useSearchParams();\n\n const selectedPanel = useMemo(\n () => (searchParams.get(settingsKey) as SettingsOptionId | null) ?? 'project',\n [searchParams],\n );\n const isOpen = useMemo(() => Boolean(searchParams.get(settingsKey)), [searchParams]);\n const [panel, location] = selectedPanel.split('__');\n\n const close = useCallback(() => {\n searchParams.delete(settingsKey);\n setSearchParams(searchParams);\n }, [searchParams, setSearchParams]);\n\n const setLocation = useCallback(\n (panelId: SettingsOptionId) => {\n searchParams.set(settingsKey, panelId);\n setSearchParams(searchParams);\n },\n [searchParams, setSearchParams],\n );\n\n return { isOpen, panel, location, setLocation, close };\n}\n","import { useSearchParams } from 'react-router';\nimport { isValueOfEnum } from 'ontime-utils';\n\nconst layoutParam = 'layout';\n\nexport enum EditorLayoutMode {\n CONTROL = 'control',\n PLANNING = 'planning',\n TRACKING = 'tracking',\n}\n\n/**\n * Resolves the current editor layout mode from a nullable string value\n */\nfunction getEditorLayout(value: string | null): EditorLayoutMode {\n if (isValueOfEnum(EditorLayoutMode, value)) {\n return value;\n }\n return EditorLayoutMode.CONTROL;\n}\n\nexport function useEditorLayout() {\n const [searchParams, setSearchParams] = useSearchParams();\n const layoutMode = getEditorLayout(searchParams.get(layoutParam));\n\n const setLayoutMode = (mode: EditorLayoutMode) => {\n const nextParams = new URLSearchParams(searchParams);\n nextParams.set(layoutParam, mode);\n setSearchParams(nextParams, { replace: true });\n };\n\n return { layoutMode, setLayoutMode };\n}\n","import { useCallback, useMemo } from 'react';\nimport { useSessionStorage } from '@mantine/hooks';\nimport { EntryId } from 'ontime-types';\n\n/**\n * Keeps track of which groups are collapsed\n * This information is saved in session storage as an array (serializable)\n * but provides Set-like operations for fast lookups\n */\nexport function useCollapsedGroups(rundownId: string) {\n const [collapsedGroups, setCollapsedGroups] = useSessionStorage<EntryId[]>({\n key: `rundown.${rundownId}-editor-collapsed-groups`,\n defaultValue: [],\n });\n\n const collapsedGroupSet = useMemo(() => new Set(collapsedGroups), [collapsedGroups]);\n\n const getIsCollapsed = useCallback(\n (groupId: EntryId): boolean => {\n return collapsedGroupSet.has(groupId);\n },\n [collapsedGroupSet],\n );\n\n const collapseGroup = useCallback(\n (groupId: EntryId | null | undefined) => {\n if (!groupId) return;\n setCollapsedGroups((prev) => {\n if (prev.includes(groupId)) {\n return prev;\n }\n return [...prev, groupId];\n });\n },\n [setCollapsedGroups],\n );\n\n const expandGroup = useCallback(\n (groupId: EntryId | null | undefined) => {\n if (!groupId) return;\n setCollapsedGroups((prev) => prev.filter((id) => id !== groupId));\n },\n [setCollapsedGroups],\n );\n\n return { getIsCollapsed, collapseGroup, expandGroup };\n}\n","import { useCallback } from 'react';\nimport { EntryId, MaybeString } from 'ontime-types';\n\nimport { useCollapsedGroups } from './useCollapsedGroups';\nimport { useEventSelection } from './useEventSelection';\n\ntype SelectAndRevealOptions = {\n id: EntryId;\n index: number;\n parent?: MaybeString;\n};\n\nexport function useSelectAndRevealEntry(rundownId: string) {\n const { expandGroup } = useCollapsedGroups(rundownId);\n const selectEntry = useEventSelection((state) => state.setSelectedEvents);\n const scrollToEntry = useEventSelection((state) => state.scrollToEntry);\n\n return useCallback(\n ({ id, index, parent }: SelectAndRevealOptions) => {\n expandGroup(parent);\n selectEntry({ id, index, selectMode: 'click' });\n // Wait one frame so collapsed-group expansion is reflected in rendered/visible entries before scrolling.\n requestAnimationFrame(() => {\n scrollToEntry(id);\n });\n },\n [expandGroup, scrollToEntry, selectEntry],\n );\n}\n"],"names":["isValueOfEnum","enumObj","value","Object","values","includes","settingsKey","useAppSettingsNavigation","searchParams","setSearchParams","useSearchParams","selectedPanel","useMemo","get","isOpen","Boolean","panel","location","split","close","useCallback","delete","setLocation","panelId","set","layoutParam","EditorLayoutMode","CONTROL","PLANNING","TRACKING","getEditorLayout","useEditorLayout","layoutMode","setLayoutMode","mode","nextParams","URLSearchParams","replace","useCollapsedGroups","rundownId","collapsedGroups","setCollapsedGroups","useSessionStorage","key","defaultValue","collapsedGroupSet","Set","getIsCollapsed","groupId","has","collapseGroup","prev","expandGroup","filter","id","useSelectAndRevealEntry","selectEntry","useEventSelection","state","setSelectedEvents","scrollToEntry","index","parent","selectMode","requestAnimationFrame"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{h as n}from"./vendor-CKDP5hij.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="8e267535-b138-4a2b-818e-3156a515341c",e._sentryDebugIdIdentifier="sentry-dbid-8e267535-b138-4a2b-818e-3156a515341c")}catch{}})();function i(e){n.useEffect(()=>{document.title=`ontime - ${e}`},[])}export{i as u};
2
- //# sourceMappingURL=useWindowTitle-bg-fLPOk.js.map
1
+ import{h as n}from"./vendor-BKUJ0_Du.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="8e267535-b138-4a2b-818e-3156a515341c",e._sentryDebugIdIdentifier="sentry-dbid-8e267535-b138-4a2b-818e-3156a515341c")}catch{}})();function i(e){n.useEffect(()=>{document.title=`ontime - ${e}`},[])}export{i as u};
2
+ //# sourceMappingURL=useWindowTitle-DM8dIp8L.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useWindowTitle-bg-fLPOk.js","sources":["../../src/common/hooks/useWindowTitle.ts"],"sourcesContent":["import { useEffect } from 'react';\n\n/**\n * Sets tab title\n * @param title\n */\nexport function useWindowTitle(title: string) {\n useEffect(() => {\n document.title = `ontime - ${title}`;\n }, []);\n}\n"],"names":["useWindowTitle","title","useEffect"],"mappings":"mYAMO,SAASA,EAAeC,EAAe,CAC5CC,EAAAA,UAAU,IAAM,CACLD,SAAAA,MAAQ,YAAYA,CAAK,EACpC,EAAG,EAAE,CACP"}
1
+ {"version":3,"file":"useWindowTitle-DM8dIp8L.js","sources":["../../src/common/hooks/useWindowTitle.ts"],"sourcesContent":["import { useEffect } from 'react';\n\n/**\n * Sets tab title\n * @param title\n */\nexport function useWindowTitle(title: string) {\n useEffect(() => {\n document.title = `ontime - ${title}`;\n }, []);\n}\n"],"names":["useWindowTitle","title","useEffect"],"mappings":"mYAMO,SAASA,EAAeC,EAAe,CAC5CC,EAAAA,UAAU,IAAM,CACLD,SAAAA,MAAQ,YAAYA,CAAK,EACpC,EAAG,EAAE,CACP"}
@@ -1,2 +1,2 @@
1
- import"./vendor-CKDP5hij.js";import{T as d}from"./index-2lQ-45a9.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="dc6ff0fd-796c-4fcc-8e6c-6f77ae2cc593",e._sentryDebugIdIdentifier="sentry-dbid-dc6ff0fd-796c-4fcc-8e6c-6f77ae2cc593")}catch{}})();var t=(e=>(e.LoadNext="load-next",e.None="none",e.PlayNext="play-next",e))(t||{}),o=(e=>(e.LockEnd="lock-end",e.LockDuration="lock-duration",e))(o||{});function u(e,n=o.LockDuration){return Object.values(o).includes(e)?e:n}function f(e,n=t.None){return Object.values(t).includes(e)?e:n}function s(e,n=d.CountDown){return Object.values(d).includes(e)?e:n}export{t as E,o as T,u as a,f as b,s as v};
2
- //# sourceMappingURL=validateEvent-BUgLWn7x.js.map
1
+ import"./vendor-BKUJ0_Du.js";import{T as d}from"./index-Dm-4OTmY.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="dc6ff0fd-796c-4fcc-8e6c-6f77ae2cc593",e._sentryDebugIdIdentifier="sentry-dbid-dc6ff0fd-796c-4fcc-8e6c-6f77ae2cc593")}catch{}})();var t=(e=>(e.LoadNext="load-next",e.None="none",e.PlayNext="play-next",e))(t||{}),o=(e=>(e.LockEnd="lock-end",e.LockDuration="lock-duration",e))(o||{});function u(e,n=o.LockDuration){return Object.values(o).includes(e)?e:n}function f(e,n=t.None){return Object.values(t).includes(e)?e:n}function s(e,n=d.CountDown){return Object.values(d).includes(e)?e:n}export{t as E,o as T,u as a,f as b,s as v};
2
+ //# sourceMappingURL=validateEvent-GnPt-e9-.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validateEvent-BUgLWn7x.js","sources":["../../../../packages/types/src/definitions/EndAction.type.ts","../../../../packages/types/src/definitions/TimeStrategy.type.ts","../../../../packages/utils/src/validate-events/validateEvent.ts"],"sourcesContent":["export enum EndAction {\n LoadNext = 'load-next',\n None = 'none',\n PlayNext = 'play-next',\n}\n","export enum TimeStrategy {\n LockEnd = 'lock-end',\n LockDuration = 'lock-duration',\n}\n","import { EndAction, TimerType, TimeStrategy } from 'ontime-types';\n\n/**\n * Check if a given value is a valid time strategy, returns the fallback otherwise\n * @param {TimeStrategy} maybeTimeStrategy\n * @returns {TimeStrategy}\n */\nexport function validateTimeStrategy(maybeTimeStrategy: unknown, fallback = TimeStrategy.LockDuration): TimeStrategy {\n return Object.values(TimeStrategy).includes(maybeTimeStrategy as TimeStrategy)\n ? (maybeTimeStrategy as TimeStrategy)\n : fallback;\n}\n\n/**\n * Checks if given value is a valid type of EndAction, returns the fallback otherwise\n * @param {EndAction} maybeAction\n * @param {EndAction} [fallback]\n */\nexport function validateEndAction(maybeAction: unknown, fallback = EndAction.None): EndAction {\n return Object.values(EndAction).includes(maybeAction as EndAction) ? (maybeAction as EndAction) : fallback;\n}\n\n/**\n * Checks if given value is a valid type of TimerType, returns the fallback otherwise\n * @param {TimerType} maybeTimerType\n * @param {TimerType} [fallback]\n */\nexport function validateTimerType(maybeTimerType: unknown, fallback = TimerType.CountDown): TimerType {\n return Object.values(TimerType).includes(maybeTimerType as TimerType) ? (maybeTimerType as TimerType) : fallback;\n}\n\nexport function isKnownTimerType(maybeTimerType: unknown) {\n return Object.values(TimerType).includes(maybeTimerType as TimerType);\n}\n"],"names":["EndAction","LoadNext","None","PlayNext","TimeStrategy","LockEnd","LockDuration","validateTimeStrategy","maybeTimeStrategy","fallback","Object","values","includes","validateEndAction","maybeAction","validateTimerType","maybeTimerType","TimerType","CountDown"],"mappings":"+ZAAYA,IAAAA,GAAAA,IACVC,EAAAA,SAAW,YACXC,EAAAA,KAAO,OACPC,EAAAA,SAAW,YAHDH,IAAAA,GAAAA,CAAAA,CAAAA,ECAAI,GAAAA,IACVC,EAAAA,QAAU,WACVC,EAAAA,aAAe,gBAFLF,IAAAA,GAAAA,CAAAA,CAAAA,ECOL,SAASG,EAAqBC,EAA4BC,EAAWL,EAAaE,aAA4B,CACnH,OAAOI,OAAOC,OAAOP,CAAY,EAAEQ,SAASJ,CAAiC,EACxEA,EACDC,CACN,CAOO,SAASI,EAAkBC,EAAsBL,EAAWT,EAAUE,KAAiB,CAC5F,OAAOQ,OAAOC,OAAOX,CAAS,EAAEY,SAASE,CAAwB,EAAKA,EAA4BL,CACpG,CAOO,SAASM,EAAkBC,EAAyBP,EAAWQ,EAAUC,UAAsB,CACpG,OAAOR,OAAOC,OAAOM,CAAS,EAAEL,SAASI,CAA2B,EAAKA,EAA+BP,CAC1G"}
1
+ {"version":3,"file":"validateEvent-GnPt-e9-.js","sources":["../../../../packages/types/src/definitions/EndAction.type.ts","../../../../packages/types/src/definitions/TimeStrategy.type.ts","../../../../packages/utils/src/validate-events/validateEvent.ts"],"sourcesContent":["export enum EndAction {\n LoadNext = 'load-next',\n None = 'none',\n PlayNext = 'play-next',\n}\n","export enum TimeStrategy {\n LockEnd = 'lock-end',\n LockDuration = 'lock-duration',\n}\n","import { EndAction, TimerType, TimeStrategy } from 'ontime-types';\n\n/**\n * Check if a given value is a valid time strategy, returns the fallback otherwise\n * @param {TimeStrategy} maybeTimeStrategy\n * @returns {TimeStrategy}\n */\nexport function validateTimeStrategy(maybeTimeStrategy: unknown, fallback = TimeStrategy.LockDuration): TimeStrategy {\n return Object.values(TimeStrategy).includes(maybeTimeStrategy as TimeStrategy)\n ? (maybeTimeStrategy as TimeStrategy)\n : fallback;\n}\n\n/**\n * Checks if given value is a valid type of EndAction, returns the fallback otherwise\n * @param {EndAction} maybeAction\n * @param {EndAction} [fallback]\n */\nexport function validateEndAction(maybeAction: unknown, fallback = EndAction.None): EndAction {\n return Object.values(EndAction).includes(maybeAction as EndAction) ? (maybeAction as EndAction) : fallback;\n}\n\n/**\n * Checks if given value is a valid type of TimerType, returns the fallback otherwise\n * @param {TimerType} maybeTimerType\n * @param {TimerType} [fallback]\n */\nexport function validateTimerType(maybeTimerType: unknown, fallback = TimerType.CountDown): TimerType {\n return Object.values(TimerType).includes(maybeTimerType as TimerType) ? (maybeTimerType as TimerType) : fallback;\n}\n\nexport function isKnownTimerType(maybeTimerType: unknown) {\n return Object.values(TimerType).includes(maybeTimerType as TimerType);\n}\n"],"names":["EndAction","LoadNext","None","PlayNext","TimeStrategy","LockEnd","LockDuration","validateTimeStrategy","maybeTimeStrategy","fallback","Object","values","includes","validateEndAction","maybeAction","validateTimerType","maybeTimerType","TimerType","CountDown"],"mappings":"+ZAAYA,IAAAA,GAAAA,IACVC,EAAAA,SAAW,YACXC,EAAAA,KAAO,OACPC,EAAAA,SAAW,YAHDH,IAAAA,GAAAA,CAAAA,CAAAA,ECAAI,GAAAA,IACVC,EAAAA,QAAU,WACVC,EAAAA,aAAe,gBAFLF,IAAAA,GAAAA,CAAAA,CAAAA,ECOL,SAASG,EAAqBC,EAA4BC,EAAWL,EAAaE,aAA4B,CACnH,OAAOI,OAAOC,OAAOP,CAAY,EAAEQ,SAASJ,CAAiC,EACxEA,EACDC,CACN,CAOO,SAASI,EAAkBC,EAAsBL,EAAWT,EAAUE,KAAiB,CAC5F,OAAOQ,OAAOC,OAAOX,CAAS,EAAEY,SAASE,CAAwB,EAAKA,EAA4BL,CACpG,CAOO,SAASM,EAAkBC,EAAyBP,EAAWQ,EAAUC,UAAsB,CACpG,OAAOR,OAAOC,OAAOM,CAAS,EAAEL,SAASI,CAA2B,EAAKA,EAA+BP,CAC1G"}
@@ -1,4 +1,4 @@
1
- var Dk=Object.defineProperty;var ZT=e=>{throw TypeError(e)};var Lk=(e,t,n)=>t in e?Dk(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var qt=(e,t,n)=>Lk(e,typeof t!="symbol"?t+"":t,n),Wy=(e,t,n)=>t.has(e)||ZT("Cannot "+n);var ee=(e,t,n)=>(Wy(e,t,"read from private field"),n?n.call(e):t.get(e)),it=(e,t,n)=>t.has(e)?ZT("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),Xe=(e,t,n,r)=>(Wy(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n),Ot=(e,t,n)=>(Wy(e,t,"access private method"),n);var kp=(e,t,n,r)=>({set _(i){Xe(e,t,i,n)},get _(){return ee(e,t,r)}});(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="d8a50f4d-0c17-48d6-88f1-b7c57d21430e",e._sentryDebugIdIdentifier="sentry-dbid-d8a50f4d-0c17-48d6-88f1-b7c57d21430e")}catch{}})();function LM(e,t){for(var n=0;n<t.length;n++){const r=t[n];if(typeof r!="string"&&!Array.isArray(r)){for(const i in r)if(i!=="default"&&!(i in e)){const s=Object.getOwnPropertyDescriptor(r,i);s&&Object.defineProperty(e,i,s.get?s:{enumerable:!0,get:()=>r[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var Pk=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};Pk.SENTRY_RELEASE={id:"aec6673b07b7d0573d894cf248f1bbfd65a7084b"};var e_=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ts(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Ky={exports:{}},qf={};var t_;function kk(){if(t_)return qf;t_=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function n(r,i,s){var l=null;if(s!==void 0&&(l=""+s),i.key!==void 0&&(l=""+i.key),"key"in i){s={};for(var u in i)u!=="key"&&(s[u]=i[u])}else s=i;return i=s.ref,{$$typeof:e,type:r,key:l,ref:i!==void 0?i:null,props:s}}return qf.Fragment=t,qf.jsx=n,qf.jsxs=n,qf}var n_;function Nk(){return n_||(n_=1,Ky.exports=kk()),Ky.exports}var be=Nk(),Qy={exports:{}},yt={};var r_;function Fk(){if(r_)return yt;r_=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),l=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),f=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),g=Symbol.for("react.activity"),m=Symbol.iterator;function v(k){return k===null||typeof k!="object"?null:(k=m&&k[m]||k["@@iterator"],typeof k=="function"?k:null)}var E={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},b=Object.assign,x={};function C(k,$,W){this.props=k,this.context=$,this.refs=x,this.updater=W||E}C.prototype.isReactComponent={},C.prototype.setState=function(k,$){if(typeof k!="object"&&typeof k!="function"&&k!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,k,$,"setState")},C.prototype.forceUpdate=function(k){this.updater.enqueueForceUpdate(this,k,"forceUpdate")};function R(){}R.prototype=C.prototype;function T(k,$,W){this.props=k,this.context=$,this.refs=x,this.updater=W||E}var O=T.prototype=new R;O.constructor=T,b(O,C.prototype),O.isPureReactComponent=!0;var _=Array.isArray;function M(){}var A={H:null,A:null,T:null,S:null},D=Object.prototype.hasOwnProperty;function L(k,$,W){var te=W.ref;return{$$typeof:e,type:k,key:$,ref:te!==void 0?te:null,props:W}}function N(k,$){return L(k.type,$,k.props)}function H(k){return typeof k=="object"&&k!==null&&k.$$typeof===e}function j(k){var $={"=":"=0",":":"=2"};return"$"+k.replace(/[=:]/g,function(W){return $[W]})}var F=/\/+/g;function q(k,$){return typeof k=="object"&&k!==null&&k.key!=null?j(""+k.key):$.toString(36)}function U(k){switch(k.status){case"fulfilled":return k.value;case"rejected":throw k.reason;default:switch(typeof k.status=="string"?k.then(M,M):(k.status="pending",k.then(function($){k.status==="pending"&&(k.status="fulfilled",k.value=$)},function($){k.status==="pending"&&(k.status="rejected",k.reason=$)})),k.status){case"fulfilled":return k.value;case"rejected":throw k.reason}}throw k}function P(k,$,W,te,ae){var ne=typeof k;(ne==="undefined"||ne==="boolean")&&(k=null);var ce=!1;if(k===null)ce=!0;else switch(ne){case"bigint":case"string":case"number":ce=!0;break;case"object":switch(k.$$typeof){case e:case t:ce=!0;break;case p:return ce=k._init,P(ce(k._payload),$,W,te,ae)}}if(ce)return ae=ae(k),ce=te===""?"."+q(k,0):te,_(ae)?(W="",ce!=null&&(W=ce.replace(F,"$&/")+"/"),P(ae,$,W,"",function(ve){return ve})):ae!=null&&(H(ae)&&(ae=N(ae,W+(ae.key==null||k&&k.key===ae.key?"":(""+ae.key).replace(F,"$&/")+"/")+ce)),$.push(ae)),1;ce=0;var Q=te===""?".":te+":";if(_(k))for(var de=0;de<k.length;de++)te=k[de],ne=Q+q(te,de),ce+=P(te,$,W,ne,ae);else if(de=v(k),typeof de=="function")for(k=de.call(k),de=0;!(te=k.next()).done;)te=te.value,ne=Q+q(te,de++),ce+=P(te,$,W,ne,ae);else if(ne==="object"){if(typeof k.then=="function")return P(U(k),$,W,te,ae);throw $=String(k),Error("Objects are not valid as a React child (found: "+($==="[object Object]"?"object with keys {"+Object.keys(k).join(", ")+"}":$)+"). If you meant to render a collection of children, use an array instead.")}return ce}function G(k,$,W){if(k==null)return k;var te=[],ae=0;return P(k,te,"","",function(ne){return $.call(W,ne,ae++)}),te}function B(k){if(k._status===-1){var $=k._result;$=$(),$.then(function(W){(k._status===0||k._status===-1)&&(k._status=1,k._result=W)},function(W){(k._status===0||k._status===-1)&&(k._status=2,k._result=W)}),k._status===-1&&(k._status=0,k._result=$)}if(k._status===1)return k._result.default;throw k._result}var Y=typeof reportError=="function"?reportError:function(k){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var $=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof k=="object"&&k!==null&&typeof k.message=="string"?String(k.message):String(k),error:k});if(!window.dispatchEvent($))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",k);return}console.error(k)},J={map:G,forEach:function(k,$,W){G(k,function(){$.apply(this,arguments)},W)},count:function(k){var $=0;return G(k,function(){$++}),$},toArray:function(k){return G(k,function($){return $})||[]},only:function(k){if(!H(k))throw Error("React.Children.only expected to receive a single React element child.");return k}};return yt.Activity=g,yt.Children=J,yt.Component=C,yt.Fragment=n,yt.Profiler=i,yt.PureComponent=T,yt.StrictMode=r,yt.Suspense=f,yt.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=A,yt.__COMPILER_RUNTIME={__proto__:null,c:function(k){return A.H.useMemoCache(k)}},yt.cache=function(k){return function(){return k.apply(null,arguments)}},yt.cacheSignal=function(){return null},yt.cloneElement=function(k,$,W){if(k==null)throw Error("The argument must be a React element, but you passed "+k+".");var te=b({},k.props),ae=k.key;if($!=null)for(ne in $.key!==void 0&&(ae=""+$.key),$)!D.call($,ne)||ne==="key"||ne==="__self"||ne==="__source"||ne==="ref"&&$.ref===void 0||(te[ne]=$[ne]);var ne=arguments.length-2;if(ne===1)te.children=W;else if(1<ne){for(var ce=Array(ne),Q=0;Q<ne;Q++)ce[Q]=arguments[Q+2];te.children=ce}return L(k.type,ae,te)},yt.createContext=function(k){return k={$$typeof:l,_currentValue:k,_currentValue2:k,_threadCount:0,Provider:null,Consumer:null},k.Provider=k,k.Consumer={$$typeof:s,_context:k},k},yt.createElement=function(k,$,W){var te,ae={},ne=null;if($!=null)for(te in $.key!==void 0&&(ne=""+$.key),$)D.call($,te)&&te!=="key"&&te!=="__self"&&te!=="__source"&&(ae[te]=$[te]);var ce=arguments.length-2;if(ce===1)ae.children=W;else if(1<ce){for(var Q=Array(ce),de=0;de<ce;de++)Q[de]=arguments[de+2];ae.children=Q}if(k&&k.defaultProps)for(te in ce=k.defaultProps,ce)ae[te]===void 0&&(ae[te]=ce[te]);return L(k,ne,ae)},yt.createRef=function(){return{current:null}},yt.forwardRef=function(k){return{$$typeof:u,render:k}},yt.isValidElement=H,yt.lazy=function(k){return{$$typeof:p,_payload:{_status:-1,_result:k},_init:B}},yt.memo=function(k,$){return{$$typeof:d,type:k,compare:$===void 0?null:$}},yt.startTransition=function(k){var $=A.T,W={};A.T=W;try{var te=k(),ae=A.S;ae!==null&&ae(W,te),typeof te=="object"&&te!==null&&typeof te.then=="function"&&te.then(M,Y)}catch(ne){Y(ne)}finally{$!==null&&W.types!==null&&($.types=W.types),A.T=$}},yt.unstable_useCacheRefresh=function(){return A.H.useCacheRefresh()},yt.use=function(k){return A.H.use(k)},yt.useActionState=function(k,$,W){return A.H.useActionState(k,$,W)},yt.useCallback=function(k,$){return A.H.useCallback(k,$)},yt.useContext=function(k){return A.H.useContext(k)},yt.useDebugValue=function(){},yt.useDeferredValue=function(k,$){return A.H.useDeferredValue(k,$)},yt.useEffect=function(k,$){return A.H.useEffect(k,$)},yt.useEffectEvent=function(k){return A.H.useEffectEvent(k)},yt.useId=function(){return A.H.useId()},yt.useImperativeHandle=function(k,$,W){return A.H.useImperativeHandle(k,$,W)},yt.useInsertionEffect=function(k,$){return A.H.useInsertionEffect(k,$)},yt.useLayoutEffect=function(k,$){return A.H.useLayoutEffect(k,$)},yt.useMemo=function(k,$){return A.H.useMemo(k,$)},yt.useOptimistic=function(k,$){return A.H.useOptimistic(k,$)},yt.useReducer=function(k,$,W){return A.H.useReducer(k,$,W)},yt.useRef=function(k){return A.H.useRef(k)},yt.useState=function(k){return A.H.useState(k)},yt.useSyncExternalStore=function(k,$,W){return A.H.useSyncExternalStore(k,$,W)},yt.useTransition=function(){return A.H.useTransition()},yt.version="19.2.3",yt}var o_;function _s(){return o_||(o_=1,Qy.exports=Fk()),Qy.exports}var S=_s();const fe=Ts(S),PM=LM({__proto__:null,default:fe},[S]);var Jy={exports:{}},Gf={},Zy={exports:{}},e1={};var i_;function zk(){return i_||(i_=1,function(e){function t(P,G){var B=P.length;P.push(G);e:for(;0<B;){var Y=B-1>>>1,J=P[Y];if(0<i(J,G))P[Y]=G,P[B]=J,B=Y;else break e}}function n(P){return P.length===0?null:P[0]}function r(P){if(P.length===0)return null;var G=P[0],B=P.pop();if(B!==G){P[0]=B;e:for(var Y=0,J=P.length,k=J>>>1;Y<k;){var $=2*(Y+1)-1,W=P[$],te=$+1,ae=P[te];if(0>i(W,B))te<J&&0>i(ae,W)?(P[Y]=ae,P[te]=B,Y=te):(P[Y]=W,P[$]=B,Y=$);else if(te<J&&0>i(ae,B))P[Y]=ae,P[te]=B,Y=te;else break e}}return G}function i(P,G){var B=P.sortIndex-G.sortIndex;return B!==0?B:P.id-G.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var s=performance;e.unstable_now=function(){return s.now()}}else{var l=Date,u=l.now();e.unstable_now=function(){return l.now()-u}}var f=[],d=[],p=1,g=null,m=3,v=!1,E=!1,b=!1,x=!1,C=typeof setTimeout=="function"?setTimeout:null,R=typeof clearTimeout=="function"?clearTimeout:null,T=typeof setImmediate<"u"?setImmediate:null;function O(P){for(var G=n(d);G!==null;){if(G.callback===null)r(d);else if(G.startTime<=P)r(d),G.sortIndex=G.expirationTime,t(f,G);else break;G=n(d)}}function _(P){if(b=!1,O(P),!E)if(n(f)!==null)E=!0,M||(M=!0,j());else{var G=n(d);G!==null&&U(_,G.startTime-P)}}var M=!1,A=-1,D=5,L=-1;function N(){return x?!0:!(e.unstable_now()-L<D)}function H(){if(x=!1,M){var P=e.unstable_now();L=P;var G=!0;try{e:{E=!1,b&&(b=!1,R(A),A=-1),v=!0;var B=m;try{t:{for(O(P),g=n(f);g!==null&&!(g.expirationTime>P&&N());){var Y=g.callback;if(typeof Y=="function"){g.callback=null,m=g.priorityLevel;var J=Y(g.expirationTime<=P);if(P=e.unstable_now(),typeof J=="function"){g.callback=J,O(P),G=!0;break t}g===n(f)&&r(f),O(P)}else r(f);g=n(f)}if(g!==null)G=!0;else{var k=n(d);k!==null&&U(_,k.startTime-P),G=!1}}break e}finally{g=null,m=B,v=!1}G=void 0}}finally{G?j():M=!1}}}var j;if(typeof T=="function")j=function(){T(H)};else if(typeof MessageChannel<"u"){var F=new MessageChannel,q=F.port2;F.port1.onmessage=H,j=function(){q.postMessage(null)}}else j=function(){C(H,0)};function U(P,G){A=C(function(){P(e.unstable_now())},G)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(P){P.callback=null},e.unstable_forceFrameRate=function(P){0>P||125<P?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):D=0<P?Math.floor(1e3/P):5},e.unstable_getCurrentPriorityLevel=function(){return m},e.unstable_next=function(P){switch(m){case 1:case 2:case 3:var G=3;break;default:G=m}var B=m;m=G;try{return P()}finally{m=B}},e.unstable_requestPaint=function(){x=!0},e.unstable_runWithPriority=function(P,G){switch(P){case 1:case 2:case 3:case 4:case 5:break;default:P=3}var B=m;m=P;try{return G()}finally{m=B}},e.unstable_scheduleCallback=function(P,G,B){var Y=e.unstable_now();switch(typeof B=="object"&&B!==null?(B=B.delay,B=typeof B=="number"&&0<B?Y+B:Y):B=Y,P){case 1:var J=-1;break;case 2:J=250;break;case 5:J=1073741823;break;case 4:J=1e4;break;default:J=5e3}return J=B+J,P={id:p++,callback:G,priorityLevel:P,startTime:B,expirationTime:J,sortIndex:-1},B>Y?(P.sortIndex=B,t(d,P),n(f)===null&&P===n(d)&&(b?(R(A),A=-1):b=!0,U(_,B-Y))):(P.sortIndex=J,t(f,P),E||v||(E=!0,M||(M=!0,j()))),P},e.unstable_shouldYield=N,e.unstable_wrapCallback=function(P){var G=m;return function(){var B=m;m=G;try{return P.apply(this,arguments)}finally{m=B}}}}(e1)),e1}var s_;function Hk(){return s_||(s_=1,Zy.exports=zk()),Zy.exports}var t1={exports:{}},Sr={};var a_;function Bk(){if(a_)return Sr;a_=1;var e=_s();function t(f){var d="https://react.dev/errors/"+f;if(1<arguments.length){d+="?args[]="+encodeURIComponent(arguments[1]);for(var p=2;p<arguments.length;p++)d+="&args[]="+encodeURIComponent(arguments[p])}return"Minified React error #"+f+"; visit "+d+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function n(){}var r={d:{f:n,r:function(){throw Error(t(522))},D:n,C:n,L:n,m:n,X:n,S:n,M:n},p:0,findDOMNode:null},i=Symbol.for("react.portal");function s(f,d,p){var g=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:i,key:g==null?null:""+g,children:f,containerInfo:d,implementation:p}}var l=e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function u(f,d){if(f==="font")return"";if(typeof d=="string")return d==="use-credentials"?d:""}return Sr.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=r,Sr.createPortal=function(f,d){var p=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!d||d.nodeType!==1&&d.nodeType!==9&&d.nodeType!==11)throw Error(t(299));return s(f,d,null,p)},Sr.flushSync=function(f){var d=l.T,p=r.p;try{if(l.T=null,r.p=2,f)return f()}finally{l.T=d,r.p=p,r.d.f()}},Sr.preconnect=function(f,d){typeof f=="string"&&(d?(d=d.crossOrigin,d=typeof d=="string"?d==="use-credentials"?d:"":void 0):d=null,r.d.C(f,d))},Sr.prefetchDNS=function(f){typeof f=="string"&&r.d.D(f)},Sr.preinit=function(f,d){if(typeof f=="string"&&d&&typeof d.as=="string"){var p=d.as,g=u(p,d.crossOrigin),m=typeof d.integrity=="string"?d.integrity:void 0,v=typeof d.fetchPriority=="string"?d.fetchPriority:void 0;p==="style"?r.d.S(f,typeof d.precedence=="string"?d.precedence:void 0,{crossOrigin:g,integrity:m,fetchPriority:v}):p==="script"&&r.d.X(f,{crossOrigin:g,integrity:m,fetchPriority:v,nonce:typeof d.nonce=="string"?d.nonce:void 0})}},Sr.preinitModule=function(f,d){if(typeof f=="string")if(typeof d=="object"&&d!==null){if(d.as==null||d.as==="script"){var p=u(d.as,d.crossOrigin);r.d.M(f,{crossOrigin:p,integrity:typeof d.integrity=="string"?d.integrity:void 0,nonce:typeof d.nonce=="string"?d.nonce:void 0})}}else d==null&&r.d.M(f)},Sr.preload=function(f,d){if(typeof f=="string"&&typeof d=="object"&&d!==null&&typeof d.as=="string"){var p=d.as,g=u(p,d.crossOrigin);r.d.L(f,p,{crossOrigin:g,integrity:typeof d.integrity=="string"?d.integrity:void 0,nonce:typeof d.nonce=="string"?d.nonce:void 0,type:typeof d.type=="string"?d.type:void 0,fetchPriority:typeof d.fetchPriority=="string"?d.fetchPriority:void 0,referrerPolicy:typeof d.referrerPolicy=="string"?d.referrerPolicy:void 0,imageSrcSet:typeof d.imageSrcSet=="string"?d.imageSrcSet:void 0,imageSizes:typeof d.imageSizes=="string"?d.imageSizes:void 0,media:typeof d.media=="string"?d.media:void 0})}},Sr.preloadModule=function(f,d){if(typeof f=="string")if(d){var p=u(d.as,d.crossOrigin);r.d.m(f,{as:typeof d.as=="string"&&d.as!=="script"?d.as:void 0,crossOrigin:p,integrity:typeof d.integrity=="string"?d.integrity:void 0})}else r.d.m(f)},Sr.requestFormReset=function(f){r.d.r(f)},Sr.unstable_batchedUpdates=function(f,d){return f(d)},Sr.useFormState=function(f,d,p){return l.H.useFormState(f,d,p)},Sr.useFormStatus=function(){return l.H.useHostTransitionStatus()},Sr.version="19.2.3",Sr}var l_;function kM(){if(l_)return t1.exports;l_=1;function e(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),t1.exports=Bk(),t1.exports}var u_;function Uk(){if(u_)return Gf;u_=1;var e=Hk(),t=_s(),n=kM();function r(o){var a="https://react.dev/errors/"+o;if(1<arguments.length){a+="?args[]="+encodeURIComponent(arguments[1]);for(var c=2;c<arguments.length;c++)a+="&args[]="+encodeURIComponent(arguments[c])}return"Minified React error #"+o+"; visit "+a+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function i(o){return!(!o||o.nodeType!==1&&o.nodeType!==9&&o.nodeType!==11)}function s(o){var a=o,c=o;if(o.alternate)for(;a.return;)a=a.return;else{o=a;do a=o,(a.flags&4098)!==0&&(c=a.return),o=a.return;while(o)}return a.tag===3?c:null}function l(o){if(o.tag===13){var a=o.memoizedState;if(a===null&&(o=o.alternate,o!==null&&(a=o.memoizedState)),a!==null)return a.dehydrated}return null}function u(o){if(o.tag===31){var a=o.memoizedState;if(a===null&&(o=o.alternate,o!==null&&(a=o.memoizedState)),a!==null)return a.dehydrated}return null}function f(o){if(s(o)!==o)throw Error(r(188))}function d(o){var a=o.alternate;if(!a){if(a=s(o),a===null)throw Error(r(188));return a!==o?null:o}for(var c=o,h=a;;){var y=c.return;if(y===null)break;var w=y.alternate;if(w===null){if(h=y.return,h!==null){c=h;continue}break}if(y.child===w.child){for(w=y.child;w;){if(w===c)return f(y),o;if(w===h)return f(y),a;w=w.sibling}throw Error(r(188))}if(c.return!==h.return)c=y,h=w;else{for(var I=!1,z=y.child;z;){if(z===c){I=!0,c=y,h=w;break}if(z===h){I=!0,h=y,c=w;break}z=z.sibling}if(!I){for(z=w.child;z;){if(z===c){I=!0,c=w,h=y;break}if(z===h){I=!0,h=w,c=y;break}z=z.sibling}if(!I)throw Error(r(189))}}if(c.alternate!==h)throw Error(r(190))}if(c.tag!==3)throw Error(r(188));return c.stateNode.current===c?o:a}function p(o){var a=o.tag;if(a===5||a===26||a===27||a===6)return o;for(o=o.child;o!==null;){if(a=p(o),a!==null)return a;o=o.sibling}return null}var g=Object.assign,m=Symbol.for("react.element"),v=Symbol.for("react.transitional.element"),E=Symbol.for("react.portal"),b=Symbol.for("react.fragment"),x=Symbol.for("react.strict_mode"),C=Symbol.for("react.profiler"),R=Symbol.for("react.consumer"),T=Symbol.for("react.context"),O=Symbol.for("react.forward_ref"),_=Symbol.for("react.suspense"),M=Symbol.for("react.suspense_list"),A=Symbol.for("react.memo"),D=Symbol.for("react.lazy"),L=Symbol.for("react.activity"),N=Symbol.for("react.memo_cache_sentinel"),H=Symbol.iterator;function j(o){return o===null||typeof o!="object"?null:(o=H&&o[H]||o["@@iterator"],typeof o=="function"?o:null)}var F=Symbol.for("react.client.reference");function q(o){if(o==null)return null;if(typeof o=="function")return o.$$typeof===F?null:o.displayName||o.name||null;if(typeof o=="string")return o;switch(o){case b:return"Fragment";case C:return"Profiler";case x:return"StrictMode";case _:return"Suspense";case M:return"SuspenseList";case L:return"Activity"}if(typeof o=="object")switch(o.$$typeof){case E:return"Portal";case T:return o.displayName||"Context";case R:return(o._context.displayName||"Context")+".Consumer";case O:var a=o.render;return o=o.displayName,o||(o=a.displayName||a.name||"",o=o!==""?"ForwardRef("+o+")":"ForwardRef"),o;case A:return a=o.displayName||null,a!==null?a:q(o.type)||"Memo";case D:a=o._payload,o=o._init;try{return q(o(a))}catch{}}return null}var U=Array.isArray,P=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,G=n.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,B={pending:!1,data:null,method:null,action:null},Y=[],J=-1;function k(o){return{current:o}}function $(o){0>J||(o.current=Y[J],Y[J]=null,J--)}function W(o,a){J++,Y[J]=o.current,o.current=a}var te=k(null),ae=k(null),ne=k(null),ce=k(null);function Q(o,a){switch(W(ne,a),W(ae,o),W(te,null),a.nodeType){case 9:case 11:o=(o=a.documentElement)&&(o=o.namespaceURI)?wT(o):0;break;default:if(o=a.tagName,a=a.namespaceURI)a=wT(a),o=RT(a,o);else switch(o){case"svg":o=1;break;case"math":o=2;break;default:o=0}}$(te),W(te,o)}function de(){$(te),$(ae),$(ne)}function ve(o){o.memoizedState!==null&&W(ce,o);var a=te.current,c=RT(a,o.type);a!==c&&(W(ae,o),W(te,c))}function ue(o){ae.current===o&&($(te),$(ae)),ce.current===o&&($(ce),Uf._currentValue=B)}var me,xe;function Ce(o){if(me===void 0)try{throw Error()}catch(c){var a=c.stack.trim().match(/\n( *(at )?)/);me=a&&a[1]||"",xe=-1<c.stack.indexOf(`
1
+ var Dk=Object.defineProperty;var ZT=e=>{throw TypeError(e)};var Lk=(e,t,n)=>t in e?Dk(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var qt=(e,t,n)=>Lk(e,typeof t!="symbol"?t+"":t,n),Wy=(e,t,n)=>t.has(e)||ZT("Cannot "+n);var ee=(e,t,n)=>(Wy(e,t,"read from private field"),n?n.call(e):t.get(e)),it=(e,t,n)=>t.has(e)?ZT("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),Xe=(e,t,n,r)=>(Wy(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n),Ot=(e,t,n)=>(Wy(e,t,"access private method"),n);var kp=(e,t,n,r)=>({set _(i){Xe(e,t,i,n)},get _(){return ee(e,t,r)}});(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="b66d91e8-596c-4b8d-ace6-f6e4d640e0fa",e._sentryDebugIdIdentifier="sentry-dbid-b66d91e8-596c-4b8d-ace6-f6e4d640e0fa")}catch{}})();function LM(e,t){for(var n=0;n<t.length;n++){const r=t[n];if(typeof r!="string"&&!Array.isArray(r)){for(const i in r)if(i!=="default"&&!(i in e)){const s=Object.getOwnPropertyDescriptor(r,i);s&&Object.defineProperty(e,i,s.get?s:{enumerable:!0,get:()=>r[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var Pk=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};Pk.SENTRY_RELEASE={id:"c3a7cd6a399cad5b2d4bf0197e7491fa6c35ecd4"};var e_=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ts(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Ky={exports:{}},qf={};var t_;function kk(){if(t_)return qf;t_=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function n(r,i,s){var l=null;if(s!==void 0&&(l=""+s),i.key!==void 0&&(l=""+i.key),"key"in i){s={};for(var u in i)u!=="key"&&(s[u]=i[u])}else s=i;return i=s.ref,{$$typeof:e,type:r,key:l,ref:i!==void 0?i:null,props:s}}return qf.Fragment=t,qf.jsx=n,qf.jsxs=n,qf}var n_;function Nk(){return n_||(n_=1,Ky.exports=kk()),Ky.exports}var be=Nk(),Qy={exports:{}},yt={};var r_;function Fk(){if(r_)return yt;r_=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),l=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),f=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),g=Symbol.for("react.activity"),m=Symbol.iterator;function v(k){return k===null||typeof k!="object"?null:(k=m&&k[m]||k["@@iterator"],typeof k=="function"?k:null)}var E={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},b=Object.assign,x={};function C(k,$,W){this.props=k,this.context=$,this.refs=x,this.updater=W||E}C.prototype.isReactComponent={},C.prototype.setState=function(k,$){if(typeof k!="object"&&typeof k!="function"&&k!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,k,$,"setState")},C.prototype.forceUpdate=function(k){this.updater.enqueueForceUpdate(this,k,"forceUpdate")};function R(){}R.prototype=C.prototype;function T(k,$,W){this.props=k,this.context=$,this.refs=x,this.updater=W||E}var O=T.prototype=new R;O.constructor=T,b(O,C.prototype),O.isPureReactComponent=!0;var _=Array.isArray;function M(){}var A={H:null,A:null,T:null,S:null},D=Object.prototype.hasOwnProperty;function L(k,$,W){var te=W.ref;return{$$typeof:e,type:k,key:$,ref:te!==void 0?te:null,props:W}}function N(k,$){return L(k.type,$,k.props)}function H(k){return typeof k=="object"&&k!==null&&k.$$typeof===e}function j(k){var $={"=":"=0",":":"=2"};return"$"+k.replace(/[=:]/g,function(W){return $[W]})}var F=/\/+/g;function q(k,$){return typeof k=="object"&&k!==null&&k.key!=null?j(""+k.key):$.toString(36)}function U(k){switch(k.status){case"fulfilled":return k.value;case"rejected":throw k.reason;default:switch(typeof k.status=="string"?k.then(M,M):(k.status="pending",k.then(function($){k.status==="pending"&&(k.status="fulfilled",k.value=$)},function($){k.status==="pending"&&(k.status="rejected",k.reason=$)})),k.status){case"fulfilled":return k.value;case"rejected":throw k.reason}}throw k}function P(k,$,W,te,ae){var ne=typeof k;(ne==="undefined"||ne==="boolean")&&(k=null);var ce=!1;if(k===null)ce=!0;else switch(ne){case"bigint":case"string":case"number":ce=!0;break;case"object":switch(k.$$typeof){case e:case t:ce=!0;break;case p:return ce=k._init,P(ce(k._payload),$,W,te,ae)}}if(ce)return ae=ae(k),ce=te===""?"."+q(k,0):te,_(ae)?(W="",ce!=null&&(W=ce.replace(F,"$&/")+"/"),P(ae,$,W,"",function(ve){return ve})):ae!=null&&(H(ae)&&(ae=N(ae,W+(ae.key==null||k&&k.key===ae.key?"":(""+ae.key).replace(F,"$&/")+"/")+ce)),$.push(ae)),1;ce=0;var Q=te===""?".":te+":";if(_(k))for(var de=0;de<k.length;de++)te=k[de],ne=Q+q(te,de),ce+=P(te,$,W,ne,ae);else if(de=v(k),typeof de=="function")for(k=de.call(k),de=0;!(te=k.next()).done;)te=te.value,ne=Q+q(te,de++),ce+=P(te,$,W,ne,ae);else if(ne==="object"){if(typeof k.then=="function")return P(U(k),$,W,te,ae);throw $=String(k),Error("Objects are not valid as a React child (found: "+($==="[object Object]"?"object with keys {"+Object.keys(k).join(", ")+"}":$)+"). If you meant to render a collection of children, use an array instead.")}return ce}function G(k,$,W){if(k==null)return k;var te=[],ae=0;return P(k,te,"","",function(ne){return $.call(W,ne,ae++)}),te}function B(k){if(k._status===-1){var $=k._result;$=$(),$.then(function(W){(k._status===0||k._status===-1)&&(k._status=1,k._result=W)},function(W){(k._status===0||k._status===-1)&&(k._status=2,k._result=W)}),k._status===-1&&(k._status=0,k._result=$)}if(k._status===1)return k._result.default;throw k._result}var Y=typeof reportError=="function"?reportError:function(k){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var $=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof k=="object"&&k!==null&&typeof k.message=="string"?String(k.message):String(k),error:k});if(!window.dispatchEvent($))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",k);return}console.error(k)},J={map:G,forEach:function(k,$,W){G(k,function(){$.apply(this,arguments)},W)},count:function(k){var $=0;return G(k,function(){$++}),$},toArray:function(k){return G(k,function($){return $})||[]},only:function(k){if(!H(k))throw Error("React.Children.only expected to receive a single React element child.");return k}};return yt.Activity=g,yt.Children=J,yt.Component=C,yt.Fragment=n,yt.Profiler=i,yt.PureComponent=T,yt.StrictMode=r,yt.Suspense=f,yt.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=A,yt.__COMPILER_RUNTIME={__proto__:null,c:function(k){return A.H.useMemoCache(k)}},yt.cache=function(k){return function(){return k.apply(null,arguments)}},yt.cacheSignal=function(){return null},yt.cloneElement=function(k,$,W){if(k==null)throw Error("The argument must be a React element, but you passed "+k+".");var te=b({},k.props),ae=k.key;if($!=null)for(ne in $.key!==void 0&&(ae=""+$.key),$)!D.call($,ne)||ne==="key"||ne==="__self"||ne==="__source"||ne==="ref"&&$.ref===void 0||(te[ne]=$[ne]);var ne=arguments.length-2;if(ne===1)te.children=W;else if(1<ne){for(var ce=Array(ne),Q=0;Q<ne;Q++)ce[Q]=arguments[Q+2];te.children=ce}return L(k.type,ae,te)},yt.createContext=function(k){return k={$$typeof:l,_currentValue:k,_currentValue2:k,_threadCount:0,Provider:null,Consumer:null},k.Provider=k,k.Consumer={$$typeof:s,_context:k},k},yt.createElement=function(k,$,W){var te,ae={},ne=null;if($!=null)for(te in $.key!==void 0&&(ne=""+$.key),$)D.call($,te)&&te!=="key"&&te!=="__self"&&te!=="__source"&&(ae[te]=$[te]);var ce=arguments.length-2;if(ce===1)ae.children=W;else if(1<ce){for(var Q=Array(ce),de=0;de<ce;de++)Q[de]=arguments[de+2];ae.children=Q}if(k&&k.defaultProps)for(te in ce=k.defaultProps,ce)ae[te]===void 0&&(ae[te]=ce[te]);return L(k,ne,ae)},yt.createRef=function(){return{current:null}},yt.forwardRef=function(k){return{$$typeof:u,render:k}},yt.isValidElement=H,yt.lazy=function(k){return{$$typeof:p,_payload:{_status:-1,_result:k},_init:B}},yt.memo=function(k,$){return{$$typeof:d,type:k,compare:$===void 0?null:$}},yt.startTransition=function(k){var $=A.T,W={};A.T=W;try{var te=k(),ae=A.S;ae!==null&&ae(W,te),typeof te=="object"&&te!==null&&typeof te.then=="function"&&te.then(M,Y)}catch(ne){Y(ne)}finally{$!==null&&W.types!==null&&($.types=W.types),A.T=$}},yt.unstable_useCacheRefresh=function(){return A.H.useCacheRefresh()},yt.use=function(k){return A.H.use(k)},yt.useActionState=function(k,$,W){return A.H.useActionState(k,$,W)},yt.useCallback=function(k,$){return A.H.useCallback(k,$)},yt.useContext=function(k){return A.H.useContext(k)},yt.useDebugValue=function(){},yt.useDeferredValue=function(k,$){return A.H.useDeferredValue(k,$)},yt.useEffect=function(k,$){return A.H.useEffect(k,$)},yt.useEffectEvent=function(k){return A.H.useEffectEvent(k)},yt.useId=function(){return A.H.useId()},yt.useImperativeHandle=function(k,$,W){return A.H.useImperativeHandle(k,$,W)},yt.useInsertionEffect=function(k,$){return A.H.useInsertionEffect(k,$)},yt.useLayoutEffect=function(k,$){return A.H.useLayoutEffect(k,$)},yt.useMemo=function(k,$){return A.H.useMemo(k,$)},yt.useOptimistic=function(k,$){return A.H.useOptimistic(k,$)},yt.useReducer=function(k,$,W){return A.H.useReducer(k,$,W)},yt.useRef=function(k){return A.H.useRef(k)},yt.useState=function(k){return A.H.useState(k)},yt.useSyncExternalStore=function(k,$,W){return A.H.useSyncExternalStore(k,$,W)},yt.useTransition=function(){return A.H.useTransition()},yt.version="19.2.3",yt}var o_;function _s(){return o_||(o_=1,Qy.exports=Fk()),Qy.exports}var S=_s();const fe=Ts(S),PM=LM({__proto__:null,default:fe},[S]);var Jy={exports:{}},Gf={},Zy={exports:{}},e1={};var i_;function zk(){return i_||(i_=1,function(e){function t(P,G){var B=P.length;P.push(G);e:for(;0<B;){var Y=B-1>>>1,J=P[Y];if(0<i(J,G))P[Y]=G,P[B]=J,B=Y;else break e}}function n(P){return P.length===0?null:P[0]}function r(P){if(P.length===0)return null;var G=P[0],B=P.pop();if(B!==G){P[0]=B;e:for(var Y=0,J=P.length,k=J>>>1;Y<k;){var $=2*(Y+1)-1,W=P[$],te=$+1,ae=P[te];if(0>i(W,B))te<J&&0>i(ae,W)?(P[Y]=ae,P[te]=B,Y=te):(P[Y]=W,P[$]=B,Y=$);else if(te<J&&0>i(ae,B))P[Y]=ae,P[te]=B,Y=te;else break e}}return G}function i(P,G){var B=P.sortIndex-G.sortIndex;return B!==0?B:P.id-G.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var s=performance;e.unstable_now=function(){return s.now()}}else{var l=Date,u=l.now();e.unstable_now=function(){return l.now()-u}}var f=[],d=[],p=1,g=null,m=3,v=!1,E=!1,b=!1,x=!1,C=typeof setTimeout=="function"?setTimeout:null,R=typeof clearTimeout=="function"?clearTimeout:null,T=typeof setImmediate<"u"?setImmediate:null;function O(P){for(var G=n(d);G!==null;){if(G.callback===null)r(d);else if(G.startTime<=P)r(d),G.sortIndex=G.expirationTime,t(f,G);else break;G=n(d)}}function _(P){if(b=!1,O(P),!E)if(n(f)!==null)E=!0,M||(M=!0,j());else{var G=n(d);G!==null&&U(_,G.startTime-P)}}var M=!1,A=-1,D=5,L=-1;function N(){return x?!0:!(e.unstable_now()-L<D)}function H(){if(x=!1,M){var P=e.unstable_now();L=P;var G=!0;try{e:{E=!1,b&&(b=!1,R(A),A=-1),v=!0;var B=m;try{t:{for(O(P),g=n(f);g!==null&&!(g.expirationTime>P&&N());){var Y=g.callback;if(typeof Y=="function"){g.callback=null,m=g.priorityLevel;var J=Y(g.expirationTime<=P);if(P=e.unstable_now(),typeof J=="function"){g.callback=J,O(P),G=!0;break t}g===n(f)&&r(f),O(P)}else r(f);g=n(f)}if(g!==null)G=!0;else{var k=n(d);k!==null&&U(_,k.startTime-P),G=!1}}break e}finally{g=null,m=B,v=!1}G=void 0}}finally{G?j():M=!1}}}var j;if(typeof T=="function")j=function(){T(H)};else if(typeof MessageChannel<"u"){var F=new MessageChannel,q=F.port2;F.port1.onmessage=H,j=function(){q.postMessage(null)}}else j=function(){C(H,0)};function U(P,G){A=C(function(){P(e.unstable_now())},G)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(P){P.callback=null},e.unstable_forceFrameRate=function(P){0>P||125<P?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):D=0<P?Math.floor(1e3/P):5},e.unstable_getCurrentPriorityLevel=function(){return m},e.unstable_next=function(P){switch(m){case 1:case 2:case 3:var G=3;break;default:G=m}var B=m;m=G;try{return P()}finally{m=B}},e.unstable_requestPaint=function(){x=!0},e.unstable_runWithPriority=function(P,G){switch(P){case 1:case 2:case 3:case 4:case 5:break;default:P=3}var B=m;m=P;try{return G()}finally{m=B}},e.unstable_scheduleCallback=function(P,G,B){var Y=e.unstable_now();switch(typeof B=="object"&&B!==null?(B=B.delay,B=typeof B=="number"&&0<B?Y+B:Y):B=Y,P){case 1:var J=-1;break;case 2:J=250;break;case 5:J=1073741823;break;case 4:J=1e4;break;default:J=5e3}return J=B+J,P={id:p++,callback:G,priorityLevel:P,startTime:B,expirationTime:J,sortIndex:-1},B>Y?(P.sortIndex=B,t(d,P),n(f)===null&&P===n(d)&&(b?(R(A),A=-1):b=!0,U(_,B-Y))):(P.sortIndex=J,t(f,P),E||v||(E=!0,M||(M=!0,j()))),P},e.unstable_shouldYield=N,e.unstable_wrapCallback=function(P){var G=m;return function(){var B=m;m=G;try{return P.apply(this,arguments)}finally{m=B}}}}(e1)),e1}var s_;function Hk(){return s_||(s_=1,Zy.exports=zk()),Zy.exports}var t1={exports:{}},Sr={};var a_;function Bk(){if(a_)return Sr;a_=1;var e=_s();function t(f){var d="https://react.dev/errors/"+f;if(1<arguments.length){d+="?args[]="+encodeURIComponent(arguments[1]);for(var p=2;p<arguments.length;p++)d+="&args[]="+encodeURIComponent(arguments[p])}return"Minified React error #"+f+"; visit "+d+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function n(){}var r={d:{f:n,r:function(){throw Error(t(522))},D:n,C:n,L:n,m:n,X:n,S:n,M:n},p:0,findDOMNode:null},i=Symbol.for("react.portal");function s(f,d,p){var g=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:i,key:g==null?null:""+g,children:f,containerInfo:d,implementation:p}}var l=e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function u(f,d){if(f==="font")return"";if(typeof d=="string")return d==="use-credentials"?d:""}return Sr.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=r,Sr.createPortal=function(f,d){var p=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!d||d.nodeType!==1&&d.nodeType!==9&&d.nodeType!==11)throw Error(t(299));return s(f,d,null,p)},Sr.flushSync=function(f){var d=l.T,p=r.p;try{if(l.T=null,r.p=2,f)return f()}finally{l.T=d,r.p=p,r.d.f()}},Sr.preconnect=function(f,d){typeof f=="string"&&(d?(d=d.crossOrigin,d=typeof d=="string"?d==="use-credentials"?d:"":void 0):d=null,r.d.C(f,d))},Sr.prefetchDNS=function(f){typeof f=="string"&&r.d.D(f)},Sr.preinit=function(f,d){if(typeof f=="string"&&d&&typeof d.as=="string"){var p=d.as,g=u(p,d.crossOrigin),m=typeof d.integrity=="string"?d.integrity:void 0,v=typeof d.fetchPriority=="string"?d.fetchPriority:void 0;p==="style"?r.d.S(f,typeof d.precedence=="string"?d.precedence:void 0,{crossOrigin:g,integrity:m,fetchPriority:v}):p==="script"&&r.d.X(f,{crossOrigin:g,integrity:m,fetchPriority:v,nonce:typeof d.nonce=="string"?d.nonce:void 0})}},Sr.preinitModule=function(f,d){if(typeof f=="string")if(typeof d=="object"&&d!==null){if(d.as==null||d.as==="script"){var p=u(d.as,d.crossOrigin);r.d.M(f,{crossOrigin:p,integrity:typeof d.integrity=="string"?d.integrity:void 0,nonce:typeof d.nonce=="string"?d.nonce:void 0})}}else d==null&&r.d.M(f)},Sr.preload=function(f,d){if(typeof f=="string"&&typeof d=="object"&&d!==null&&typeof d.as=="string"){var p=d.as,g=u(p,d.crossOrigin);r.d.L(f,p,{crossOrigin:g,integrity:typeof d.integrity=="string"?d.integrity:void 0,nonce:typeof d.nonce=="string"?d.nonce:void 0,type:typeof d.type=="string"?d.type:void 0,fetchPriority:typeof d.fetchPriority=="string"?d.fetchPriority:void 0,referrerPolicy:typeof d.referrerPolicy=="string"?d.referrerPolicy:void 0,imageSrcSet:typeof d.imageSrcSet=="string"?d.imageSrcSet:void 0,imageSizes:typeof d.imageSizes=="string"?d.imageSizes:void 0,media:typeof d.media=="string"?d.media:void 0})}},Sr.preloadModule=function(f,d){if(typeof f=="string")if(d){var p=u(d.as,d.crossOrigin);r.d.m(f,{as:typeof d.as=="string"&&d.as!=="script"?d.as:void 0,crossOrigin:p,integrity:typeof d.integrity=="string"?d.integrity:void 0})}else r.d.m(f)},Sr.requestFormReset=function(f){r.d.r(f)},Sr.unstable_batchedUpdates=function(f,d){return f(d)},Sr.useFormState=function(f,d,p){return l.H.useFormState(f,d,p)},Sr.useFormStatus=function(){return l.H.useHostTransitionStatus()},Sr.version="19.2.3",Sr}var l_;function kM(){if(l_)return t1.exports;l_=1;function e(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),t1.exports=Bk(),t1.exports}var u_;function Uk(){if(u_)return Gf;u_=1;var e=Hk(),t=_s(),n=kM();function r(o){var a="https://react.dev/errors/"+o;if(1<arguments.length){a+="?args[]="+encodeURIComponent(arguments[1]);for(var c=2;c<arguments.length;c++)a+="&args[]="+encodeURIComponent(arguments[c])}return"Minified React error #"+o+"; visit "+a+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function i(o){return!(!o||o.nodeType!==1&&o.nodeType!==9&&o.nodeType!==11)}function s(o){var a=o,c=o;if(o.alternate)for(;a.return;)a=a.return;else{o=a;do a=o,(a.flags&4098)!==0&&(c=a.return),o=a.return;while(o)}return a.tag===3?c:null}function l(o){if(o.tag===13){var a=o.memoizedState;if(a===null&&(o=o.alternate,o!==null&&(a=o.memoizedState)),a!==null)return a.dehydrated}return null}function u(o){if(o.tag===31){var a=o.memoizedState;if(a===null&&(o=o.alternate,o!==null&&(a=o.memoizedState)),a!==null)return a.dehydrated}return null}function f(o){if(s(o)!==o)throw Error(r(188))}function d(o){var a=o.alternate;if(!a){if(a=s(o),a===null)throw Error(r(188));return a!==o?null:o}for(var c=o,h=a;;){var y=c.return;if(y===null)break;var w=y.alternate;if(w===null){if(h=y.return,h!==null){c=h;continue}break}if(y.child===w.child){for(w=y.child;w;){if(w===c)return f(y),o;if(w===h)return f(y),a;w=w.sibling}throw Error(r(188))}if(c.return!==h.return)c=y,h=w;else{for(var I=!1,z=y.child;z;){if(z===c){I=!0,c=y,h=w;break}if(z===h){I=!0,h=y,c=w;break}z=z.sibling}if(!I){for(z=w.child;z;){if(z===c){I=!0,c=w,h=y;break}if(z===h){I=!0,h=w,c=y;break}z=z.sibling}if(!I)throw Error(r(189))}}if(c.alternate!==h)throw Error(r(190))}if(c.tag!==3)throw Error(r(188));return c.stateNode.current===c?o:a}function p(o){var a=o.tag;if(a===5||a===26||a===27||a===6)return o;for(o=o.child;o!==null;){if(a=p(o),a!==null)return a;o=o.sibling}return null}var g=Object.assign,m=Symbol.for("react.element"),v=Symbol.for("react.transitional.element"),E=Symbol.for("react.portal"),b=Symbol.for("react.fragment"),x=Symbol.for("react.strict_mode"),C=Symbol.for("react.profiler"),R=Symbol.for("react.consumer"),T=Symbol.for("react.context"),O=Symbol.for("react.forward_ref"),_=Symbol.for("react.suspense"),M=Symbol.for("react.suspense_list"),A=Symbol.for("react.memo"),D=Symbol.for("react.lazy"),L=Symbol.for("react.activity"),N=Symbol.for("react.memo_cache_sentinel"),H=Symbol.iterator;function j(o){return o===null||typeof o!="object"?null:(o=H&&o[H]||o["@@iterator"],typeof o=="function"?o:null)}var F=Symbol.for("react.client.reference");function q(o){if(o==null)return null;if(typeof o=="function")return o.$$typeof===F?null:o.displayName||o.name||null;if(typeof o=="string")return o;switch(o){case b:return"Fragment";case C:return"Profiler";case x:return"StrictMode";case _:return"Suspense";case M:return"SuspenseList";case L:return"Activity"}if(typeof o=="object")switch(o.$$typeof){case E:return"Portal";case T:return o.displayName||"Context";case R:return(o._context.displayName||"Context")+".Consumer";case O:var a=o.render;return o=o.displayName,o||(o=a.displayName||a.name||"",o=o!==""?"ForwardRef("+o+")":"ForwardRef"),o;case A:return a=o.displayName||null,a!==null?a:q(o.type)||"Memo";case D:a=o._payload,o=o._init;try{return q(o(a))}catch{}}return null}var U=Array.isArray,P=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,G=n.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,B={pending:!1,data:null,method:null,action:null},Y=[],J=-1;function k(o){return{current:o}}function $(o){0>J||(o.current=Y[J],Y[J]=null,J--)}function W(o,a){J++,Y[J]=o.current,o.current=a}var te=k(null),ae=k(null),ne=k(null),ce=k(null);function Q(o,a){switch(W(ne,a),W(ae,o),W(te,null),a.nodeType){case 9:case 11:o=(o=a.documentElement)&&(o=o.namespaceURI)?wT(o):0;break;default:if(o=a.tagName,a=a.namespaceURI)a=wT(a),o=RT(a,o);else switch(o){case"svg":o=1;break;case"math":o=2;break;default:o=0}}$(te),W(te,o)}function de(){$(te),$(ae),$(ne)}function ve(o){o.memoizedState!==null&&W(ce,o);var a=te.current,c=RT(a,o.type);a!==c&&(W(ae,o),W(te,c))}function ue(o){ae.current===o&&($(te),$(ae)),ce.current===o&&($(ce),Uf._currentValue=B)}var me,xe;function Ce(o){if(me===void 0)try{throw Error()}catch(c){var a=c.stack.trim().match(/\n( *(at )?)/);me=a&&a[1]||"",xe=-1<c.stack.indexOf(`
2
2
  at`)?" (<anonymous>)":-1<c.stack.indexOf("@")?"@unknown:0:0":""}return`
3
3
  `+me+o+xe}var Ae=!1;function Se(o,a){if(!o||Ae)return"";Ae=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var h={DetermineComponentFrameRoot:function(){try{if(a){var Me=function(){throw Error()};if(Object.defineProperty(Me.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(Me,[])}catch(Re){var ye=Re}Reflect.construct(o,[],Me)}else{try{Me.call()}catch(Re){ye=Re}o.call(Me.prototype)}}else{try{throw Error()}catch(Re){ye=Re}(Me=o())&&typeof Me.catch=="function"&&Me.catch(function(){})}}catch(Re){if(Re&&ye&&typeof Re.stack=="string")return[Re.stack,ye.stack]}return[null,null]}};h.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var y=Object.getOwnPropertyDescriptor(h.DetermineComponentFrameRoot,"name");y&&y.configurable&&Object.defineProperty(h.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var w=h.DetermineComponentFrameRoot(),I=w[0],z=w[1];if(I&&z){var K=I.split(`
4
4
  `),ge=z.split(`
@@ -71,4 +71,4 @@ Reason: ${v}`))})}_process(t){this._numProcessing++,t.then(n=>(this._numProcessi
71
71
  `).map(function($n,io){return io>=Bt&&io<=an?et+$n:$n}).join(`
72
72
  `),selectionStart:dt&&/\S/.test(dt)?$e+et.length:$e,selectionEnd:Ze+et.length*(an-Bt+1)})}else{var Ye=$e+et.length;Ge({value:ze.substring(0,$e)+et+ze.substring(Ze),selectionStart:Ye,selectionEnd:Ye})}else if(he.key==="Backspace"){var At=$e!==Ze,tn=ze.substring(0,$e);if(tn.endsWith(et)&&!At){he.preventDefault();var Ye=$e-et.length;Ge({value:ze.substring(0,$e-et.length)+ze.substring(Ze),selectionStart:Ye,selectionEnd:Ye})}}else if(he.key==="Enter"){if($e===Ze){var Ut=re(ze,$e).pop(),ln=Ut==null?void 0:Ut.match(/^\s+/);if(ln!=null&&ln[0]){he.preventDefault();var yn=`
73
73
  `+ln[0],Ye=$e+yn.length;Ge({value:ze.substring(0,$e)+yn+ze.substring(Ze),selectionStart:Ye,selectionEnd:Ye})}}}else if(he.keyCode===d||he.keyCode===p||he.keyCode===g||he.keyCode===m){var mn=void 0;he.keyCode===d&&he.shiftKey?mn=["(",")"]:he.keyCode===p?he.shiftKey?mn=["{","}"]:mn=["[","]"]:he.keyCode===g?he.shiftKey?mn=['"','"']:mn=["'","'"]:he.keyCode===m&&!he.shiftKey&&(mn=["`","`"]),$e!==Ze&&mn&&(he.preventDefault(),Ge({value:ze.substring(0,$e)+mn[0]+ze.substring($e,Ze)+mn[1]+ze.substring(Ze),selectionStart:$e,selectionEnd:Ze+2}))}else(x?he.metaKey&&he.keyCode===u:he.ctrlKey&&he.keyCode===u)&&!he.shiftKey&&!he.altKey?(he.preventDefault(),nt()):(x?he.metaKey&&he.keyCode===u&&he.shiftKey:b?he.ctrlKey&&he.keyCode===l:he.ctrlKey&&he.keyCode===u&&he.shiftKey)&&!he.altKey?(he.preventDefault(),rt()):he.keyCode===f&&he.ctrlKey&&(!x||he.shiftKey)&&(he.preventDefault(),Z(function(dr){return!dr}))}},st=function(he){var He=he.currentTarget,ze=He.value,$e=He.selectionStart,Ze=He.selectionEnd;Ie({value:ze,selectionStart:$e,selectionEnd:Ze},!0),te(ze)};return s.useEffect(function(){Ue()},[Ue]),s.useImperativeHandle(A,function(){return{get session(){return{history:we.current}},set session(he){we.current=he.history}}},[]),s.createElement("div",e({},Te,{style:e(e({},O.container),ue)}),s.createElement("pre",e({className:Q,"aria-hidden":"true",style:e(e(e({},O.editor),O.highlight),ie)},typeof se=="string"?{dangerouslySetInnerHTML:{__html:se+"<br />"}}:{children:se})),s.createElement("textarea",{ref:function(he){return De.current=he},style:e(e(e({},O.editor),O.textarea),ie),className:C+(Ce?" ".concat(Ce):""),id:Ae,value:Se,onChange:st,onKeyDown:It,onClick:J,onKeyUp:W,onFocus:k,onBlur:Y,disabled:L,form:N,maxLength:P,minLength:G,name:B,placeholder:ce,readOnly:de,required:ve,autoFocus:D,autoCapitalize:"off",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"data-gramm":!1}),s.createElement("style",{dangerouslySetInnerHTML:{__html:R}}))}),O={container:{position:"relative",textAlign:"left",boxSizing:"border-box",padding:0,overflow:"hidden"},textarea:{position:"absolute",top:0,left:0,height:"100%",width:"100%",resize:"none",color:"inherit",overflow:"hidden",MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",WebkitTextFillColor:"transparent"},highlight:{position:"relative",pointerEvents:"none"},editor:{margin:0,border:0,background:"none",boxSizing:"inherit",display:"inherit",fontFamily:"inherit",fontSize:"inherit",fontStyle:"inherit",fontVariantLigatures:"inherit",fontWeight:"inherit",letterSpacing:"inherit",lineHeight:"inherit",tabSize:"inherit",textIndent:"inherit",textRendering:"inherit",textTransform:"inherit",whiteSpace:"pre-wrap",wordBreak:"keep-all",overflowWrap:"break-word"}};return qr.default=T,qr}var ste=ite();const iie=Ts(ste);var _b={exports:{}},wM;function ate(){return wM||(wM=1,function(e){var t=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};var n=function(r){var i=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,s=0,l={},u={manual:r.Prism&&r.Prism.manual,disableWorkerMessageHandler:r.Prism&&r.Prism.disableWorkerMessageHandler,util:{encode:function R(T){return T instanceof f?new f(T.type,R(T.content),T.alias):Array.isArray(T)?T.map(R):T.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(R){return Object.prototype.toString.call(R).slice(8,-1)},objId:function(R){return R.__id||Object.defineProperty(R,"__id",{value:++s}),R.__id},clone:function R(T,O){O=O||{};var _,M;switch(u.util.type(T)){case"Object":if(M=u.util.objId(T),O[M])return O[M];_={},O[M]=_;for(var A in T)T.hasOwnProperty(A)&&(_[A]=R(T[A],O));return _;case"Array":return M=u.util.objId(T),O[M]?O[M]:(_=[],O[M]=_,T.forEach(function(D,L){_[L]=R(D,O)}),_);default:return T}},getLanguage:function(R){for(;R;){var T=i.exec(R.className);if(T)return T[1].toLowerCase();R=R.parentElement}return"none"},setLanguage:function(R,T){R.className=R.className.replace(RegExp(i,"gi"),""),R.classList.add("language-"+T)},currentScript:function(){if(typeof document>"u")return null;if(document.currentScript&&document.currentScript.tagName==="SCRIPT")return document.currentScript;try{throw new Error}catch(_){var R=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(_.stack)||[])[1];if(R){var T=document.getElementsByTagName("script");for(var O in T)if(T[O].src==R)return T[O]}return null}},isActive:function(R,T,O){for(var _="no-"+T;R;){var M=R.classList;if(M.contains(T))return!0;if(M.contains(_))return!1;R=R.parentElement}return!!O}},languages:{plain:l,plaintext:l,text:l,txt:l,extend:function(R,T){var O=u.util.clone(u.languages[R]);for(var _ in T)O[_]=T[_];return O},insertBefore:function(R,T,O,_){_=_||u.languages;var M=_[R],A={};for(var D in M)if(M.hasOwnProperty(D)){if(D==T)for(var L in O)O.hasOwnProperty(L)&&(A[L]=O[L]);O.hasOwnProperty(D)||(A[D]=M[D])}var N=_[R];return _[R]=A,u.languages.DFS(u.languages,function(H,j){j===N&&H!=R&&(this[H]=A)}),A},DFS:function R(T,O,_,M){M=M||{};var A=u.util.objId;for(var D in T)if(T.hasOwnProperty(D)){O.call(T,D,T[D],_||D);var L=T[D],N=u.util.type(L);N==="Object"&&!M[A(L)]?(M[A(L)]=!0,R(L,O,null,M)):N==="Array"&&!M[A(L)]&&(M[A(L)]=!0,R(L,O,D,M))}}},plugins:{},highlightAll:function(R,T){u.highlightAllUnder(document,R,T)},highlightAllUnder:function(R,T,O){var _={callback:O,container:R,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};u.hooks.run("before-highlightall",_),_.elements=Array.prototype.slice.apply(_.container.querySelectorAll(_.selector)),u.hooks.run("before-all-elements-highlight",_);for(var M=0,A;A=_.elements[M++];)u.highlightElement(A,T===!0,_.callback)},highlightElement:function(R,T,O){var _=u.util.getLanguage(R),M=u.languages[_];u.util.setLanguage(R,_);var A=R.parentElement;A&&A.nodeName.toLowerCase()==="pre"&&u.util.setLanguage(A,_);var D=R.textContent,L={element:R,language:_,grammar:M,code:D};function N(j){L.highlightedCode=j,u.hooks.run("before-insert",L),L.element.innerHTML=L.highlightedCode,u.hooks.run("after-highlight",L),u.hooks.run("complete",L),O&&O.call(L.element)}if(u.hooks.run("before-sanity-check",L),A=L.element.parentElement,A&&A.nodeName.toLowerCase()==="pre"&&!A.hasAttribute("tabindex")&&A.setAttribute("tabindex","0"),!L.code){u.hooks.run("complete",L),O&&O.call(L.element);return}if(u.hooks.run("before-highlight",L),!L.grammar){N(u.util.encode(L.code));return}if(T&&r.Worker){var H=new Worker(u.filename);H.onmessage=function(j){N(j.data)},H.postMessage(JSON.stringify({language:L.language,code:L.code,immediateClose:!0}))}else N(u.highlight(L.code,L.grammar,L.language))},highlight:function(R,T,O){var _={code:R,grammar:T,language:O};if(u.hooks.run("before-tokenize",_),!_.grammar)throw new Error('The language "'+_.language+'" has no grammar.');return _.tokens=u.tokenize(_.code,_.grammar),u.hooks.run("after-tokenize",_),f.stringify(u.util.encode(_.tokens),_.language)},tokenize:function(R,T){var O=T.rest;if(O){for(var _ in O)T[_]=O[_];delete T.rest}var M=new g;return m(M,M.head,R),p(R,M,T,M.head,0),E(M)},hooks:{all:{},add:function(R,T){var O=u.hooks.all;O[R]=O[R]||[],O[R].push(T)},run:function(R,T){var O=u.hooks.all[R];if(!(!O||!O.length))for(var _=0,M;M=O[_++];)M(T)}},Token:f};r.Prism=u;function f(R,T,O,_){this.type=R,this.content=T,this.alias=O,this.length=(_||"").length|0}f.stringify=function R(T,O){if(typeof T=="string")return T;if(Array.isArray(T)){var _="";return T.forEach(function(N){_+=R(N,O)}),_}var M={type:T.type,content:R(T.content,O),tag:"span",classes:["token",T.type],attributes:{},language:O},A=T.alias;A&&(Array.isArray(A)?Array.prototype.push.apply(M.classes,A):M.classes.push(A)),u.hooks.run("wrap",M);var D="";for(var L in M.attributes)D+=" "+L+'="'+(M.attributes[L]||"").replace(/"/g,"&quot;")+'"';return"<"+M.tag+' class="'+M.classes.join(" ")+'"'+D+">"+M.content+"</"+M.tag+">"};function d(R,T,O,_){R.lastIndex=T;var M=R.exec(O);if(M&&_&&M[1]){var A=M[1].length;M.index+=A,M[0]=M[0].slice(A)}return M}function p(R,T,O,_,M,A){for(var D in O)if(!(!O.hasOwnProperty(D)||!O[D])){var L=O[D];L=Array.isArray(L)?L:[L];for(var N=0;N<L.length;++N){if(A&&A.cause==D+","+N)return;var H=L[N],j=H.inside,F=!!H.lookbehind,q=!!H.greedy,U=H.alias;if(q&&!H.pattern.global){var P=H.pattern.toString().match(/[imsuy]*$/)[0];H.pattern=RegExp(H.pattern.source,P+"g")}for(var G=H.pattern||H,B=_.next,Y=M;B!==T.tail&&!(A&&Y>=A.reach);Y+=B.value.length,B=B.next){var J=B.value;if(T.length>R.length)return;if(!(J instanceof f)){var k=1,$;if(q){if($=d(G,Y,R,F),!$||$.index>=R.length)break;var ne=$.index,W=$.index+$[0].length,te=Y;for(te+=B.value.length;ne>=te;)B=B.next,te+=B.value.length;if(te-=B.value.length,Y=te,B.value instanceof f)continue;for(var ae=B;ae!==T.tail&&(te<W||typeof ae.value=="string");ae=ae.next)k++,te+=ae.value.length;k--,J=R.slice(Y,te),$.index-=Y}else if($=d(G,0,J,F),!$)continue;var ne=$.index,ce=$[0],Q=J.slice(0,ne),de=J.slice(ne+ce.length),ve=Y+J.length;A&&ve>A.reach&&(A.reach=ve);var ue=B.prev;Q&&(ue=m(T,ue,Q),Y+=Q.length),v(T,ue,k);var me=new f(D,j?u.tokenize(ce,j):ce,U,ce);if(B=m(T,ue,me),de&&m(T,B,de),k>1){var xe={cause:D+","+N,reach:ve};p(R,T,O,B.prev,Y,xe),A&&xe.reach>A.reach&&(A.reach=xe.reach)}}}}}}function g(){var R={value:null,prev:null,next:null},T={value:null,prev:R,next:null};R.next=T,this.head=R,this.tail=T,this.length=0}function m(R,T,O){var _=T.next,M={value:O,prev:T,next:_};return T.next=M,_.prev=M,R.length++,M}function v(R,T,O){for(var _=T.next,M=0;M<O&&_!==R.tail;M++)_=_.next;T.next=_,_.prev=T,R.length-=M}function E(R){for(var T=[],O=R.head.next;O!==R.tail;)T.push(O.value),O=O.next;return T}if(!r.document)return r.addEventListener&&(u.disableWorkerMessageHandler||r.addEventListener("message",function(R){var T=JSON.parse(R.data),O=T.language,_=T.code,M=T.immediateClose;r.postMessage(u.highlight(_,u.languages[O],O)),M&&r.close()},!1)),u;var b=u.util.currentScript();b&&(u.filename=b.src,b.hasAttribute("data-manual")&&(u.manual=!0));function x(){u.manual||u.highlightAll()}if(!u.manual){var C=document.readyState;C==="loading"||C==="interactive"&&b&&b.defer?document.addEventListener("DOMContentLoaded",x):window.requestAnimationFrame?window.requestAnimationFrame(x):window.setTimeout(x,16)}return u}(t);e.exports&&(e.exports=n),typeof e_<"u"&&(e_.Prism=n)}(_b)),_b.exports}var lte=ate();const sie=Ts(lte);(function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))})(Prism);export{Ote as $,Tne as A,Lne as B,hne as C,Dre as D,fne as E,As as F,Lre as G,Ine as H,vne as I,Hne as J,yre as K,_re as L,cne as M,Pre as N,OI as O,Ate as P,xte as Q,fe as R,a8 as S,pne as T,Wte as U,Jte as V,Qte as W,NM as X,Ob as Y,fte as Z,pte as _,Jn as a,Voe as a$,z8 as a0,hte as a1,dte as a2,Tte as a3,Rte as a4,gte as a5,Mte as a6,cte as a7,yne as a8,pre as a9,vre as aA,dre as aB,nre as aC,lre as aD,zoe as aE,Are as aF,sne as aG,Loe as aH,Poe as aI,Noe as aJ,koe as aK,Foe as aL,Kne as aM,_ne as aN,Soe as aO,boe as aP,Eoe as aQ,xoe as aR,Coe as aS,woe as aT,Roe as aU,rne as aV,Wne as aW,Qoe as aX,Koe as aY,Zoe as aZ,Joe as a_,ore as aa,doe as ab,ere as ac,noe as ad,one as ae,ane as af,toe as ag,Ere as ah,Rre as ai,voe as aj,Sre as ak,mre as al,Xne as am,kne as an,Mne as ao,rre as ap,Pne as aq,Nne as ar,zne as as,Sne as at,Dne as au,bne as av,Une as aw,Kte as ax,ine as ay,are as az,nne as b,coe as b$,Uoe as b0,tL as b1,oie as b2,rie as b3,Am as b4,qne as b5,hre as b6,Ane as b7,goe as b8,hoe as b9,dZ as bA,moe as bB,ioe as bC,soe as bD,tre as bE,Rne as bF,Xoe as bG,eie as bH,Goe as bI,Woe as bJ,Hoe as bK,Yoe as bL,Ioe as bM,Doe as bN,Ooe as bO,Moe as bP,Aoe as bQ,Qre as bR,_oe as bS,xre as bT,kre as bU,Nre as bV,Jre as bW,Zre as bX,aoe as bY,loe as bZ,uoe as b_,poe as ba,Cne as bb,xne as bc,fre as bd,cre as be,ure as bf,Cre as bg,$ne as bh,bre as bi,wne as bj,ire as bk,wre as bl,Gne as bm,yoe as bn,qoe as bo,joe as bp,nie as bq,tie as br,Boe as bs,une as bt,Jne as bu,Zne as bv,gne as bw,Yne as bx,mne as by,$oe as bz,Zte as c,foe as c0,roe as c1,ooe as c2,jne as c3,eoe as c4,sre as c5,Vne as c6,Bne as c7,Fre as c8,zre as c9,Hre as ca,Bre as cb,Tre as cc,Ure as cd,Vre as ce,Kre as cf,jre as cg,Xre as ch,$re as ci,qre as cj,Gre as ck,Yre as cl,Wre as cm,Toe as cn,vte as co,yte as cp,bte as cq,Ste as cr,Ete as cs,wte as ct,iie as cu,sie as cv,H3 as d,YG as e,ene as f,z6 as g,S as h,tne as i,be as j,_te as k,mte as l,gre as m,Qne as n,lne as o,Fne as p,Ire as q,Dn as r,Ore as s,Mre as t,JG as u,One as v,Hc as w,fE as x,Ene as y,dne as z};
74
- //# sourceMappingURL=vendor-CKDP5hij.js.map
74
+ //# sourceMappingURL=vendor-BKUJ0_Du.js.map