@getontime/cli 4.3.0 → 4.3.1

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 (353) hide show
  1. package/client/assets/{Backstage-CDH53Q_N.js → Backstage-D2lEbqUt.js} +2 -2
  2. package/client/assets/Backstage-D2lEbqUt.js.br +0 -0
  3. package/client/assets/Backstage-D2lEbqUt.js.gz +0 -0
  4. package/client/assets/{Backstage-CDH53Q_N.js.map → Backstage-D2lEbqUt.js.map} +1 -1
  5. package/client/assets/{Countdown-B-MuMf1C.js → Countdown-VV03STbF.js} +2 -2
  6. package/client/assets/Countdown-VV03STbF.js.br +0 -0
  7. package/client/assets/Countdown-VV03STbF.js.gz +0 -0
  8. package/client/assets/{Countdown-B-MuMf1C.js.map → Countdown-VV03STbF.js.map} +1 -1
  9. package/client/assets/{CustomTranslationModal-DiQbmcgD.js → CustomTranslationModal-D1nM9W1Z.js} +2 -2
  10. package/client/assets/CustomTranslationModal-D1nM9W1Z.js.br +0 -0
  11. package/client/assets/CustomTranslationModal-D1nM9W1Z.js.gz +0 -0
  12. package/client/assets/{CustomTranslationModal-DiQbmcgD.js.map → CustomTranslationModal-D1nM9W1Z.js.map} +1 -1
  13. package/client/assets/{DelayIndicator-D--91EO3.js → DelayIndicator-Co5rMYw9.js} +2 -2
  14. package/client/assets/DelayIndicator-Co5rMYw9.js.br +0 -0
  15. package/client/assets/DelayIndicator-Co5rMYw9.js.gz +0 -0
  16. package/client/assets/{DelayIndicator-D--91EO3.js.map → DelayIndicator-Co5rMYw9.js.map} +1 -1
  17. package/client/assets/{EditorFeatureWrapper-DwXUAV4k.js → EditorFeatureWrapper-_t_4D7Es.js} +2 -2
  18. package/client/assets/EditorFeatureWrapper-_t_4D7Es.js.br +0 -0
  19. package/client/assets/EditorFeatureWrapper-_t_4D7Es.js.gz +0 -0
  20. package/client/assets/{EditorFeatureWrapper-DwXUAV4k.js.map → EditorFeatureWrapper-_t_4D7Es.js.map} +1 -1
  21. package/client/assets/{EditorUtils-DuKjlUkF.js → EditorUtils-C3QoonjM.js} +2 -2
  22. package/client/assets/EditorUtils-C3QoonjM.js.br +0 -0
  23. package/client/assets/EditorUtils-C3QoonjM.js.gz +0 -0
  24. package/client/assets/{EditorUtils-DuKjlUkF.js.map → EditorUtils-C3QoonjM.js.map} +1 -1
  25. package/client/assets/{Empty-CJbZxh45.js → Empty-DJMjfXnt.js} +2 -2
  26. package/client/assets/Empty-DJMjfXnt.js.br +2 -0
  27. package/client/assets/Empty-DJMjfXnt.js.gz +0 -0
  28. package/client/assets/{Empty-CJbZxh45.js.map → Empty-DJMjfXnt.js.map} +1 -1
  29. package/client/assets/{EmptyPage-Bc358YpE.js → EmptyPage-BlXZqoIr.js} +2 -2
  30. package/client/assets/EmptyPage-BlXZqoIr.js.br +0 -0
  31. package/client/assets/EmptyPage-BlXZqoIr.js.gz +0 -0
  32. package/client/assets/{EmptyPage-Bc358YpE.js.map → EmptyPage-BlXZqoIr.js.map} +1 -1
  33. package/client/assets/{FollowButton-C6Fvaqh0.js → FollowButton-Dy5n1J2c.js} +2 -2
  34. package/client/assets/FollowButton-Dy5n1J2c.js.br +0 -0
  35. package/client/assets/FollowButton-Dy5n1J2c.js.gz +0 -0
  36. package/client/assets/{FollowButton-C6Fvaqh0.js.map → FollowButton-Dy5n1J2c.js.map} +1 -1
  37. package/client/assets/{MessageControlExport-GmOrvUik.js → MessageControlExport-CWQX8mH0.js} +3 -3
  38. package/client/assets/MessageControlExport-CWQX8mH0.js.br +0 -0
  39. package/client/assets/MessageControlExport-CWQX8mH0.js.gz +0 -0
  40. package/client/assets/{MessageControlExport-GmOrvUik.js.map → MessageControlExport-CWQX8mH0.js.map} +1 -1
  41. package/client/assets/{MilestoneEditor-BA0PVIQh.js → MilestoneEditor-CxWZdQ1B.js} +2 -2
  42. package/client/assets/MilestoneEditor-CxWZdQ1B.js.br +0 -0
  43. package/client/assets/MilestoneEditor-CxWZdQ1B.js.gz +0 -0
  44. package/client/assets/{MilestoneEditor-BA0PVIQh.js.map → MilestoneEditor-CxWZdQ1B.js.map} +1 -1
  45. package/client/assets/{Modal-BKx0PDGT.js → Modal-ePA-Go14.js} +2 -2
  46. package/client/assets/Modal-ePA-Go14.js.br +0 -0
  47. package/client/assets/Modal-ePA-Go14.js.gz +0 -0
  48. package/client/assets/{Modal-BKx0PDGT.js.map → Modal-ePA-Go14.js.map} +1 -1
  49. package/client/assets/{MultiPartProgressBar-BXdLxJpy.js → MultiPartProgressBar-GQaCHX4z.js} +2 -2
  50. package/client/assets/MultiPartProgressBar-GQaCHX4z.js.br +0 -0
  51. package/client/assets/MultiPartProgressBar-GQaCHX4z.js.gz +0 -0
  52. package/client/assets/{MultiPartProgressBar-BXdLxJpy.js.map → MultiPartProgressBar-GQaCHX4z.js.map} +1 -1
  53. package/client/assets/{OperatorExport-X7-qi2jv.js → OperatorExport-CRS08UXj.js} +2 -2
  54. package/client/assets/OperatorExport-CRS08UXj.js.br +0 -0
  55. package/client/assets/OperatorExport-CRS08UXj.js.gz +0 -0
  56. package/client/assets/{OperatorExport-X7-qi2jv.js.map → OperatorExport-CRS08UXj.js.map} +1 -1
  57. package/client/assets/{OverviewWrapper-BQb2xl_N.js → OverviewWrapper-BNRb3Ub_.js} +2 -2
  58. package/client/assets/OverviewWrapper-BNRb3Ub_.js.br +0 -0
  59. package/client/assets/OverviewWrapper-BNRb3Ub_.js.gz +0 -0
  60. package/client/assets/{OverviewWrapper-BQb2xl_N.js.map → OverviewWrapper-BNRb3Ub_.js.map} +1 -1
  61. package/client/assets/{PipHost-CvtlZIn7.js → PipHost-DNfEY6RN.js} +2 -2
  62. package/client/assets/PipHost-DNfEY6RN.js.br +0 -0
  63. package/client/assets/PipHost-DNfEY6RN.js.gz +0 -0
  64. package/client/assets/{PipHost-CvtlZIn7.js.map → PipHost-DNfEY6RN.js.map} +1 -1
  65. package/client/assets/{ProjectInfo-1tw48NHZ.js → ProjectInfo-KPf-pM8y.js} +2 -2
  66. package/client/assets/ProjectInfo-KPf-pM8y.js.br +0 -0
  67. package/client/assets/ProjectInfo-KPf-pM8y.js.gz +0 -0
  68. package/client/assets/{ProjectInfo-1tw48NHZ.js.map → ProjectInfo-KPf-pM8y.js.map} +1 -1
  69. package/client/assets/{ProtectRoute-BH-QvsU0.js → ProtectRoute-DW_vXgYI.js} +2 -2
  70. package/client/assets/ProtectRoute-DW_vXgYI.js.br +0 -0
  71. package/client/assets/ProtectRoute-DW_vXgYI.js.gz +0 -0
  72. package/client/assets/{ProtectRoute-BH-QvsU0.js.map → ProtectRoute-DW_vXgYI.js.map} +1 -1
  73. package/client/assets/{ProtectedCuesheet-CYBIcg1c.js → ProtectedCuesheet-CCVDLsK-.js} +2 -2
  74. package/client/assets/ProtectedCuesheet-CCVDLsK-.js.br +0 -0
  75. package/client/assets/ProtectedCuesheet-CCVDLsK-.js.gz +0 -0
  76. package/client/assets/{ProtectedCuesheet-CYBIcg1c.js.map → ProtectedCuesheet-CCVDLsK-.js.map} +1 -1
  77. package/client/assets/{ProtectedEditor-D_A75byA.js → ProtectedEditor-Ddu9vBS8.js} +3 -3
  78. package/client/assets/ProtectedEditor-Ddu9vBS8.js.br +0 -0
  79. package/client/assets/ProtectedEditor-Ddu9vBS8.js.gz +0 -0
  80. package/client/assets/ProtectedEditor-Ddu9vBS8.js.map +1 -0
  81. package/client/assets/{RundownEntry-bkqwx57t.js → RundownEntry-CpspmKD0.js} +2 -2
  82. package/client/assets/RundownEntry-CpspmKD0.js.br +0 -0
  83. package/client/assets/RundownEntry-CpspmKD0.js.gz +0 -0
  84. package/client/assets/{RundownEntry-bkqwx57t.js.map → RundownEntry-CpspmKD0.js.map} +1 -1
  85. package/client/assets/{RundownExport-EorsanA0.js → RundownExport-DhCryTUp.js} +3 -3
  86. package/client/assets/RundownExport-DhCryTUp.js.br +0 -0
  87. package/client/assets/RundownExport-DhCryTUp.js.gz +0 -0
  88. package/client/assets/{RundownExport-EorsanA0.js.map → RundownExport-DhCryTUp.js.map} +1 -1
  89. package/client/assets/{Select-BGGVCKqU.js → Select-ASOzxGFV.js} +2 -2
  90. package/client/assets/Select-ASOzxGFV.js.br +0 -0
  91. package/client/assets/Select-ASOzxGFV.js.gz +0 -0
  92. package/client/assets/{Select-BGGVCKqU.js.map → Select-ASOzxGFV.js.map} +1 -1
  93. package/client/assets/{Studio-BjNZ4l-W.js → Studio-D7evHV2Q.js} +2 -2
  94. package/client/assets/Studio-D7evHV2Q.js.br +0 -0
  95. package/client/assets/Studio-D7evHV2Q.js.gz +0 -0
  96. package/client/assets/{Studio-BjNZ4l-W.js.map → Studio-D7evHV2Q.js.map} +1 -1
  97. package/client/assets/{StyleEditor-CpciRLYh.js → StyleEditor-DYybY9tA.js} +2 -2
  98. package/client/assets/StyleEditor-DYybY9tA.js.br +0 -0
  99. package/client/assets/StyleEditor-DYybY9tA.js.gz +0 -0
  100. package/client/assets/{StyleEditor-CpciRLYh.js.map → StyleEditor-DYybY9tA.js.map} +1 -1
  101. package/client/assets/{SuperscriptPeriod-DsPdWN_s.js → SuperscriptPeriod-NmBzJhFK.js} +2 -2
  102. package/client/assets/SuperscriptPeriod-NmBzJhFK.js.br +0 -0
  103. package/client/assets/SuperscriptPeriod-NmBzJhFK.js.gz +0 -0
  104. package/client/assets/{SuperscriptPeriod-DsPdWN_s.js.map → SuperscriptPeriod-NmBzJhFK.js.map} +1 -1
  105. package/client/assets/{SuperscriptTime-CA6S2R55.js → SuperscriptTime-CA_8XRM6.js} +2 -2
  106. package/client/assets/SuperscriptTime-CA_8XRM6.js.br +0 -0
  107. package/client/assets/SuperscriptTime-CA_8XRM6.js.gz +0 -0
  108. package/client/assets/{SuperscriptTime-CA6S2R55.js.map → SuperscriptTime-CA_8XRM6.js.map} +1 -1
  109. package/client/assets/{SwatchPicker-Cm5Eicvv.js → SwatchPicker-C8eFQKBd.js} +2 -2
  110. package/client/assets/SwatchPicker-C8eFQKBd.js.br +0 -0
  111. package/client/assets/SwatchPicker-C8eFQKBd.js.gz +0 -0
  112. package/client/assets/{SwatchPicker-Cm5Eicvv.js.map → SwatchPicker-C8eFQKBd.js.map} +1 -1
  113. package/client/assets/{TimeElements-DbclWDbU.js → TimeElements-D3dl9gAM.js} +2 -2
  114. package/client/assets/TimeElements-D3dl9gAM.js.br +0 -0
  115. package/client/assets/TimeElements-D3dl9gAM.js.gz +0 -0
  116. package/client/assets/{TimeElements-DbclWDbU.js.map → TimeElements-D3dl9gAM.js.map} +1 -1
  117. package/client/assets/{TimeInput-C8DQoFXv.js → TimeInput-DR-NCEhH.js} +2 -2
  118. package/client/assets/TimeInput-DR-NCEhH.js.br +0 -0
  119. package/client/assets/TimeInput-DR-NCEhH.js.gz +0 -0
  120. package/client/assets/{TimeInput-C8DQoFXv.js.map → TimeInput-DR-NCEhH.js.map} +1 -1
  121. package/client/assets/{TimelinePage-Cgtl1qNp.js → TimelinePage-BfTV9IdT.js} +2 -2
  122. package/client/assets/TimelinePage-BfTV9IdT.js.br +0 -0
  123. package/client/assets/TimelinePage-BfTV9IdT.js.gz +0 -0
  124. package/client/assets/{TimelinePage-Cgtl1qNp.js.map → TimelinePage-BfTV9IdT.js.map} +1 -1
  125. package/client/assets/{Timer-BbixOGdj.js → Timer-DvqDm4yX.js} +2 -2
  126. package/client/assets/Timer-DvqDm4yX.js.br +0 -0
  127. package/client/assets/Timer-DvqDm4yX.js.gz +0 -0
  128. package/client/assets/{Timer-BbixOGdj.js.map → Timer-DvqDm4yX.js.map} +1 -1
  129. package/client/assets/{TimerControlExport-Dx3SSGNG.js → TimerControlExport-CQQ2KxqK.js} +2 -2
  130. package/client/assets/TimerControlExport-CQQ2KxqK.js.br +0 -0
  131. package/client/assets/TimerControlExport-CQQ2KxqK.js.gz +0 -0
  132. package/client/assets/{TimerControlExport-Dx3SSGNG.js.map → TimerControlExport-CQQ2KxqK.js.map} +1 -1
  133. package/client/assets/{TitleCard-Xdr7xwzU.js → TitleCard-AESdy7kI.js} +2 -2
  134. package/client/assets/TitleCard-AESdy7kI.js.br +0 -0
  135. package/client/assets/TitleCard-AESdy7kI.js.gz +0 -0
  136. package/client/assets/{TitleCard-Xdr7xwzU.js.map → TitleCard-AESdy7kI.js.map} +1 -1
  137. package/client/assets/{Tooltip-B5vsLcFu.js → Tooltip-BTK4bJkV.js} +2 -2
  138. package/client/assets/Tooltip-BTK4bJkV.js.br +0 -0
  139. package/client/assets/Tooltip-BTK4bJkV.js.gz +0 -0
  140. package/client/assets/{Tooltip-B5vsLcFu.js.map → Tooltip-BTK4bJkV.js.map} +1 -1
  141. package/client/assets/ViewLogo-BZVUUIZA.js +2 -0
  142. package/client/assets/ViewLogo-BZVUUIZA.js.br +0 -0
  143. package/client/assets/ViewLogo-BZVUUIZA.js.gz +0 -0
  144. package/client/assets/ViewLogo-BZVUUIZA.js.map +1 -0
  145. package/client/assets/{ViewParamsEditor-C2-TRP6e.js → ViewParamsEditor-CBnRitZ4.js} +2 -2
  146. package/client/assets/ViewParamsEditor-CBnRitZ4.js.br +0 -0
  147. package/client/assets/ViewParamsEditor-CBnRitZ4.js.gz +0 -0
  148. package/client/assets/{ViewParamsEditor-C2-TRP6e.js.map → ViewParamsEditor-CBnRitZ4.js.map} +1 -1
  149. package/client/assets/{dateConfig-D7xim1t4.js → dateConfig-Crm-Cu2y.js} +2 -2
  150. package/client/assets/dateConfig-Crm-Cu2y.js.br +0 -0
  151. package/client/assets/dateConfig-Crm-Cu2y.js.gz +0 -0
  152. package/client/assets/{dateConfig-D7xim1t4.js.map → dateConfig-Crm-Cu2y.js.map} +1 -1
  153. package/client/assets/{editorSettings-D2f7e1a6.js → editorSettings-CRJwIW7V.js} +2 -2
  154. package/client/assets/editorSettings-CRJwIW7V.js.br +0 -0
  155. package/client/assets/editorSettings-CRJwIW7V.js.gz +0 -0
  156. package/client/assets/{editorSettings-D2f7e1a6.js.map → editorSettings-CRJwIW7V.js.map} +1 -1
  157. package/client/assets/{getProgress-cLuBFPjh.js → getProgress-fD6vhbNF.js} +2 -2
  158. package/client/assets/getProgress-fD6vhbNF.js.br +0 -0
  159. package/client/assets/getProgress-fD6vhbNF.js.gz +0 -0
  160. package/client/assets/{getProgress-cLuBFPjh.js.map → getProgress-fD6vhbNF.js.map} +1 -1
  161. package/client/assets/{index-B81u4hxi.js → index-B1K7rED_.js} +3 -3
  162. package/client/assets/index-B1K7rED_.js.br +0 -0
  163. package/client/assets/index-B1K7rED_.js.gz +0 -0
  164. package/client/assets/index-B1K7rED_.js.map +1 -0
  165. package/client/assets/{index-D6S93MXv.css → index-BAvwULMi.css} +1 -1
  166. package/client/assets/index-BAvwULMi.css.br +0 -0
  167. package/client/assets/{index-D6S93MXv.css.gz → index-BAvwULMi.css.gz} +0 -0
  168. package/client/assets/{offset-R98EXhWK.js → offset-FplkvYRD.js} +2 -2
  169. package/client/assets/offset-FplkvYRD.js.br +0 -0
  170. package/client/assets/offset-FplkvYRD.js.gz +0 -0
  171. package/client/assets/{offset-R98EXhWK.js.map → offset-FplkvYRD.js.map} +1 -1
  172. package/client/assets/{parseUserTime-YeFR8t3F.js → parseUserTime-0pNWLcr0.js} +2 -2
  173. package/client/assets/parseUserTime-0pNWLcr0.js.br +0 -0
  174. package/client/assets/parseUserTime-0pNWLcr0.js.gz +0 -0
  175. package/client/assets/{parseUserTime-YeFR8t3F.js.map → parseUserTime-0pNWLcr0.js.map} +1 -1
  176. package/client/assets/{playbackstate-CPQdnF-k.js → playbackstate-1HCEpVh5.js} +2 -2
  177. package/client/assets/playbackstate-1HCEpVh5.js.br +0 -0
  178. package/client/assets/playbackstate-1HCEpVh5.js.gz +0 -0
  179. package/client/assets/{playbackstate-CPQdnF-k.js.map → playbackstate-1HCEpVh5.js.map} +1 -1
  180. package/client/assets/{presentation.utils-Cl-L3pHN.js → presentation.utils-CLt2UhON.js} +2 -2
  181. package/client/assets/presentation.utils-CLt2UhON.js.br +0 -0
  182. package/client/assets/presentation.utils-CLt2UhON.js.gz +0 -0
  183. package/client/assets/{presentation.utils-Cl-L3pHN.js.map → presentation.utils-CLt2UhON.js.map} +1 -1
  184. package/client/assets/{rundownUtils-CtVGQDQn.js → rundownUtils-D1oJpMdx.js} +2 -2
  185. package/client/assets/rundownUtils-D1oJpMdx.js.br +0 -0
  186. package/client/assets/rundownUtils-D1oJpMdx.js.gz +0 -0
  187. package/client/assets/{rundownUtils-CtVGQDQn.js.map → rundownUtils-D1oJpMdx.js.map} +1 -1
  188. package/client/assets/{timer.utils-rGyI9NYa.js → timer.utils-FiqT1yNa.js} +2 -2
  189. package/client/assets/timer.utils-FiqT1yNa.js.br +0 -0
  190. package/client/assets/timer.utils-FiqT1yNa.js.gz +0 -0
  191. package/client/assets/{timer.utils-rGyI9NYa.js.map → timer.utils-FiqT1yNa.js.map} +1 -1
  192. package/client/assets/{useCustomFields-k4piRt9n.js → useCustomFields-nW-_Zyfw.js} +2 -2
  193. package/client/assets/useCustomFields-nW-_Zyfw.js.br +0 -0
  194. package/client/assets/useCustomFields-nW-_Zyfw.js.gz +0 -0
  195. package/client/assets/{useCustomFields-k4piRt9n.js.map → useCustomFields-nW-_Zyfw.js.map} +1 -1
  196. package/client/assets/{useFollowComponent-B7vvPzG2.js → useFollowComponent-4cbKEsVz.js} +2 -2
  197. package/client/assets/useFollowComponent-4cbKEsVz.js.br +0 -0
  198. package/client/assets/useFollowComponent-4cbKEsVz.js.gz +0 -0
  199. package/client/assets/{useFollowComponent-B7vvPzG2.js.map → useFollowComponent-4cbKEsVz.js.map} +1 -1
  200. package/client/assets/{useProjectData-DdgKoYzk.js → useProjectData-DP-pr73E.js} +2 -2
  201. package/client/assets/useProjectData-DP-pr73E.js.br +0 -0
  202. package/client/assets/useProjectData-DP-pr73E.js.gz +0 -0
  203. package/client/assets/{useProjectData-DdgKoYzk.js.map → useProjectData-DP-pr73E.js.map} +1 -1
  204. package/client/assets/{useReport-DSuFnUb9.js → useReport-6XA_s2Vc.js} +2 -2
  205. package/client/assets/useReport-6XA_s2Vc.js.br +0 -0
  206. package/client/assets/useReport-6XA_s2Vc.js.gz +0 -0
  207. package/client/assets/{useReport-DSuFnUb9.js.map → useReport-6XA_s2Vc.js.map} +1 -1
  208. package/client/assets/{useRundown-Bn6ZPsz0.js → useRundown-BGhL8DEI.js} +2 -2
  209. package/client/assets/useRundown-BGhL8DEI.js.br +0 -0
  210. package/client/assets/useRundown-BGhL8DEI.js.gz +0 -0
  211. package/client/assets/{useRundown-Bn6ZPsz0.js.map → useRundown-BGhL8DEI.js.map} +1 -1
  212. package/client/assets/{useWindowTitle-Bpmo_HzW.js → useWindowTitle-ahZQIheF.js} +2 -2
  213. package/client/assets/useWindowTitle-ahZQIheF.js.br +0 -0
  214. package/client/assets/useWindowTitle-ahZQIheF.js.gz +0 -0
  215. package/client/assets/{useWindowTitle-Bpmo_HzW.js.map → useWindowTitle-ahZQIheF.js.map} +1 -1
  216. package/client/assets/{validateEvent-Do8yE_DJ.js → validateEvent-jVIMKhmx.js} +2 -2
  217. package/client/assets/validateEvent-jVIMKhmx.js.br +0 -0
  218. package/client/assets/validateEvent-jVIMKhmx.js.gz +0 -0
  219. package/client/assets/{validateEvent-Do8yE_DJ.js.map → validateEvent-jVIMKhmx.js.map} +1 -1
  220. package/client/assets/{vendor-q6fv0YT2.js → vendor-DmGkEtRj.js} +2 -2
  221. package/client/assets/vendor-DmGkEtRj.js.br +0 -0
  222. package/client/assets/vendor-DmGkEtRj.js.gz +0 -0
  223. package/client/assets/{vendor-q6fv0YT2.js.map → vendor-DmGkEtRj.js.map} +1 -1
  224. package/client/assets/{viewLoader.utils-b42scp-I.js → viewLoader.utils-Bniie8Op.js} +2 -2
  225. package/client/assets/viewLoader.utils-Bniie8Op.js.br +0 -0
  226. package/client/assets/viewLoader.utils-Bniie8Op.js.gz +0 -0
  227. package/client/assets/{viewLoader.utils-b42scp-I.js.map → viewLoader.utils-Bniie8Op.js.map} +1 -1
  228. package/client/assets/{viewUtils-B8Dr4GHH.js → viewUtils-VNLYoR28.js} +2 -2
  229. package/client/assets/viewUtils-VNLYoR28.js.br +0 -0
  230. package/client/assets/viewUtils-VNLYoR28.js.gz +0 -0
  231. package/client/assets/{viewUtils-B8Dr4GHH.js.map → viewUtils-VNLYoR28.js.map} +1 -1
  232. package/client/index.html +3 -3
  233. package/package.json +1 -1
  234. package/server/index.cjs +74 -74
  235. package/client/assets/Backstage-CDH53Q_N.js.br +0 -0
  236. package/client/assets/Backstage-CDH53Q_N.js.gz +0 -0
  237. package/client/assets/Countdown-B-MuMf1C.js.br +0 -0
  238. package/client/assets/Countdown-B-MuMf1C.js.gz +0 -0
  239. package/client/assets/CustomTranslationModal-DiQbmcgD.js.br +0 -0
  240. package/client/assets/CustomTranslationModal-DiQbmcgD.js.gz +0 -0
  241. package/client/assets/DelayIndicator-D--91EO3.js.br +0 -0
  242. package/client/assets/DelayIndicator-D--91EO3.js.gz +0 -0
  243. package/client/assets/EditorFeatureWrapper-DwXUAV4k.js.br +0 -0
  244. package/client/assets/EditorFeatureWrapper-DwXUAV4k.js.gz +0 -0
  245. package/client/assets/EditorUtils-DuKjlUkF.js.br +0 -0
  246. package/client/assets/EditorUtils-DuKjlUkF.js.gz +0 -0
  247. package/client/assets/Empty-CJbZxh45.js.br +0 -0
  248. package/client/assets/Empty-CJbZxh45.js.gz +0 -0
  249. package/client/assets/EmptyPage-Bc358YpE.js.br +0 -5
  250. package/client/assets/EmptyPage-Bc358YpE.js.gz +0 -0
  251. package/client/assets/FollowButton-C6Fvaqh0.js.br +0 -0
  252. package/client/assets/FollowButton-C6Fvaqh0.js.gz +0 -0
  253. package/client/assets/MessageControlExport-GmOrvUik.js.br +0 -0
  254. package/client/assets/MessageControlExport-GmOrvUik.js.gz +0 -0
  255. package/client/assets/MilestoneEditor-BA0PVIQh.js.br +0 -0
  256. package/client/assets/MilestoneEditor-BA0PVIQh.js.gz +0 -0
  257. package/client/assets/Modal-BKx0PDGT.js.br +0 -0
  258. package/client/assets/Modal-BKx0PDGT.js.gz +0 -0
  259. package/client/assets/MultiPartProgressBar-BXdLxJpy.js.br +0 -0
  260. package/client/assets/MultiPartProgressBar-BXdLxJpy.js.gz +0 -0
  261. package/client/assets/OperatorExport-X7-qi2jv.js.br +0 -0
  262. package/client/assets/OperatorExport-X7-qi2jv.js.gz +0 -0
  263. package/client/assets/OverviewWrapper-BQb2xl_N.js.br +0 -0
  264. package/client/assets/OverviewWrapper-BQb2xl_N.js.gz +0 -0
  265. package/client/assets/PipHost-CvtlZIn7.js.br +0 -0
  266. package/client/assets/PipHost-CvtlZIn7.js.gz +0 -0
  267. package/client/assets/ProjectInfo-1tw48NHZ.js.br +0 -0
  268. package/client/assets/ProjectInfo-1tw48NHZ.js.gz +0 -0
  269. package/client/assets/ProtectRoute-BH-QvsU0.js.br +0 -0
  270. package/client/assets/ProtectRoute-BH-QvsU0.js.gz +0 -0
  271. package/client/assets/ProtectedCuesheet-CYBIcg1c.js.br +0 -0
  272. package/client/assets/ProtectedCuesheet-CYBIcg1c.js.gz +0 -0
  273. package/client/assets/ProtectedEditor-D_A75byA.js.br +0 -0
  274. package/client/assets/ProtectedEditor-D_A75byA.js.gz +0 -0
  275. package/client/assets/ProtectedEditor-D_A75byA.js.map +0 -1
  276. package/client/assets/RundownEntry-bkqwx57t.js.br +0 -0
  277. package/client/assets/RundownEntry-bkqwx57t.js.gz +0 -0
  278. package/client/assets/RundownExport-EorsanA0.js.br +0 -0
  279. package/client/assets/RundownExport-EorsanA0.js.gz +0 -0
  280. package/client/assets/Select-BGGVCKqU.js.br +0 -0
  281. package/client/assets/Select-BGGVCKqU.js.gz +0 -0
  282. package/client/assets/Studio-BjNZ4l-W.js.br +0 -0
  283. package/client/assets/Studio-BjNZ4l-W.js.gz +0 -0
  284. package/client/assets/StyleEditor-CpciRLYh.js.br +0 -0
  285. package/client/assets/StyleEditor-CpciRLYh.js.gz +0 -0
  286. package/client/assets/SuperscriptPeriod-DsPdWN_s.js.br +0 -0
  287. package/client/assets/SuperscriptPeriod-DsPdWN_s.js.gz +0 -0
  288. package/client/assets/SuperscriptTime-CA6S2R55.js.br +0 -0
  289. package/client/assets/SuperscriptTime-CA6S2R55.js.gz +0 -0
  290. package/client/assets/SwatchPicker-Cm5Eicvv.js.br +0 -0
  291. package/client/assets/SwatchPicker-Cm5Eicvv.js.gz +0 -0
  292. package/client/assets/TimeElements-DbclWDbU.js.br +0 -0
  293. package/client/assets/TimeElements-DbclWDbU.js.gz +0 -0
  294. package/client/assets/TimeInput-C8DQoFXv.js.br +0 -0
  295. package/client/assets/TimeInput-C8DQoFXv.js.gz +0 -0
  296. package/client/assets/TimelinePage-Cgtl1qNp.js.br +0 -0
  297. package/client/assets/TimelinePage-Cgtl1qNp.js.gz +0 -0
  298. package/client/assets/Timer-BbixOGdj.js.br +0 -0
  299. package/client/assets/Timer-BbixOGdj.js.gz +0 -0
  300. package/client/assets/TimerControlExport-Dx3SSGNG.js.br +0 -0
  301. package/client/assets/TimerControlExport-Dx3SSGNG.js.gz +0 -0
  302. package/client/assets/TitleCard-Xdr7xwzU.js.br +0 -0
  303. package/client/assets/TitleCard-Xdr7xwzU.js.gz +0 -0
  304. package/client/assets/Tooltip-B5vsLcFu.js.br +0 -0
  305. package/client/assets/Tooltip-B5vsLcFu.js.gz +0 -0
  306. package/client/assets/ViewLogo-G7EosFIr.js +0 -2
  307. package/client/assets/ViewLogo-G7EosFIr.js.br +0 -0
  308. package/client/assets/ViewLogo-G7EosFIr.js.gz +0 -0
  309. package/client/assets/ViewLogo-G7EosFIr.js.map +0 -1
  310. package/client/assets/ViewParamsEditor-C2-TRP6e.js.br +0 -0
  311. package/client/assets/ViewParamsEditor-C2-TRP6e.js.gz +0 -0
  312. package/client/assets/dateConfig-D7xim1t4.js.br +0 -0
  313. package/client/assets/dateConfig-D7xim1t4.js.gz +0 -0
  314. package/client/assets/editorSettings-D2f7e1a6.js.br +0 -0
  315. package/client/assets/editorSettings-D2f7e1a6.js.gz +0 -0
  316. package/client/assets/getProgress-cLuBFPjh.js.br +0 -0
  317. package/client/assets/getProgress-cLuBFPjh.js.gz +0 -0
  318. package/client/assets/index-B81u4hxi.js.br +0 -0
  319. package/client/assets/index-B81u4hxi.js.gz +0 -0
  320. package/client/assets/index-B81u4hxi.js.map +0 -1
  321. package/client/assets/index-D6S93MXv.css.br +0 -0
  322. package/client/assets/offset-R98EXhWK.js.br +0 -0
  323. package/client/assets/offset-R98EXhWK.js.gz +0 -0
  324. package/client/assets/parseUserTime-YeFR8t3F.js.br +0 -0
  325. package/client/assets/parseUserTime-YeFR8t3F.js.gz +0 -0
  326. package/client/assets/playbackstate-CPQdnF-k.js.br +0 -0
  327. package/client/assets/playbackstate-CPQdnF-k.js.gz +0 -0
  328. package/client/assets/presentation.utils-Cl-L3pHN.js.br +0 -0
  329. package/client/assets/presentation.utils-Cl-L3pHN.js.gz +0 -0
  330. package/client/assets/rundownUtils-CtVGQDQn.js.br +0 -0
  331. package/client/assets/rundownUtils-CtVGQDQn.js.gz +0 -0
  332. package/client/assets/timer.utils-rGyI9NYa.js.br +0 -0
  333. package/client/assets/timer.utils-rGyI9NYa.js.gz +0 -0
  334. package/client/assets/useCustomFields-k4piRt9n.js.br +0 -0
  335. package/client/assets/useCustomFields-k4piRt9n.js.gz +0 -0
  336. package/client/assets/useFollowComponent-B7vvPzG2.js.br +0 -0
  337. package/client/assets/useFollowComponent-B7vvPzG2.js.gz +0 -0
  338. package/client/assets/useProjectData-DdgKoYzk.js.br +0 -0
  339. package/client/assets/useProjectData-DdgKoYzk.js.gz +0 -0
  340. package/client/assets/useReport-DSuFnUb9.js.br +0 -0
  341. package/client/assets/useReport-DSuFnUb9.js.gz +0 -0
  342. package/client/assets/useRundown-Bn6ZPsz0.js.br +0 -0
  343. package/client/assets/useRundown-Bn6ZPsz0.js.gz +0 -0
  344. package/client/assets/useWindowTitle-Bpmo_HzW.js.br +0 -0
  345. package/client/assets/useWindowTitle-Bpmo_HzW.js.gz +0 -0
  346. package/client/assets/validateEvent-Do8yE_DJ.js.br +0 -3
  347. package/client/assets/validateEvent-Do8yE_DJ.js.gz +0 -0
  348. package/client/assets/vendor-q6fv0YT2.js.br +0 -0
  349. package/client/assets/vendor-q6fv0YT2.js.gz +0 -0
  350. package/client/assets/viewLoader.utils-b42scp-I.js.br +0 -0
  351. package/client/assets/viewLoader.utils-b42scp-I.js.gz +0 -0
  352. package/client/assets/viewUtils-B8Dr4GHH.js.br +0 -0
  353. package/client/assets/viewUtils-B8Dr4GHH.js.gz +0 -0
@@ -1 +1 @@
1
- ._blink_35w9k_1{animation:_blink_35w9k_1 1s step-start infinite}@keyframes _blink_35w9k_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_35w9k_13{transform:rotate(45deg)}._errorContainer_35w9k_17{width:100%;height:100%;display:grid;place-content:center;background-color:#101010;color:#f6f6f6}._error_35w9k_17{color:#fa5656}._report_35w9k_30{color:#578af4;text-decoration:underline;text-underline-offset:2px;cursor:pointer}._report_35w9k_30:hover{color:#ff7597}._blink_9onby_1{animation:_blink_9onby_1 1s step-start infinite}@keyframes _blink_9onby_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_9onby_13{transform:rotate(45deg)}._overlay_9onby_17{position:absolute;top:0;left:0;margin:0;width:100vw;height:100vh;padding:0;box-sizing:border-box;border:10px solid #f6f6f6;background-color:#101010;color:#f6f6f6;display:grid;place-content:center;text-align:center;cursor:pointer}._name_9onby_35{font-weight:600;margin-top:-10vh;line-height:1em;font-size:12vw;text-transform:uppercase}._message_9onby_43{color:#8a8a8a;line-height:2em;font-size:3vw}._blink_bz8cs_1{animation:_blink_bz8cs_1 1s step-start infinite}@keyframes _blink_bz8cs_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_bz8cs_13{transform:rotate(45deg)}._mirror_bz8cs_17{transform:rotate(180deg)}._subtle_bz8cs_21{background:#303030;color:#779be7;line-height:1em}._subtle_bz8cs_21:hover:not(:disabled):not(:active){background:#404040;color:#578af4}._subtle_bz8cs_21:active:not(:disabled){background:#2d2d2d;border-color:#202020}._subtle-white_bz8cs_35{background:#303030;color:#f6f6f6}._subtle-white_bz8cs_35:hover:not(:disabled):not(:active){background:#404040;color:#f6f6f6}._subtle-white_bz8cs_35:active:not(:disabled){background:#2d2d2d;border-color:#202020}._subtle-white_bz8cs_35:disabled{background:#303030}._primary_bz8cs_51{background:#2b5abc;color:#f6f6f6}._primary_bz8cs_51:hover:not(:disabled):not(:active){background:#3e75e8}._primary_bz8cs_51:active:not(:disabled){background:#0a43b9;border-color:#0036a6}._primary_bz8cs_51:disabled{opacity:.6}._destructive_bz8cs_66{background:#d20300;color:#f6f6f6}._destructive_bz8cs_66:hover:not(:disabled):not(:active){background:#ed3333;color:#f6f6f6}._destructive_bz8cs_66:active:not(:disabled){background:#c10000;border-color:#b20000}._subtle-destructive_bz8cs_79{background:#303030;color:#ff7878}._subtle-destructive_bz8cs_79:hover:not(:disabled):not(:active){background:#404040;color:#fa5656}._subtle-destructive_bz8cs_79:active:not(:disabled){background:#2d2d2d;border-color:#202020}._ghosted_bz8cs_92{background:transparent;color:#578af4}._ghosted_bz8cs_92:hover:not(:disabled):not(:active){background:#404040;color:#578af4}._ghosted_bz8cs_92:active:not(:disabled){background:#2d2d2d;border-color:#202020}._ghosted_bz8cs_92:disabled{opacity:.4}._ghosted-white_bz8cs_108{background:transparent;color:#f6f6f6}._ghosted-white_bz8cs_108:hover:not(:disabled):not(:active){background:#404040;color:#f6f6f6}._ghosted-white_bz8cs_108:active:not(:disabled){background:#2d2d2d;border-color:#202020}._ghosted-white_bz8cs_108:disabled{opacity:.4}._ghosted-destructive_bz8cs_124{background:transparent;color:#fa5656}._ghosted-destructive_bz8cs_124:hover:not(:disabled):not(:active){background:#404040;color:#fa5656}._ghosted-destructive_bz8cs_124:active:not(:disabled){background:#2d2d2d;border-color:#202020}._ghosted-destructive_bz8cs_124:disabled{opacity:.4}._baseIconButton_bz8cs_140{aspect-ratio:1;display:grid;place-content:center;border:1px solid transparent;border-radius:3px;cursor:pointer}._baseIconButton_bz8cs_140:focus-visible{outline:2px solid #578AF4;outline-offset:2px}._baseIconButton_bz8cs_140:disabled{opacity:.4;cursor:not-allowed}._small_bz8cs_157{height:1.5rem;font-size:calc(1rem - 3px)}._medium_bz8cs_162{height:2rem;width:2rem}._large_bz8cs_167{height:2.5rem;width:2.5rem}._xlarge_bz8cs_172{height:3rem;font-size:1.5rem}._blink_1nsno_1{animation:_blink_1nsno_1 1s step-start infinite}@keyframes _blink_1nsno_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_1nsno_13{transform:rotate(45deg)}._fadeable_1nsno_17{opacity:1;transition-property:opacity;transition-duration:.3s}._fadeable_1nsno_17._hidden_1nsno_22{opacity:0;pointer-events:none}._buttonContainer_1nsno_27{display:flex;flex-direction:column;row-gap:1rem;padding-top:.75rem;padding-left:.5em;position:fixed;left:0;top:0;z-index:200}._blink_1y6b8_1{animation:_blink_1y6b8_1 1s step-start infinite}@keyframes _blink_1y6b8_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_1y6b8_13{transform:rotate(45deg)}._fadeable_1y6b8_17{opacity:1;transition-property:opacity;transition-duration:.3s}._fadeable_1y6b8_17._hidden_1y6b8_22{opacity:0;pointer-events:none}._lockIcon_1y6b8_27{font-size:1.5rem;color:#77c785;padding:.5em;position:fixed;left:0;top:0;z-index:200}._blink_1erat_1{animation:_blink_1erat_1 1s step-start infinite}@keyframes _blink_1erat_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_1erat_13{transform:rotate(45deg)}._mirror_1erat_17{transform:rotate(180deg)}._subtle_1erat_21{background:#303030;color:#779be7;line-height:1em}._subtle_1erat_21:hover:not(:disabled):not(:active){background:#404040;color:#578af4}._subtle_1erat_21:active:not(:disabled){background:#2d2d2d;border-color:#202020}._subtle-white_1erat_35{background:#303030;color:#f6f6f6}._subtle-white_1erat_35:hover:not(:disabled):not(:active){background:#404040;color:#f6f6f6}._subtle-white_1erat_35:active:not(:disabled){background:#2d2d2d;border-color:#202020}._subtle-white_1erat_35:disabled{background:#303030}._primary_1erat_51{background:#2b5abc;color:#f6f6f6}._primary_1erat_51:hover:not(:disabled):not(:active){background:#3e75e8}._primary_1erat_51:active:not(:disabled){background:#0a43b9;border-color:#0036a6}._primary_1erat_51:disabled{opacity:.6}._destructive_1erat_66{background:#d20300;color:#f6f6f6}._destructive_1erat_66:hover:not(:disabled):not(:active){background:#ed3333;color:#f6f6f6}._destructive_1erat_66:active:not(:disabled){background:#c10000;border-color:#b20000}._subtle-destructive_1erat_79{background:#303030;color:#ff7878}._subtle-destructive_1erat_79:hover:not(:disabled):not(:active){background:#404040;color:#fa5656}._subtle-destructive_1erat_79:active:not(:disabled){background:#2d2d2d;border-color:#202020}._ghosted_1erat_92{background:transparent;color:#578af4}._ghosted_1erat_92:hover:not(:disabled):not(:active){background:#404040;color:#578af4}._ghosted_1erat_92:active:not(:disabled){background:#2d2d2d;border-color:#202020}._ghosted_1erat_92:disabled{opacity:.4}._ghosted-white_1erat_108{background:transparent;color:#f6f6f6}._ghosted-white_1erat_108:hover:not(:disabled):not(:active){background:#404040;color:#f6f6f6}._ghosted-white_1erat_108:active:not(:disabled){background:#2d2d2d;border-color:#202020}._ghosted-white_1erat_108:disabled{opacity:.4}._ghosted-destructive_1erat_124{background:transparent;color:#fa5656}._ghosted-destructive_1erat_124:hover:not(:disabled):not(:active){background:#404040;color:#fa5656}._ghosted-destructive_1erat_124:active:not(:disabled){background:#2d2d2d;border-color:#202020}._ghosted-destructive_1erat_124:disabled{opacity:.4}._baseButton_1erat_140{position:relative;display:flex;align-items:center;justify-content:center;gap:.5em;width:fit-content;padding-inline:1em;white-space:nowrap;border:1px solid transparent;border-radius:3px;cursor:pointer}._baseButton_1erat_140:disabled{opacity:.4;cursor:not-allowed}._baseButton_1erat_140:focus-visible{outline:2px solid #578AF4;outline-offset:2px}._baseButton_1erat_140._loading_1erat_161{cursor:wait}._baseButton_1erat_140._loading_1erat_161 ._content_1erat_164{opacity:0}._content_1erat_164{display:flex;align-items:center;gap:inherit}._loadingOverlay_1erat_174{position:absolute;display:grid;place-content:center}._spinner_1erat_180{animation:_spin_1erat_180 1s linear infinite;stroke-dasharray:8}@keyframes _spin_1erat_180{to{transform:rotate(360deg)}}._small_1erat_190{height:1.5rem;font-size:calc(1rem - 3px)}._medium_1erat_195{height:2rem;font-size:calc(1rem - 2px)}._large_1erat_200{height:2.5rem;font-weight:600}._xlarge_1erat_205{height:3rem;font-weight:600}._fluid_1erat_210{width:100%}._blink_qv1xq_1{animation:_blink_qv1xq_1 1s step-start infinite}@keyframes _blink_qv1xq_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_qv1xq_13{transform:rotate(45deg)}._dialog_qv1xq_17{position:fixed;top:10%;left:50%;transform:translate(-50%);padding-inline:1rem;min-width:min(600px,90vw);background-color:#202020;color:#f6f6f6;border-radius:3px;box-shadow:#00000026 0 3px 3px;border:1px solid #2d2d2d;outline:none}._backdrop_qv1xq_32{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#000000b3;transition:opacity .3s cubic-bezier(.45,1.005,0,1.005)}._backdrop_qv1xq_32[data-starting-style],._backdrop_qv1xq_32[data-ending-style]{opacity:0}._title_qv1xq_42{font-size:1rem;font-weight:600;padding-block:1rem;display:flex;align-items:center;justify-content:space-between}._body_qv1xq_51{display:flex;flex-direction:column;gap:.5rem;max-height:min(80vh,600px);overflow-y:auto}._footer_qv1xq_59{padding-block:1rem;display:flex;align-items:center;justify-content:end;gap:1rem}._blink_1r8lg_1{animation:_blink_1r8lg_1 1s step-start infinite}@keyframes _blink_1r8lg_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_1r8lg_13{transform:rotate(45deg)}._input_1r8lg_17{box-sizing:border-box;font-size:1rem;font-weight:inherit;color:#e2e2e2;border-radius:3px;border:1px solid transparent;padding-inline:.5em;outline:none}._input_1r8lg_17::placeholder{color:#8a8a8a;letter-spacing:0}._input_1r8lg_17:hover:not(:disabled):not(:read-only){background-color:#2d2d2d}._input_1r8lg_17:focus:not(:read-only){background-color:#404040;outline:2px solid #578AF4;outline-offset:2px}._input_1r8lg_17:disabled{opacity:.4;cursor:not-allowed}._input_1r8lg_17:read-only::placeholder{opacity:0}._subtle_1r8lg_47{background-color:#262626}._ghosted_1r8lg_51{background-color:transparent;padding:0}._medium_1r8lg_56{height:2rem}._large_1r8lg_60{height:2.5rem}._fluid_1r8lg_64{width:100%}._blink_pmy0j_1{animation:_blink_pmy0j_1 1s step-start infinite}@keyframes _blink_pmy0j_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_pmy0j_13{transform:rotate(45deg)}._link_pmy0j_17{display:flex;align-items:center;padding:.75rem 1.5rem;gap:.5rem;width:100%;border-left:4px solid transparent;color:#779be7;white-space:nowrap;cursor:pointer;transition-property:color;transition-duration:.1s}._link_pmy0j_17:hover{color:#ff7597;background-color:#101010}._link_pmy0j_17:active{background-color:#ffffff1a}._link_pmy0j_17:focus{outline:2px solid #578AF4;background-color:#101010}._link_pmy0j_17._current_pmy0j_41{background-color:#1a1a1a;border-left:4px solid #779BE7}._blink_1wpyp_1{animation:_blink_1wpyp_1 1s step-start infinite}@keyframes _blink_1wpyp_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_1wpyp_13{transform:rotate(45deg)}._linkIcon_1wpyp_17{margin-left:auto;transform:rotate(45deg)}._blink_1pu1m_1{animation:_blink_1pu1m_1 1s step-start infinite}@keyframes _blink_1pu1m_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_1pu1m_13{transform:rotate(45deg)}._copytag_1pu1m_17{display:flex;align-items:center}._action_1pu1m_22{border-top-right-radius:0;border-bottom-right-radius:0}._label_1pu1m_27{border-radius:3px 0 0 3px;border:1px solid #262626;background-color:#ffffff08;padding-inline:.5rem 1rem;line-height:1em;display:flex;align-items:center;color:#8a8a8a}._small_1pu1m_38{height:1.5rem;font-size:calc(1rem - 3px)}._medium_1pu1m_43{height:2rem;font-size:calc(1rem - 2px)}._large_1pu1m_48{height:2.5rem;font-weight:600}._copy_1pu1m_17{border-top-left-radius:0;border-bottom-left-radius:0}._blink_elv9y_1{animation:_blink_elv9y_1 1s step-start infinite}@keyframes _blink_elv9y_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_elv9y_13{transform:rotate(45deg)}._header_elv9y_17{font-size:calc(1rem - 2px);margin-left:1rem;color:#6c6c6c}._interfaces_elv9y_23{padding:.5rem;display:flex;flex-wrap:wrap;gap:.5rem}._interfaceCopy_elv9y_30{display:flex;align-items:center}._goIcon_elv9y_35{transform:rotate(45deg);margin-left:.25rem;margin-bottom:.25rem}._blink_1f3q6_1{animation:_blink_1f3q6_1 1s step-start infinite}@keyframes _blink_1f3q6_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_1f3q6_13{transform:rotate(45deg)}._separator_1f3q6_17{border-color:#ffffff1a}._backdrop_1f3q6_21{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#000000b3;transition:opacity .3s cubic-bezier(.45,1.005,0,1.005)}._backdrop_1f3q6_21[data-starting-style],._backdrop_1f3q6_21[data-ending-style]{opacity:0}._drawer_1f3q6_31{box-sizing:border-box;position:fixed;top:0;left:0;bottom:0;width:22rem;height:100vh;display:flex;flex-direction:column;padding-block:1rem;background-color:#202020;color:#f6f6f6;border-right:1px solid #2d2d2d}._drawer_1f3q6_31[data-open]{transform:translate(0);transition:transform .3s cubic-bezier(.45,1.005,0,1.005)}._drawer_1f3q6_31[data-starting-style],._drawer_1f3q6_31[data-ending-style]{transform:translate(-100%);transition:transform .5s cubic-bezier(.45,1.005,0,1.005)}@media (max-width: 500px){._drawer_1f3q6_31{width:100vw}}._header_1f3q6_60{display:flex;align-items:center;justify-content:space-between;height:3.5rem;padding-inline:1.5rem;font-weight:600;font-size:1.25rem}._body_1f3q6_70{flex:1;overflow-y:auto}._note_1f3q6_75{margin-left:auto;color:#fff3}._blink_ypiou_1{animation:_blink_ypiou_1 1s step-start infinite}@keyframes _blink_ypiou_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_ypiou_13{transform:rotate(45deg)}._header_ypiou_17{font-size:2rem;padding-bottom:.5rem;border-bottom:1px solid rgba(255,255,255,.1);font-weight:600}._subheader_ypiou_24{font-size:1.5rem;padding-bottom:.5rem;font-weight:600;display:flex;align-items:center;justify-content:space-between}._title_ypiou_33{font-size:1.375rem;padding:0 2rem;font-weight:600;display:flex;align-items:center;justify-content:space-between;color:#cfcfcf}._section_ypiou_43,._indent_ypiou_44{font-size:calc(1rem - 1px);display:flex;flex-direction:column;gap:1rem;color:#f6f6f6}._section_ypiou_43{position:relative;margin-top:2rem;max-width:850px}._indent_ypiou_44{padding:1rem;background-color:#101010}._paragraph_ypiou_63{padding:.5rem 0}._card_ypiou_67{position:relative;padding:2rem;background-color:#ffffff08;border:1px solid #2d2d2d;border-radius:3px}._highlight_ypiou_75{font-size:calc(1rem - 2px);color:#ffbc56;padding-inline:.25rem}._blockquote_ypiou_81{padding-left:.5rem;border-left:2px solid #ececec;background-color:#ffffff08}._error_ypiou_87{font-size:calc(1rem - 2px);display:block;color:#fa5656}._pad_ypiou_93{padding:0 2rem;max-height:550px;overflow-y:scroll}._table_ypiou_99{width:100%;border-collapse:collapse;font-size:calc(1rem - 2px);text-align:left;margin-bottom:2rem}._table_ypiou_99 thead{position:sticky;top:0;z-index:100;background-color:#101010}._table_ypiou_99 th{font-weight:400;color:#b1b1b1;white-space:nowrap;text-transform:capitalize}._table_ypiou_99 th,._table_ypiou_99 td{padding:.5rem}._table_ypiou_99 tr:nth-child(2n){background-color:#ffffff03}._table_ypiou_99 tr[data-warn=true],._table_ypiou_99 td[data-warn=true]{background-color:#3d2900}._listGroup_ypiou_130{padding:0 2rem}._listGroup_ypiou_130>li:not(:last-child){border-bottom:1px solid rgba(255,255,255,.1)}._listItem_ypiou_137{display:grid;grid-template-columns:1fr auto;align-items:center;gap:1rem;padding:.5rem 0}._fieldTitle_ypiou_145{color:#f6f6f6;font-size:1rem}._fieldDescription_ypiou_150{font-size:calc(1rem - 2px);color:#b1b1b1}._fieldError_ypiou_155{font-size:calc(1rem - 2px);color:#fa5656}._divider_ypiou_160{border:none;border-top:1px solid rgba(255,255,255,.1);margin:1rem -2rem}._overlay_ypiou_166{position:absolute;z-index:300;width:100%;height:100%;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-content:center;background-color:#0000001a}._loader_ypiou_177{width:4rem;height:4rem;background:#578af4;display:inline-block;border-radius:50%;box-sizing:border-box;animation:_animloader_ypiou_1 1s ease-in infinite}._empty_ypiou_187{background-color:#0000001a;text-align:center;color:#8a8a8a}._empty_ypiou_187 td{padding-block:5rem}._empty_ypiou_187 button{margin-top:1rem;margin-inline:auto}._inlineElements_ypiou_200{display:flex;align-items:center}._inlineElements_ypiou_200._inner_ypiou_204{gap:.5rem}._inlineElements_ypiou_200._component_ypiou_207{gap:1rem}._inlineElements_ypiou_200._start_ypiou_210{justify-content:flex-start}._inlineElements_ypiou_200._end_ypiou_213{justify-content:flex-end}._inlineElements_ypiou_200._apart_ypiou_216{justify-content:space-between}@keyframes _animloader_ypiou_1{0%{transform:scale(0);opacity:.6}to{transform:scale(1);opacity:0}}._blink_hxuk5_1{animation:_blink_hxuk5_1 1s step-start infinite}@keyframes _blink_hxuk5_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_hxuk5_13{transform:rotate(45deg)}._log_hxuk5_17{font-size:calc(1rem - 2px);overflow-y:auto;-webkit-user-select:text;user-select:text;min-height:20vh;max-height:40vh;background-color:#101010;padding:.5rem}._apart_hxuk5_27{margin-left:auto}._logEntry_hxuk5_31{display:flex}._logEntry_hxuk5_31._INFO_hxuk5_34{color:#b1b1b1}._logEntry_hxuk5_31._WARN_hxuk5_37{color:#ffbc56}._logEntry_hxuk5_31._ERROR_hxuk5_40{color:#fa5656}._logEntry_hxuk5_31:hover{color:#f6f6f6}._logEntry_hxuk5_31 ._time_hxuk5_46{width:4.5em}._logEntry_hxuk5_31 ._origin_hxuk5_49{width:6em}._logEntry_hxuk5_31 ._msg_hxuk5_52{flex:1}._buttonBar_hxuk5_56{flex-wrap:wrap;padding-bottom:.5rem}._blink_vno17_1{animation:_blink_vno17_1 1s step-start infinite}@keyframes _blink_vno17_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_vno17_13{transform:rotate(45deg)}._mirror_vno17_17{transform:rotate(180deg)}._loader_vno17_21{display:grid;place-items:center;background-color:var(--background-color-override, #101010);height:100vh}._ellipsis_vno17_28{display:inline-block;position:relative;width:5rem}._ellipsis_vno17_28 div{position:absolute;width:.5rem;height:.5rem;border-radius:50%;background-color:var(--accent-color-override, #ff7597);animation-timing-function:cubic-bezier(0,1,1,0)}._ellipsis_vno17_28 div:nth-child(1){left:.5rem;animation:_lds-ellipsis1_vno17_1 .6s infinite}._ellipsis_vno17_28 div:nth-child(2){left:.5rem;animation:_lds-ellipsis2_vno17_1 .6s infinite}._ellipsis_vno17_28 div:nth-child(3){left:2rem;animation:_lds-ellipsis2_vno17_1 .6s infinite}._ellipsis_vno17_28 div:nth-child(4){left:3.5rem;animation:_lds-ellipsis3_vno17_1 .6s infinite}@keyframes _lds-ellipsis1_vno17_1{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes _lds-ellipsis2_vno17_1{0%{transform:translate(0)}to{transform:translate(1.5rem)}}@keyframes _lds-ellipsis3_vno17_1{0%{transform:scale(1)}to{transform:scale(0)}}._blink_1d1tc_1{animation:_blink_1d1tc_1 1s step-start infinite}@keyframes _blink_1d1tc_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_1d1tc_13{transform:rotate(45deg)}._mirror_1d1tc_17{transform:rotate(180deg)}._notFound_1d1tc_21{display:grid;height:100vh;padding-top:20vh;background-color:var(--background-color-override, #101010)}._content_1d1tc_28{display:flex;flex-direction:column;color:#f6f6f6;align-items:center;text-align:center}.blink{animation:blink 1s step-start infinite}@keyframes blink{0%{opacity:100%}50%{opacity:20%}}.fourtyfive{transform:rotate(45deg)}@font-face{font-family:Open Sans;font-style:normal;font-display:swap;font-weight:300;src:url(./open-sans-latin-300-normal-BuA4N9V4.woff2) format("woff2"),url(./open-sans-latin-300-normal-B9VvyOsd.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Open Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./open-sans-latin-400-normal-D-erVzNr.woff2) format("woff2"),url(./open-sans-latin-400-normal-CvJMf42F.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Open Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./open-sans-latin-600-normal-B_B0eGjx.woff2) format("woff2"),url(./open-sans-latin-600-normal-Bd29oOVF.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scrollbar-color:rgba(255,255,255,.2) rgba(255,255,255,.01);scrollbar-width:thin}body,html{font-size:15px;font-family:Open Sans,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased;line-height:1.5}body,html,.App{margin:0 auto;overflow:hidden;overflow:clip;height:100vh;-webkit-user-select:none;user-select:none;-webkit-app-region:drag;isolation:isolate}button{all:unset;box-sizing:border-box}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}table{word-break:break-word}ul,ol{list-style:none;margin:0;padding:0}li{margin:0;padding:0}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}@media (max-width: 1600px){body,html,.App{font-size:14px}}::-webkit-scrollbar{width:6px;height:6px;-ms-overflow-style:-ms-autohiding-scrollbar}::-webkit-scrollbar-track{background:#ffffff03;border-radius:2px}::-webkit-scrollbar-thumb{background:#fff3;border-radius:2px}::-webkit-scrollbar-thumb:hover{background:#fff9}
1
+ ._blink_35w9k_1{animation:_blink_35w9k_1 1s step-start infinite}@keyframes _blink_35w9k_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_35w9k_13{transform:rotate(45deg)}._errorContainer_35w9k_17{width:100%;height:100%;display:grid;place-content:center;background-color:#101010;color:#f6f6f6}._error_35w9k_17{color:#fa5656}._report_35w9k_30{color:#578af4;text-decoration:underline;text-underline-offset:2px;cursor:pointer}._report_35w9k_30:hover{color:#ff7597}._blink_9onby_1{animation:_blink_9onby_1 1s step-start infinite}@keyframes _blink_9onby_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_9onby_13{transform:rotate(45deg)}._overlay_9onby_17{position:absolute;top:0;left:0;margin:0;width:100vw;height:100vh;padding:0;box-sizing:border-box;border:10px solid #f6f6f6;background-color:#101010;color:#f6f6f6;display:grid;place-content:center;text-align:center;cursor:pointer}._name_9onby_35{font-weight:600;margin-top:-10vh;line-height:1em;font-size:12vw;text-transform:uppercase}._message_9onby_43{color:#8a8a8a;line-height:2em;font-size:3vw}._blink_bz8cs_1{animation:_blink_bz8cs_1 1s step-start infinite}@keyframes _blink_bz8cs_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_bz8cs_13{transform:rotate(45deg)}._mirror_bz8cs_17{transform:rotate(180deg)}._subtle_bz8cs_21{background:#303030;color:#779be7;line-height:1em}._subtle_bz8cs_21:hover:not(:disabled):not(:active){background:#404040;color:#578af4}._subtle_bz8cs_21:active:not(:disabled){background:#2d2d2d;border-color:#202020}._subtle-white_bz8cs_35{background:#303030;color:#f6f6f6}._subtle-white_bz8cs_35:hover:not(:disabled):not(:active){background:#404040;color:#f6f6f6}._subtle-white_bz8cs_35:active:not(:disabled){background:#2d2d2d;border-color:#202020}._subtle-white_bz8cs_35:disabled{background:#303030}._primary_bz8cs_51{background:#2b5abc;color:#f6f6f6}._primary_bz8cs_51:hover:not(:disabled):not(:active){background:#3e75e8}._primary_bz8cs_51:active:not(:disabled){background:#0a43b9;border-color:#0036a6}._primary_bz8cs_51:disabled{opacity:.6}._destructive_bz8cs_66{background:#d20300;color:#f6f6f6}._destructive_bz8cs_66:hover:not(:disabled):not(:active){background:#ed3333;color:#f6f6f6}._destructive_bz8cs_66:active:not(:disabled){background:#c10000;border-color:#b20000}._subtle-destructive_bz8cs_79{background:#303030;color:#ff7878}._subtle-destructive_bz8cs_79:hover:not(:disabled):not(:active){background:#404040;color:#fa5656}._subtle-destructive_bz8cs_79:active:not(:disabled){background:#2d2d2d;border-color:#202020}._ghosted_bz8cs_92{background:transparent;color:#578af4}._ghosted_bz8cs_92:hover:not(:disabled):not(:active){background:#404040;color:#578af4}._ghosted_bz8cs_92:active:not(:disabled){background:#2d2d2d;border-color:#202020}._ghosted_bz8cs_92:disabled{opacity:.4}._ghosted-white_bz8cs_108{background:transparent;color:#f6f6f6}._ghosted-white_bz8cs_108:hover:not(:disabled):not(:active){background:#404040;color:#f6f6f6}._ghosted-white_bz8cs_108:active:not(:disabled){background:#2d2d2d;border-color:#202020}._ghosted-white_bz8cs_108:disabled{opacity:.4}._ghosted-destructive_bz8cs_124{background:transparent;color:#fa5656}._ghosted-destructive_bz8cs_124:hover:not(:disabled):not(:active){background:#404040;color:#fa5656}._ghosted-destructive_bz8cs_124:active:not(:disabled){background:#2d2d2d;border-color:#202020}._ghosted-destructive_bz8cs_124:disabled{opacity:.4}._baseIconButton_bz8cs_140{aspect-ratio:1;display:grid;place-content:center;border:1px solid transparent;border-radius:3px;cursor:pointer}._baseIconButton_bz8cs_140:focus-visible{outline:2px solid #578AF4;outline-offset:2px}._baseIconButton_bz8cs_140:disabled{opacity:.4;cursor:not-allowed}._small_bz8cs_157{height:1.5rem;font-size:calc(1rem - 3px)}._medium_bz8cs_162{height:2rem;width:2rem}._large_bz8cs_167{height:2.5rem;width:2.5rem}._xlarge_bz8cs_172{height:3rem;font-size:1.5rem}._blink_1nsno_1{animation:_blink_1nsno_1 1s step-start infinite}@keyframes _blink_1nsno_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_1nsno_13{transform:rotate(45deg)}._fadeable_1nsno_17{opacity:1;transition-property:opacity;transition-duration:.3s}._fadeable_1nsno_17._hidden_1nsno_22{opacity:0;pointer-events:none}._buttonContainer_1nsno_27{display:flex;flex-direction:column;row-gap:1rem;padding-top:.75rem;padding-left:.5em;position:fixed;left:0;top:0;z-index:200}._blink_1y6b8_1{animation:_blink_1y6b8_1 1s step-start infinite}@keyframes _blink_1y6b8_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_1y6b8_13{transform:rotate(45deg)}._fadeable_1y6b8_17{opacity:1;transition-property:opacity;transition-duration:.3s}._fadeable_1y6b8_17._hidden_1y6b8_22{opacity:0;pointer-events:none}._lockIcon_1y6b8_27{font-size:1.5rem;color:#77c785;padding:.5em;position:fixed;left:0;top:0;z-index:200}._blink_1erat_1{animation:_blink_1erat_1 1s step-start infinite}@keyframes _blink_1erat_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_1erat_13{transform:rotate(45deg)}._mirror_1erat_17{transform:rotate(180deg)}._subtle_1erat_21{background:#303030;color:#779be7;line-height:1em}._subtle_1erat_21:hover:not(:disabled):not(:active){background:#404040;color:#578af4}._subtle_1erat_21:active:not(:disabled){background:#2d2d2d;border-color:#202020}._subtle-white_1erat_35{background:#303030;color:#f6f6f6}._subtle-white_1erat_35:hover:not(:disabled):not(:active){background:#404040;color:#f6f6f6}._subtle-white_1erat_35:active:not(:disabled){background:#2d2d2d;border-color:#202020}._subtle-white_1erat_35:disabled{background:#303030}._primary_1erat_51{background:#2b5abc;color:#f6f6f6}._primary_1erat_51:hover:not(:disabled):not(:active){background:#3e75e8}._primary_1erat_51:active:not(:disabled){background:#0a43b9;border-color:#0036a6}._primary_1erat_51:disabled{opacity:.6}._destructive_1erat_66{background:#d20300;color:#f6f6f6}._destructive_1erat_66:hover:not(:disabled):not(:active){background:#ed3333;color:#f6f6f6}._destructive_1erat_66:active:not(:disabled){background:#c10000;border-color:#b20000}._subtle-destructive_1erat_79{background:#303030;color:#ff7878}._subtle-destructive_1erat_79:hover:not(:disabled):not(:active){background:#404040;color:#fa5656}._subtle-destructive_1erat_79:active:not(:disabled){background:#2d2d2d;border-color:#202020}._ghosted_1erat_92{background:transparent;color:#578af4}._ghosted_1erat_92:hover:not(:disabled):not(:active){background:#404040;color:#578af4}._ghosted_1erat_92:active:not(:disabled){background:#2d2d2d;border-color:#202020}._ghosted_1erat_92:disabled{opacity:.4}._ghosted-white_1erat_108{background:transparent;color:#f6f6f6}._ghosted-white_1erat_108:hover:not(:disabled):not(:active){background:#404040;color:#f6f6f6}._ghosted-white_1erat_108:active:not(:disabled){background:#2d2d2d;border-color:#202020}._ghosted-white_1erat_108:disabled{opacity:.4}._ghosted-destructive_1erat_124{background:transparent;color:#fa5656}._ghosted-destructive_1erat_124:hover:not(:disabled):not(:active){background:#404040;color:#fa5656}._ghosted-destructive_1erat_124:active:not(:disabled){background:#2d2d2d;border-color:#202020}._ghosted-destructive_1erat_124:disabled{opacity:.4}._baseButton_1erat_140{position:relative;display:flex;align-items:center;justify-content:center;gap:.5em;width:fit-content;padding-inline:1em;white-space:nowrap;border:1px solid transparent;border-radius:3px;cursor:pointer}._baseButton_1erat_140:disabled{opacity:.4;cursor:not-allowed}._baseButton_1erat_140:focus-visible{outline:2px solid #578AF4;outline-offset:2px}._baseButton_1erat_140._loading_1erat_161{cursor:wait}._baseButton_1erat_140._loading_1erat_161 ._content_1erat_164{opacity:0}._content_1erat_164{display:flex;align-items:center;gap:inherit}._loadingOverlay_1erat_174{position:absolute;display:grid;place-content:center}._spinner_1erat_180{animation:_spin_1erat_180 1s linear infinite;stroke-dasharray:8}@keyframes _spin_1erat_180{to{transform:rotate(360deg)}}._small_1erat_190{height:1.5rem;font-size:calc(1rem - 3px)}._medium_1erat_195{height:2rem;font-size:calc(1rem - 2px)}._large_1erat_200{height:2.5rem;font-weight:600}._xlarge_1erat_205{height:3rem;font-weight:600}._fluid_1erat_210{width:100%}._blink_qv1xq_1{animation:_blink_qv1xq_1 1s step-start infinite}@keyframes _blink_qv1xq_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_qv1xq_13{transform:rotate(45deg)}._dialog_qv1xq_17{position:fixed;top:10%;left:50%;transform:translate(-50%);padding-inline:1rem;min-width:min(600px,90vw);background-color:#202020;color:#f6f6f6;border-radius:3px;box-shadow:#00000026 0 3px 3px;border:1px solid #2d2d2d;outline:none}._backdrop_qv1xq_32{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#000000b3;transition:opacity .3s cubic-bezier(.45,1.005,0,1.005)}._backdrop_qv1xq_32[data-starting-style],._backdrop_qv1xq_32[data-ending-style]{opacity:0}._title_qv1xq_42{font-size:1rem;font-weight:600;padding-block:1rem;display:flex;align-items:center;justify-content:space-between}._body_qv1xq_51{display:flex;flex-direction:column;gap:.5rem;max-height:min(80vh,600px);overflow-y:auto}._footer_qv1xq_59{padding-block:1rem;display:flex;align-items:center;justify-content:end;gap:1rem}._blink_1r8lg_1{animation:_blink_1r8lg_1 1s step-start infinite}@keyframes _blink_1r8lg_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_1r8lg_13{transform:rotate(45deg)}._input_1r8lg_17{box-sizing:border-box;font-size:1rem;font-weight:inherit;color:#e2e2e2;border-radius:3px;border:1px solid transparent;padding-inline:.5em;outline:none}._input_1r8lg_17::placeholder{color:#8a8a8a;letter-spacing:0}._input_1r8lg_17:hover:not(:disabled):not(:read-only){background-color:#2d2d2d}._input_1r8lg_17:focus:not(:read-only){background-color:#404040;outline:2px solid #578AF4;outline-offset:2px}._input_1r8lg_17:disabled{opacity:.4;cursor:not-allowed}._input_1r8lg_17:read-only::placeholder{opacity:0}._subtle_1r8lg_47{background-color:#262626}._ghosted_1r8lg_51{background-color:transparent;padding:0}._medium_1r8lg_56{height:2rem}._large_1r8lg_60{height:2.5rem}._fluid_1r8lg_64{width:100%}._blink_pmy0j_1{animation:_blink_pmy0j_1 1s step-start infinite}@keyframes _blink_pmy0j_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_pmy0j_13{transform:rotate(45deg)}._link_pmy0j_17{display:flex;align-items:center;padding:.75rem 1.5rem;gap:.5rem;width:100%;border-left:4px solid transparent;color:#779be7;white-space:nowrap;cursor:pointer;transition-property:color;transition-duration:.1s}._link_pmy0j_17:hover{color:#ff7597;background-color:#101010}._link_pmy0j_17:active{background-color:#ffffff1a}._link_pmy0j_17:focus{outline:2px solid #578AF4;background-color:#101010}._link_pmy0j_17._current_pmy0j_41{background-color:#1a1a1a;border-left:4px solid #779BE7}._blink_1wpyp_1{animation:_blink_1wpyp_1 1s step-start infinite}@keyframes _blink_1wpyp_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_1wpyp_13{transform:rotate(45deg)}._linkIcon_1wpyp_17{margin-left:auto;transform:rotate(45deg)}._blink_1pu1m_1{animation:_blink_1pu1m_1 1s step-start infinite}@keyframes _blink_1pu1m_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_1pu1m_13{transform:rotate(45deg)}._copytag_1pu1m_17{display:flex;align-items:center}._action_1pu1m_22{border-top-right-radius:0;border-bottom-right-radius:0}._label_1pu1m_27{border-radius:3px 0 0 3px;border:1px solid #262626;background-color:#ffffff08;padding-inline:.5rem 1rem;line-height:1em;display:flex;align-items:center;color:#8a8a8a}._small_1pu1m_38{height:1.5rem;font-size:calc(1rem - 3px)}._medium_1pu1m_43{height:2rem;font-size:calc(1rem - 2px)}._large_1pu1m_48{height:2.5rem;font-weight:600}._copy_1pu1m_17{border-top-left-radius:0;border-bottom-left-radius:0}._blink_elv9y_1{animation:_blink_elv9y_1 1s step-start infinite}@keyframes _blink_elv9y_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_elv9y_13{transform:rotate(45deg)}._header_elv9y_17{font-size:calc(1rem - 2px);margin-left:1rem;color:#6c6c6c}._interfaces_elv9y_23{padding:.5rem;display:flex;flex-wrap:wrap;gap:.5rem}._interfaceCopy_elv9y_30{display:flex;align-items:center}._goIcon_elv9y_35{transform:rotate(45deg);margin-left:.25rem;margin-bottom:.25rem}._blink_1f3q6_1{animation:_blink_1f3q6_1 1s step-start infinite}@keyframes _blink_1f3q6_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_1f3q6_13{transform:rotate(45deg)}._separator_1f3q6_17{border-color:#ffffff1a}._backdrop_1f3q6_21{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#000000b3;transition:opacity .3s cubic-bezier(.45,1.005,0,1.005)}._backdrop_1f3q6_21[data-starting-style],._backdrop_1f3q6_21[data-ending-style]{opacity:0}._drawer_1f3q6_31{box-sizing:border-box;position:fixed;top:0;left:0;bottom:0;width:22rem;height:100vh;display:flex;flex-direction:column;padding-block:1rem;background-color:#202020;color:#f6f6f6;border-right:1px solid #2d2d2d}._drawer_1f3q6_31[data-open]{transform:translate(0);transition:transform .3s cubic-bezier(.45,1.005,0,1.005)}._drawer_1f3q6_31[data-starting-style],._drawer_1f3q6_31[data-ending-style]{transform:translate(-100%);transition:transform .5s cubic-bezier(.45,1.005,0,1.005)}@media (max-width: 500px){._drawer_1f3q6_31{width:100vw}}._header_1f3q6_60{display:flex;align-items:center;justify-content:space-between;height:3.5rem;padding-inline:1.5rem;font-weight:600;font-size:1.25rem}._body_1f3q6_70{flex:1;overflow-y:auto}._note_1f3q6_75{margin-left:auto;color:#fff3}._blink_o6gul_1{animation:_blink_o6gul_1 1s step-start infinite}@keyframes _blink_o6gul_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_o6gul_13{transform:rotate(45deg)}._header_o6gul_17{font-size:2rem;padding-bottom:.5rem;border-bottom:1px solid rgba(255,255,255,.1);font-weight:600}._subheader_o6gul_24{font-size:1.5rem;padding-bottom:.5rem;font-weight:600;display:flex;align-items:center;justify-content:space-between}._title_o6gul_33{font-size:1.375rem;padding:0 2rem;font-weight:600;display:flex;align-items:center;justify-content:space-between;color:#cfcfcf}._section_o6gul_43,._indent_o6gul_44{font-size:calc(1rem - 1px);display:flex;flex-direction:column;gap:1rem;color:#f6f6f6}._section_o6gul_43{position:relative;margin-top:2rem;max-width:850px}._indent_o6gul_44{padding:1rem;background-color:#101010}._paragraph_o6gul_63{padding:.5rem 0}._card_o6gul_67{position:relative;padding:2rem;background-color:#ffffff08;border:1px solid #2d2d2d;border-radius:3px}._highlight_o6gul_75{font-size:calc(1rem - 2px);color:#ffbc56;padding-inline:.25rem}._blockquote_o6gul_81{padding-left:.5rem;border-left:2px solid #ececec;background-color:#ffffff08}._error_o6gul_87{font-size:calc(1rem - 2px);display:block;color:#fa5656}._pad_o6gul_93{padding:0 2rem;max-height:550px;overflow-y:scroll}._table_o6gul_99{width:100%;border-collapse:collapse;font-size:calc(1rem - 2px);text-align:left;margin-bottom:2rem}._table_o6gul_99 thead{position:sticky;top:0;z-index:100;background-color:#101010}._table_o6gul_99 th{font-weight:400;color:#b1b1b1;white-space:nowrap;text-transform:capitalize}._table_o6gul_99 th,._table_o6gul_99 td{padding:.5rem}._table_o6gul_99 tr:nth-child(2n){background-color:#ffffff03}._table_o6gul_99 tr[data-warn=true],._table_o6gul_99 td[data-warn=true]{background-color:#3d2900}._listGroup_o6gul_130{padding:0 2rem}._listGroup_o6gul_130>li:not(:last-child){border-bottom:1px solid rgba(255,255,255,.1)}._listItem_o6gul_137{display:grid;grid-template-columns:1fr auto;align-items:center;gap:1rem;padding:.5rem 0}._fieldTitle_o6gul_145{color:#f6f6f6;font-size:1rem}._fieldDescription_o6gul_150{font-size:calc(1rem - 2px);color:#b1b1b1}._fieldError_o6gul_155{font-size:calc(1rem - 2px);color:#fa5656}._divider_o6gul_160{border:none;border-top:1px solid rgba(255,255,255,.1);margin:1rem -2rem}._overlay_o6gul_166{position:absolute;z-index:300;width:100%;height:100%;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-content:center;background-color:#0000001a}._loader_o6gul_177{width:4rem;height:4rem;background:#578af4;display:inline-block;border-radius:50%;box-sizing:border-box;animation:_animloader_o6gul_1 1s ease-in infinite}._empty_o6gul_187{background-color:#0000001a;text-align:center;color:#8a8a8a}._empty_o6gul_187 td{padding-block:5rem}._empty_o6gul_187 button{margin-top:1rem;margin-inline:auto}._inlineElements_o6gul_200{display:flex;align-items:center;flex-wrap:wrap}._inlineElements_o6gul_200._inner_o6gul_205{gap:.5rem}._inlineElements_o6gul_200._component_o6gul_208{gap:1rem}._inlineElements_o6gul_200._start_o6gul_211{justify-content:flex-start}._inlineElements_o6gul_200._end_o6gul_214{justify-content:flex-end}._inlineElements_o6gul_200._apart_o6gul_217{justify-content:space-between}@keyframes _animloader_o6gul_1{0%{transform:scale(0);opacity:.6}to{transform:scale(1);opacity:0}}._blink_hxuk5_1{animation:_blink_hxuk5_1 1s step-start infinite}@keyframes _blink_hxuk5_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_hxuk5_13{transform:rotate(45deg)}._log_hxuk5_17{font-size:calc(1rem - 2px);overflow-y:auto;-webkit-user-select:text;user-select:text;min-height:20vh;max-height:40vh;background-color:#101010;padding:.5rem}._apart_hxuk5_27{margin-left:auto}._logEntry_hxuk5_31{display:flex}._logEntry_hxuk5_31._INFO_hxuk5_34{color:#b1b1b1}._logEntry_hxuk5_31._WARN_hxuk5_37{color:#ffbc56}._logEntry_hxuk5_31._ERROR_hxuk5_40{color:#fa5656}._logEntry_hxuk5_31:hover{color:#f6f6f6}._logEntry_hxuk5_31 ._time_hxuk5_46{width:4.5em}._logEntry_hxuk5_31 ._origin_hxuk5_49{width:6em}._logEntry_hxuk5_31 ._msg_hxuk5_52{flex:1}._buttonBar_hxuk5_56{flex-wrap:wrap;padding-bottom:.5rem}._blink_vno17_1{animation:_blink_vno17_1 1s step-start infinite}@keyframes _blink_vno17_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_vno17_13{transform:rotate(45deg)}._mirror_vno17_17{transform:rotate(180deg)}._loader_vno17_21{display:grid;place-items:center;background-color:var(--background-color-override, #101010);height:100vh}._ellipsis_vno17_28{display:inline-block;position:relative;width:5rem}._ellipsis_vno17_28 div{position:absolute;width:.5rem;height:.5rem;border-radius:50%;background-color:var(--accent-color-override, #ff7597);animation-timing-function:cubic-bezier(0,1,1,0)}._ellipsis_vno17_28 div:nth-child(1){left:.5rem;animation:_lds-ellipsis1_vno17_1 .6s infinite}._ellipsis_vno17_28 div:nth-child(2){left:.5rem;animation:_lds-ellipsis2_vno17_1 .6s infinite}._ellipsis_vno17_28 div:nth-child(3){left:2rem;animation:_lds-ellipsis2_vno17_1 .6s infinite}._ellipsis_vno17_28 div:nth-child(4){left:3.5rem;animation:_lds-ellipsis3_vno17_1 .6s infinite}@keyframes _lds-ellipsis1_vno17_1{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes _lds-ellipsis2_vno17_1{0%{transform:translate(0)}to{transform:translate(1.5rem)}}@keyframes _lds-ellipsis3_vno17_1{0%{transform:scale(1)}to{transform:scale(0)}}._blink_1d1tc_1{animation:_blink_1d1tc_1 1s step-start infinite}@keyframes _blink_1d1tc_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_1d1tc_13{transform:rotate(45deg)}._mirror_1d1tc_17{transform:rotate(180deg)}._notFound_1d1tc_21{display:grid;height:100vh;padding-top:20vh;background-color:var(--background-color-override, #101010)}._content_1d1tc_28{display:flex;flex-direction:column;color:#f6f6f6;align-items:center;text-align:center}.blink{animation:blink 1s step-start infinite}@keyframes blink{0%{opacity:100%}50%{opacity:20%}}.fourtyfive{transform:rotate(45deg)}@font-face{font-family:Open Sans;font-style:normal;font-display:swap;font-weight:300;src:url(./open-sans-latin-300-normal-BuA4N9V4.woff2) format("woff2"),url(./open-sans-latin-300-normal-B9VvyOsd.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Open Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./open-sans-latin-400-normal-D-erVzNr.woff2) format("woff2"),url(./open-sans-latin-400-normal-CvJMf42F.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Open Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./open-sans-latin-600-normal-B_B0eGjx.woff2) format("woff2"),url(./open-sans-latin-600-normal-Bd29oOVF.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scrollbar-color:rgba(255,255,255,.2) rgba(255,255,255,.01);scrollbar-width:thin}body,html{font-size:15px;font-family:Open Sans,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased;line-height:1.5}body,html,.App{margin:0 auto;overflow:hidden;overflow:clip;height:100vh;-webkit-user-select:none;user-select:none;-webkit-app-region:drag;isolation:isolate}button{all:unset;box-sizing:border-box}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}table{word-break:break-word}ul,ol{list-style:none;margin:0;padding:0}li{margin:0;padding:0}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}@media (max-width: 1600px){body,html,.App{font-size:14px}}::-webkit-scrollbar{width:6px;height:6px;-ms-overflow-style:-ms-autohiding-scrollbar}::-webkit-scrollbar-track{background:#ffffff03;border-radius:2px}::-webkit-scrollbar-thumb{background:#fff3;border-radius:2px}::-webkit-scrollbar-thumb:hover{background:#fff9}
@@ -1,2 +1,2 @@
1
- import{x as t,r,m as i}from"./index-B81u4hxi.js";import"./vendor-q6fv0YT2.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]="ae43b062-a1cb-469a-9062-0929317fbf5f",e._sentryDebugIdIdentifier="sentry-dbid-ae43b062-a1cb-469a-9062-0929317fbf5f")}catch{}})();function d(e){if(e===null)return t;let n="";return e<0&&(n+="-"),e>0&&(n+="+"),n+=r(i(Math.abs(e))),n}function l(e){return e===null?"muted":e===0?null:e>0?"over":"under"}export{d as a,l as g};
2
- //# sourceMappingURL=offset-R98EXhWK.js.map
1
+ import{x as t,r,m as i}from"./index-B1K7rED_.js";import"./vendor-DmGkEtRj.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]="ae43b062-a1cb-469a-9062-0929317fbf5f",e._sentryDebugIdIdentifier="sentry-dbid-ae43b062-a1cb-469a-9062-0929317fbf5f")}catch{}})();function d(e){if(e===null)return t;let n="";return e<0&&(n+="-"),e>0&&(n+="+"),n+=r(i(Math.abs(e))),n}function l(e){return e===null?"muted":e===0?null:e>0?"over":"under"}export{d as a,l as g};
2
+ //# sourceMappingURL=offset-FplkvYRD.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"offset-R98EXhWK.js","sources":["../../src/common/utils/offset.ts"],"sourcesContent":["import { MaybeNumber } from 'ontime-types';\nimport { millisToString, removeLeadingZero } from 'ontime-utils';\n\nimport { enDash } from './styleUtils';\n\n/**\n * Formats offset text\n */\nexport function getOffsetText(offset: MaybeNumber): string {\n if (offset === null) {\n return enDash;\n }\n\n let offsetText = '';\n if (offset < 0) offsetText += '-';\n if (offset > 0) offsetText += '+';\n offsetText += removeLeadingZero(millisToString(Math.abs(offset)));\n return offsetText;\n}\n\nexport function getOffsetState(offset: MaybeNumber): 'over' | 'under' | 'muted' | null {\n if (offset === null) return 'muted';\n if (offset === 0) return null;\n // a positive value means that we are in over time aka behind schedule\n return offset > 0 ? 'over' : 'under';\n}\n"],"names":["getOffsetText","offset","enDash","offsetText","removeLeadingZero","millisToString","Math","abs","getOffsetState"],"mappings":"waAQO,SAASA,EAAcC,EAA6B,CACzD,GAAIA,IAAW,KACNC,OAAAA,EAGT,IAAIC,EAAa,GACbF,OAAAA,EAAS,IAAiBE,GAAA,KAC1BF,EAAS,IAAiBE,GAAA,KAC9BA,GAAcC,EAAkBC,EAAeC,KAAKC,IAAIN,CAAM,CAAC,CAAC,EACzDE,CACT,CAEO,SAASK,EAAeP,EAAwD,CACjFA,OAAAA,IAAW,KAAa,QACxBA,IAAW,EAAU,KAElBA,EAAS,EAAI,OAAS,OAC/B"}
1
+ {"version":3,"file":"offset-FplkvYRD.js","sources":["../../src/common/utils/offset.ts"],"sourcesContent":["import { MaybeNumber } from 'ontime-types';\nimport { millisToString, removeLeadingZero } from 'ontime-utils';\n\nimport { enDash } from './styleUtils';\n\n/**\n * Formats offset text\n */\nexport function getOffsetText(offset: MaybeNumber): string {\n if (offset === null) {\n return enDash;\n }\n\n let offsetText = '';\n if (offset < 0) offsetText += '-';\n if (offset > 0) offsetText += '+';\n offsetText += removeLeadingZero(millisToString(Math.abs(offset)));\n return offsetText;\n}\n\nexport function getOffsetState(offset: MaybeNumber): 'over' | 'under' | 'muted' | null {\n if (offset === null) return 'muted';\n if (offset === 0) return null;\n // a positive value means that we are in over time aka behind schedule\n return offset > 0 ? 'over' : 'under';\n}\n"],"names":["getOffsetText","offset","enDash","offsetText","removeLeadingZero","millisToString","Math","abs","getOffsetState"],"mappings":"waAQO,SAASA,EAAcC,EAA6B,CACzD,GAAIA,IAAW,KACNC,OAAAA,EAGT,IAAIC,EAAa,GACbF,OAAAA,EAAS,IAAiBE,GAAA,KAC1BF,EAAS,IAAiBE,GAAA,KAC9BA,GAAcC,EAAkBC,EAAeC,KAAKC,IAAIN,CAAM,CAAC,CAAC,EACzDE,CACT,CAEO,SAASK,EAAeP,EAAwD,CACjFA,OAAAA,IAAW,KAAa,QACxBA,IAAW,EAAU,KAElBA,EAAS,EAAI,OAAS,OAC/B"}
@@ -1,2 +1,2 @@
1
- import{I as o,M as u,bg as h}from"./index-B81u4hxi.js";import"./vendor-q6fv0YT2.js";(function(){try{var s=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new s.Error().stack;e&&(s._sentryDebugIds=s._sentryDebugIds||{},s._sentryDebugIds[e]="6208b6b5-d1dd-4f61-b7d8-3566cfd8f3a5",s._sentryDebugIdIdentifier="sentry-dbid-6208b6b5-d1dd-4f61-b7d8-3566cfd8f3a5")}catch{}})();function P(s){const{isAM:e,isPM:f,value:r}=I(s.toLowerCase()),n=m(r);if(n!==null)return n;const a=/[\s,:.]+/,[t,l,b]=r.split(a);let d=0,M=f;if(t!=null&&l!=null&&b!=null){let c=i(t);c===12&&(e&&(c=0),M=!1),d=c*o,d+=i(l)*u,d+=i(b)*h}else if(t!=null&&l==null&&b==null){const{inferredMillis:c,addAM:g}=p(t,e,f);d=c,M=g<12&&f}else if(t!=null&&l!=null&&b==null){let c=i(t);c===12&&(e&&(c=0),M=!1),d=c*o,d+=i(l)*u}return M&&(d+=12*o),d}function p(s,e,f){const r=s.length;let n=0,a=0;if(r===1)f||e?(n=i(s)*o,e&&(a=n)):n=i(s)*u;else if(r===2)f||e?(s==="12"&&e?n=0:n=i(s)*o,(e||s==="12")&&(a=12)):n=i(s)*u;else if(r===3)n=i(s[0])*o+i(s.substring(1))*u;else if(r===4)n=i(s.substring(0,2))*o+i(s.substring(2))*u;else if(r>=5){const t=i(s.substring(0,2)),l=i(s.substring(2,4)),b=i(s.substring(4));n=t*o+l*u+b*h}return{inferredMillis:n,addAM:a}}function m(s){const e=/(\d+)h(?:(\d+)(?!s))?/i.exec(s),f=e?i(e[1]):0,r=e!=null&&e[2]?i(e[2]):0,n=/(\d+)m/i.exec(s),a=n?i(n[1]):r,t=/(\d+)s/i.exec(s),l=t?i(t[1]):0;return e||n||t?f*o+a*u+l*h:null}function I(s){return s.endsWith("pm")?{isAM:!1,isPM:!0,value:s.slice(0,-2)}:s.endsWith("p")?{isAM:!1,isPM:!0,value:s.slice(0,-1)}:s.endsWith("am")?{isAM:!0,isPM:!1,value:s.slice(0,-2)}:s.endsWith("a")?{isAM:!0,isPM:!1,value:s.slice(0,-1)}:{isAM:!1,isPM:!1,value:s}}function i(s){const e=Number(s);return isNaN(e)?0:Math.abs(e)}export{P as p};
2
- //# sourceMappingURL=parseUserTime-YeFR8t3F.js.map
1
+ import{I as o,M as u,bg as h}from"./index-B1K7rED_.js";import"./vendor-DmGkEtRj.js";(function(){try{var s=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new s.Error().stack;e&&(s._sentryDebugIds=s._sentryDebugIds||{},s._sentryDebugIds[e]="6208b6b5-d1dd-4f61-b7d8-3566cfd8f3a5",s._sentryDebugIdIdentifier="sentry-dbid-6208b6b5-d1dd-4f61-b7d8-3566cfd8f3a5")}catch{}})();function P(s){const{isAM:e,isPM:f,value:r}=I(s.toLowerCase()),n=m(r);if(n!==null)return n;const a=/[\s,:.]+/,[t,l,b]=r.split(a);let d=0,M=f;if(t!=null&&l!=null&&b!=null){let c=i(t);c===12&&(e&&(c=0),M=!1),d=c*o,d+=i(l)*u,d+=i(b)*h}else if(t!=null&&l==null&&b==null){const{inferredMillis:c,addAM:g}=p(t,e,f);d=c,M=g<12&&f}else if(t!=null&&l!=null&&b==null){let c=i(t);c===12&&(e&&(c=0),M=!1),d=c*o,d+=i(l)*u}return M&&(d+=12*o),d}function p(s,e,f){const r=s.length;let n=0,a=0;if(r===1)f||e?(n=i(s)*o,e&&(a=n)):n=i(s)*u;else if(r===2)f||e?(s==="12"&&e?n=0:n=i(s)*o,(e||s==="12")&&(a=12)):n=i(s)*u;else if(r===3)n=i(s[0])*o+i(s.substring(1))*u;else if(r===4)n=i(s.substring(0,2))*o+i(s.substring(2))*u;else if(r>=5){const t=i(s.substring(0,2)),l=i(s.substring(2,4)),b=i(s.substring(4));n=t*o+l*u+b*h}return{inferredMillis:n,addAM:a}}function m(s){const e=/(\d+)h(?:(\d+)(?!s))?/i.exec(s),f=e?i(e[1]):0,r=e!=null&&e[2]?i(e[2]):0,n=/(\d+)m/i.exec(s),a=n?i(n[1]):r,t=/(\d+)s/i.exec(s),l=t?i(t[1]):0;return e||n||t?f*o+a*u+l*h:null}function I(s){return s.endsWith("pm")?{isAM:!1,isPM:!0,value:s.slice(0,-2)}:s.endsWith("p")?{isAM:!1,isPM:!0,value:s.slice(0,-1)}:s.endsWith("am")?{isAM:!0,isPM:!1,value:s.slice(0,-2)}:s.endsWith("a")?{isAM:!0,isPM:!1,value:s.slice(0,-1)}:{isAM:!1,isPM:!1,value:s}}function i(s){const e=Number(s);return isNaN(e)?0:Math.abs(e)}export{P as p};
2
+ //# sourceMappingURL=parseUserTime-0pNWLcr0.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseUserTime-YeFR8t3F.js","sources":["../../../../packages/utils/src/date-utils/parseUserTime.ts"],"sourcesContent":["import { MILLIS_PER_HOUR, MILLIS_PER_MINUTE, MILLIS_PER_SECOND } from './conversionUtils.js';\n\n/**\n * @description Parses a user given time string to a value in milliseconds\n * @param {string} value - time string\n * @returns {number} - value in milliseconds\n */\nexport function parseUserTime(value: string): number {\n const { isAM, isPM, value: parsingValue } = checkAmPm(value.toLowerCase());\n const maybeMillisFromMatchers = checkMatchers(parsingValue);\n if (maybeMillisFromMatchers !== null) {\n return maybeMillisFromMatchers;\n }\n\n // split string at known separators : , .\n const separatorRegex = /[\\s,:.]+/;\n const [first, second, third] = parsingValue.split(separatorRegex);\n\n let millis = 0;\n let addTwelve = isPM;\n\n if (first != null && second != null && third != null) {\n // if string has three sections, treat as [hours] [minutes] [seconds]\n let hours = parse(first);\n if (hours === 12) {\n if (isAM) {\n hours = 0;\n }\n addTwelve = false;\n }\n millis = hours * MILLIS_PER_HOUR;\n millis += parse(second) * MILLIS_PER_MINUTE;\n millis += parse(third) * MILLIS_PER_SECOND;\n } else if (first != null && second == null && third == null) {\n // we only have one section, infer separators\n const { inferredMillis, addAM } = inferSeparators(first, isAM, isPM);\n millis = inferredMillis;\n addTwelve = addAM < 12 && isPM;\n } else if (first != null && second != null && third == null) {\n // if string has two sections, treat as [hours] [minutes]\n let hours = parse(first);\n if (hours === 12) {\n if (isAM) {\n hours = 0;\n }\n addTwelve = false;\n }\n millis = hours * MILLIS_PER_HOUR;\n millis += parse(second) * MILLIS_PER_MINUTE;\n }\n\n if (addTwelve) {\n millis += 12 * MILLIS_PER_HOUR;\n }\n\n return millis;\n}\n\n/**\n * @description Utility function to infer separators from a whole string\n * @param {string} value\n * @param {boolean} isAM\n * @param {boolean} isPM\n */\nfunction inferSeparators(value: string, isAM: boolean, isPM: boolean) {\n const length = value.length;\n let inferredMillis = 0;\n let addAM = 0;\n\n if (length === 1) {\n if (isPM || isAM) {\n inferredMillis = parse(value) * MILLIS_PER_HOUR;\n if (isAM) {\n // this ensures we dont add 12 hours in the end\n addAM = inferredMillis;\n }\n } else {\n inferredMillis = parse(value) * MILLIS_PER_MINUTE;\n }\n } else if (length === 2) {\n if (isPM || isAM) {\n if (value === '12' && isAM) {\n inferredMillis = 0;\n } else {\n inferredMillis = parse(value) * MILLIS_PER_HOUR;\n }\n\n if (isAM || value === '12') {\n // this ensures we dont add 12 hours in the end\n addAM = 12;\n }\n } else {\n inferredMillis = parse(value) * MILLIS_PER_MINUTE;\n }\n } else if (length === 3) {\n inferredMillis = parse(value[0]) * MILLIS_PER_HOUR + parse(value.substring(1)) * MILLIS_PER_MINUTE;\n } else if (length === 4) {\n inferredMillis = parse(value.substring(0, 2)) * MILLIS_PER_HOUR + parse(value.substring(2)) * MILLIS_PER_MINUTE;\n } else if (length >= 5) {\n const hours = parse(value.substring(0, 2));\n const minutes = parse(value.substring(2, 4));\n const seconds = parse(value.substring(4));\n inferredMillis = hours * MILLIS_PER_HOUR + minutes * MILLIS_PER_MINUTE + seconds * MILLIS_PER_SECOND;\n }\n return { inferredMillis, addAM };\n}\n\n/**\n * @description Utility function to check if a string contain h / m / s indicators\n * @param {string} value\n */\nfunction checkMatchers(value: string): number | null {\n // match hours with any digits after, but don't match digits that are part of seconds\n const hoursMatch = /(\\d+)h(?:(\\d+)(?!s))?/i.exec(value);\n const hoursMatchValue = hoursMatch ? parse(hoursMatch[1]) : 0;\n // if there's a number after 'h' without a unit and it's not followed by 's', treat it as minutes\n const implicitMinutesValue = hoursMatch?.[2] ? parse(hoursMatch[2]) : 0;\n\n const minutesMatch = /(\\d+)m/i.exec(value);\n // only use implicit minutes if there's no explicit minutes match\n const minutesMatchValue = minutesMatch ? parse(minutesMatch[1]) : implicitMinutesValue;\n\n const secondsMatch = /(\\d+)s/i.exec(value);\n const secondsMatchValue = secondsMatch ? parse(secondsMatch[1]) : 0;\n\n if (hoursMatch || minutesMatch || secondsMatch) {\n return (\n hoursMatchValue * MILLIS_PER_HOUR + minutesMatchValue * MILLIS_PER_MINUTE + secondsMatchValue * MILLIS_PER_SECOND\n );\n }\n return null;\n}\n\n/**\n * @description Utility function to check if a string contain am/pm indicators\n * @description expects the value to be lowercased\n * @param {string} value\n * @returns {Object}\n * @returns {boolean} result.isAM - Whether we parsed an AM indicator\n * @returns {boolean} result.isPM - Whether we parsed a PM indicator\n * @returns {string} result.value - The original string with AM/PM indicator removed\n */\nfunction checkAmPm(value: string): { isAM: boolean; isPM: boolean; value: string } {\n if (value.endsWith('pm')) {\n return { isAM: false, isPM: true, value: value.slice(0, -2) };\n }\n\n if (value.endsWith('p')) {\n return { isAM: false, isPM: true, value: value.slice(0, -1) };\n }\n\n if (value.endsWith('am')) {\n return { isAM: true, isPM: false, value: value.slice(0, -2) };\n }\n\n if (value.endsWith('a')) {\n return { isAM: true, isPM: false, value: value.slice(0, -1) };\n }\n\n return { isAM: false, isPM: false, value };\n}\n\n/**\n * @description safe parse string to int\n * @param {string} valueAsString\n * @return {number}\n */\nfunction parse(valueAsString: string): number {\n const parsed = Number(valueAsString);\n if (isNaN(parsed)) {\n return 0;\n }\n return Math.abs(parsed);\n}\n"],"names":["parseUserTime","value","isAM","isPM","parsingValue","checkAmPm","toLowerCase","maybeMillisFromMatchers","checkMatchers","separatorRegex","first","second","third","split","millis","addTwelve","hours","parse","MILLIS_PER_HOUR","MILLIS_PER_MINUTE","MILLIS_PER_SECOND","inferredMillis","addAM","inferSeparators","length","substring","minutes","seconds","hoursMatch","exec","hoursMatchValue","implicitMinutesValue","minutesMatch","minutesMatchValue","secondsMatch","secondsMatchValue","endsWith","slice","valueAsString","parsed","Number","isNaN","Math","abs"],"mappings":"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"}
1
+ {"version":3,"file":"parseUserTime-0pNWLcr0.js","sources":["../../../../packages/utils/src/date-utils/parseUserTime.ts"],"sourcesContent":["import { MILLIS_PER_HOUR, MILLIS_PER_MINUTE, MILLIS_PER_SECOND } from './conversionUtils.js';\n\n/**\n * @description Parses a user given time string to a value in milliseconds\n * @param {string} value - time string\n * @returns {number} - value in milliseconds\n */\nexport function parseUserTime(value: string): number {\n const { isAM, isPM, value: parsingValue } = checkAmPm(value.toLowerCase());\n const maybeMillisFromMatchers = checkMatchers(parsingValue);\n if (maybeMillisFromMatchers !== null) {\n return maybeMillisFromMatchers;\n }\n\n // split string at known separators : , .\n const separatorRegex = /[\\s,:.]+/;\n const [first, second, third] = parsingValue.split(separatorRegex);\n\n let millis = 0;\n let addTwelve = isPM;\n\n if (first != null && second != null && third != null) {\n // if string has three sections, treat as [hours] [minutes] [seconds]\n let hours = parse(first);\n if (hours === 12) {\n if (isAM) {\n hours = 0;\n }\n addTwelve = false;\n }\n millis = hours * MILLIS_PER_HOUR;\n millis += parse(second) * MILLIS_PER_MINUTE;\n millis += parse(third) * MILLIS_PER_SECOND;\n } else if (first != null && second == null && third == null) {\n // we only have one section, infer separators\n const { inferredMillis, addAM } = inferSeparators(first, isAM, isPM);\n millis = inferredMillis;\n addTwelve = addAM < 12 && isPM;\n } else if (first != null && second != null && third == null) {\n // if string has two sections, treat as [hours] [minutes]\n let hours = parse(first);\n if (hours === 12) {\n if (isAM) {\n hours = 0;\n }\n addTwelve = false;\n }\n millis = hours * MILLIS_PER_HOUR;\n millis += parse(second) * MILLIS_PER_MINUTE;\n }\n\n if (addTwelve) {\n millis += 12 * MILLIS_PER_HOUR;\n }\n\n return millis;\n}\n\n/**\n * @description Utility function to infer separators from a whole string\n * @param {string} value\n * @param {boolean} isAM\n * @param {boolean} isPM\n */\nfunction inferSeparators(value: string, isAM: boolean, isPM: boolean) {\n const length = value.length;\n let inferredMillis = 0;\n let addAM = 0;\n\n if (length === 1) {\n if (isPM || isAM) {\n inferredMillis = parse(value) * MILLIS_PER_HOUR;\n if (isAM) {\n // this ensures we dont add 12 hours in the end\n addAM = inferredMillis;\n }\n } else {\n inferredMillis = parse(value) * MILLIS_PER_MINUTE;\n }\n } else if (length === 2) {\n if (isPM || isAM) {\n if (value === '12' && isAM) {\n inferredMillis = 0;\n } else {\n inferredMillis = parse(value) * MILLIS_PER_HOUR;\n }\n\n if (isAM || value === '12') {\n // this ensures we dont add 12 hours in the end\n addAM = 12;\n }\n } else {\n inferredMillis = parse(value) * MILLIS_PER_MINUTE;\n }\n } else if (length === 3) {\n inferredMillis = parse(value[0]) * MILLIS_PER_HOUR + parse(value.substring(1)) * MILLIS_PER_MINUTE;\n } else if (length === 4) {\n inferredMillis = parse(value.substring(0, 2)) * MILLIS_PER_HOUR + parse(value.substring(2)) * MILLIS_PER_MINUTE;\n } else if (length >= 5) {\n const hours = parse(value.substring(0, 2));\n const minutes = parse(value.substring(2, 4));\n const seconds = parse(value.substring(4));\n inferredMillis = hours * MILLIS_PER_HOUR + minutes * MILLIS_PER_MINUTE + seconds * MILLIS_PER_SECOND;\n }\n return { inferredMillis, addAM };\n}\n\n/**\n * @description Utility function to check if a string contain h / m / s indicators\n * @param {string} value\n */\nfunction checkMatchers(value: string): number | null {\n // match hours with any digits after, but don't match digits that are part of seconds\n const hoursMatch = /(\\d+)h(?:(\\d+)(?!s))?/i.exec(value);\n const hoursMatchValue = hoursMatch ? parse(hoursMatch[1]) : 0;\n // if there's a number after 'h' without a unit and it's not followed by 's', treat it as minutes\n const implicitMinutesValue = hoursMatch?.[2] ? parse(hoursMatch[2]) : 0;\n\n const minutesMatch = /(\\d+)m/i.exec(value);\n // only use implicit minutes if there's no explicit minutes match\n const minutesMatchValue = minutesMatch ? parse(minutesMatch[1]) : implicitMinutesValue;\n\n const secondsMatch = /(\\d+)s/i.exec(value);\n const secondsMatchValue = secondsMatch ? parse(secondsMatch[1]) : 0;\n\n if (hoursMatch || minutesMatch || secondsMatch) {\n return (\n hoursMatchValue * MILLIS_PER_HOUR + minutesMatchValue * MILLIS_PER_MINUTE + secondsMatchValue * MILLIS_PER_SECOND\n );\n }\n return null;\n}\n\n/**\n * @description Utility function to check if a string contain am/pm indicators\n * @description expects the value to be lowercased\n * @param {string} value\n * @returns {Object}\n * @returns {boolean} result.isAM - Whether we parsed an AM indicator\n * @returns {boolean} result.isPM - Whether we parsed a PM indicator\n * @returns {string} result.value - The original string with AM/PM indicator removed\n */\nfunction checkAmPm(value: string): { isAM: boolean; isPM: boolean; value: string } {\n if (value.endsWith('pm')) {\n return { isAM: false, isPM: true, value: value.slice(0, -2) };\n }\n\n if (value.endsWith('p')) {\n return { isAM: false, isPM: true, value: value.slice(0, -1) };\n }\n\n if (value.endsWith('am')) {\n return { isAM: true, isPM: false, value: value.slice(0, -2) };\n }\n\n if (value.endsWith('a')) {\n return { isAM: true, isPM: false, value: value.slice(0, -1) };\n }\n\n return { isAM: false, isPM: false, value };\n}\n\n/**\n * @description safe parse string to int\n * @param {string} valueAsString\n * @return {number}\n */\nfunction parse(valueAsString: string): number {\n const parsed = Number(valueAsString);\n if (isNaN(parsed)) {\n return 0;\n }\n return Math.abs(parsed);\n}\n"],"names":["parseUserTime","value","isAM","isPM","parsingValue","checkAmPm","toLowerCase","maybeMillisFromMatchers","checkMatchers","separatorRegex","first","second","third","split","millis","addTwelve","hours","parse","MILLIS_PER_HOUR","MILLIS_PER_MINUTE","MILLIS_PER_SECOND","inferredMillis","addAM","inferSeparators","length","substring","minutes","seconds","hoursMatch","exec","hoursMatchValue","implicitMinutesValue","minutesMatch","minutesMatchValue","secondsMatch","secondsMatchValue","endsWith","slice","valueAsString","parsed","Number","isNaN","Math","abs"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import"./vendor-q6fv0YT2.js";import{h as d}from"./index-B81u4hxi.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},a=new e.Error().stack;a&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[a]="c3dd2455-175d-4b86-9a69-48ba65f5aa3c",e._sentryDebugIdIdentifier="sentry-dbid-c3dd2455-175d-4b86-9a69-48ba65f5aa3c")}catch{}})();function r(e){return e===d.Play||e===d.Pause||e===d.Roll}export{r as i};
2
- //# sourceMappingURL=playbackstate-CPQdnF-k.js.map
1
+ import"./vendor-DmGkEtRj.js";import{h as d}from"./index-B1K7rED_.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},a=new e.Error().stack;a&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[a]="c3dd2455-175d-4b86-9a69-48ba65f5aa3c",e._sentryDebugIdIdentifier="sentry-dbid-c3dd2455-175d-4b86-9a69-48ba65f5aa3c")}catch{}})();function r(e){return e===d.Play||e===d.Pause||e===d.Roll}export{r as i};
2
+ //# sourceMappingURL=playbackstate-1HCEpVh5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"playbackstate-CPQdnF-k.js","sources":["../../../../packages/utils/src/playback-utils/playbackstate.ts"],"sourcesContent":["import { Playback } from 'ontime-types';\n\n/**\n * Utility checks whether the playback is considered to be active\n * @param state\n * @returns\n */\nexport function isPlaybackActive(state: Playback): boolean {\n return state === Playback.Play || state === Playback.Pause || state === Playback.Roll;\n}\n"],"names":["isPlaybackActive","state","Playback","Play","Pause","Roll"],"mappings":"+ZAOO,SAASA,EAAiBC,EAA0B,CACzD,OAAOA,IAAUC,EAASC,MAAQF,IAAUC,EAASE,OAASH,IAAUC,EAASG,IACnF"}
1
+ {"version":3,"file":"playbackstate-1HCEpVh5.js","sources":["../../../../packages/utils/src/playback-utils/playbackstate.ts"],"sourcesContent":["import { Playback } from 'ontime-types';\n\n/**\n * Utility checks whether the playback is considered to be active\n * @param state\n * @returns\n */\nexport function isPlaybackActive(state: Playback): boolean {\n return state === Playback.Play || state === Playback.Pause || state === Playback.Roll;\n}\n"],"names":["isPlaybackActive","state","Playback","Play","Pause","Roll"],"mappings":"+ZAOO,SAASA,EAAiBC,EAA0B,CACzD,OAAOA,IAAUC,EAASC,MAAQF,IAAUC,EAASE,OAASH,IAAUC,EAASG,IACnF"}
@@ -1,2 +1,2 @@
1
- import"./vendor-q6fv0YT2.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},r=new e.Error().stack;r&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[r]="a093213b-6fe4-4c44-8290-167b0bc050c8",e._sentryDebugIdIdentifier="sentry-dbid-a093213b-6fe4-4c44-8290-167b0bc050c8")}catch{}})();function f(e,r,n,o){return n?e.warningColor:o?e.dangerColor:r||e.normalColor}export{f as g};
2
- //# sourceMappingURL=presentation.utils-Cl-L3pHN.js.map
1
+ import"./vendor-DmGkEtRj.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},r=new e.Error().stack;r&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[r]="a093213b-6fe4-4c44-8290-167b0bc050c8",e._sentryDebugIdIdentifier="sentry-dbid-a093213b-6fe4-4c44-8290-167b0bc050c8")}catch{}})();function f(e,r,n,o){return n?e.warningColor:o?e.dangerColor:r||e.normalColor}export{f as g};
2
+ //# sourceMappingURL=presentation.utils-CLt2UhON.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"presentation.utils-Cl-L3pHN.js","sources":["../../src/views/utils/presentation.utils.ts"],"sourcesContent":["import { ViewSettings } from 'ontime-types';\n\n/**\n * Which colour should the timer have at a given moment\n */\nexport function getTimerColour(\n viewSettings: ViewSettings,\n timerColour: string | undefined,\n showWarning: boolean,\n showDanger: boolean,\n) {\n if (showWarning) return viewSettings.warningColor;\n if (showDanger) return viewSettings.dangerColor;\n return timerColour || viewSettings.normalColor;\n}\n"],"names":["getTimerColour","viewSettings","timerColour","showWarning","showDanger","warningColor","dangerColor","normalColor"],"mappings":"uXAKO,SAASA,EACdC,EACAC,EACAC,EACAC,EACA,CACID,OAAAA,EAAoBF,EAAaI,aACjCD,EAAmBH,EAAaK,YAC7BJ,GAAeD,EAAaM,WACrC"}
1
+ {"version":3,"file":"presentation.utils-CLt2UhON.js","sources":["../../src/views/utils/presentation.utils.ts"],"sourcesContent":["import { ViewSettings } from 'ontime-types';\n\n/**\n * Which colour should the timer have at a given moment\n */\nexport function getTimerColour(\n viewSettings: ViewSettings,\n timerColour: string | undefined,\n showWarning: boolean,\n showDanger: boolean,\n) {\n if (showWarning) return viewSettings.warningColor;\n if (showDanger) return viewSettings.dangerColor;\n return timerColour || viewSettings.normalColor;\n}\n"],"names":["getTimerColour","viewSettings","timerColour","showWarning","showDanger","warningColor","dangerColor","normalColor"],"mappings":"uXAKO,SAASA,EACdC,EACAC,EACAC,EACAC,EACA,CACID,OAAAA,EAAoBF,EAAaI,aACjCD,EAAmBH,EAAaK,YAC7BJ,GAAeD,EAAaM,WACrC"}
@@ -1,2 +1,2 @@
1
- import"./vendor-q6fv0YT2.js";import"./index-B81u4hxi.js";import{i as a,a as u,j as d}from"./useRundown-Bn6ZPsz0.js";(function(){try{var n=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new n.Error().stack;t&&(n._sentryDebugIds=n._sentryDebugIds||{},n._sentryDebugIds[t]="e4c32570-ac49-43bd-ae88-e3928a169dd0",n._sentryDebugIdIdentifier="sentry-dbid-e4c32570-ac49-43bd-ae88-e3928a169dd0")}catch{}})();function x(n,t){if(!t.length)return null;const e=t[0];return n[e]??null}function g(n){for(let t=0;t<n.length;t++){const e=n[t];if(a(e)&&u(e))return{firstEvent:e,firstIndex:t}}return{firstEvent:null,firstIndex:null}}function y(n,t){const e=t.at(-1);return e===void 0?null:n[e]??null}function I(n){if(n.length<1)return{lastEvent:null,lastIndex:null};for(let t=n.length-1;t>=0;t--){const e=n[t];if(a(e)&&u(e))return{lastEvent:e,lastIndex:t}}return{lastEvent:null,lastIndex:null}}function E(n,t,e){const i=t.findIndex(r=>r===e);if(i!==-1&&i+1<t.length){const r=i+1,l=t[r];return{entry:n[l],index:r}}else return{entry:null,index:null}}function p(n,t){const e=n.findIndex(i=>i.id===t);if(e<0)return{nextEvent:null,nextIndex:null};for(let i=e+1;i<n.length;i++){const r=n[i];if(a(r))return{nextEvent:r,nextIndex:i}}return{nextEvent:null,nextIndex:null}}function m(n,t,e){const i=t.findIndex(r=>r===e);if(i!==-1&&i-1>=0){const r=i-1,l=t[r];return{entry:n[l],index:r}}else return{entry:null,index:null}}const b=(n,t)=>{const e={...t,id:n.id,timeStart:n.timeStart,timeEnd:n.timeEnd,duration:n.duration,linkStart:n.linkStart,parent:n.parent,delay:n.delay,gap:n.gap,dayOffset:n.dayOffset,revision:n.revision},i={...n,id:t.id,timeStart:t.timeStart,timeEnd:t.timeEnd,duration:t.duration,linkStart:t.linkStart,parent:t.parent,delay:t.delay,gap:t.gap,dayOffset:t.dayOffset,revision:t.revision};return[e,i]};function h(n,t){return n.find(e=>e.id===t)}function N(n,t,e){let i=!1;for(let r=t.length-1;r>=0;r--){const l=t[r];if(!i&&l===e){i=!0;continue}const s=n[l];if(i&&d(s))return{entry:s,index:r}}return{entry:null,index:null}}function S(n,t,e){let i=!1;for(let r=0;r<t.length;r++){const l=t[r];if(!i&&l===e){i=!0;continue}const s=n[l];if(i&&d(s))return{entry:s,index:r}}return{entry:null,index:null}}export{p as a,g as b,I as c,m as d,y as e,x as f,h as g,N as h,S as i,E as j,b as s};
2
- //# sourceMappingURL=rundownUtils-CtVGQDQn.js.map
1
+ import"./vendor-DmGkEtRj.js";import"./index-B1K7rED_.js";import{i as a,a as u,j as d}from"./useRundown-BGhL8DEI.js";(function(){try{var n=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new n.Error().stack;t&&(n._sentryDebugIds=n._sentryDebugIds||{},n._sentryDebugIds[t]="e4c32570-ac49-43bd-ae88-e3928a169dd0",n._sentryDebugIdIdentifier="sentry-dbid-e4c32570-ac49-43bd-ae88-e3928a169dd0")}catch{}})();function x(n,t){if(!t.length)return null;const e=t[0];return n[e]??null}function g(n){for(let t=0;t<n.length;t++){const e=n[t];if(a(e)&&u(e))return{firstEvent:e,firstIndex:t}}return{firstEvent:null,firstIndex:null}}function y(n,t){const e=t.at(-1);return e===void 0?null:n[e]??null}function I(n){if(n.length<1)return{lastEvent:null,lastIndex:null};for(let t=n.length-1;t>=0;t--){const e=n[t];if(a(e)&&u(e))return{lastEvent:e,lastIndex:t}}return{lastEvent:null,lastIndex:null}}function E(n,t,e){const i=t.findIndex(r=>r===e);if(i!==-1&&i+1<t.length){const r=i+1,l=t[r];return{entry:n[l],index:r}}else return{entry:null,index:null}}function p(n,t){const e=n.findIndex(i=>i.id===t);if(e<0)return{nextEvent:null,nextIndex:null};for(let i=e+1;i<n.length;i++){const r=n[i];if(a(r))return{nextEvent:r,nextIndex:i}}return{nextEvent:null,nextIndex:null}}function m(n,t,e){const i=t.findIndex(r=>r===e);if(i!==-1&&i-1>=0){const r=i-1,l=t[r];return{entry:n[l],index:r}}else return{entry:null,index:null}}const b=(n,t)=>{const e={...t,id:n.id,timeStart:n.timeStart,timeEnd:n.timeEnd,duration:n.duration,linkStart:n.linkStart,parent:n.parent,delay:n.delay,gap:n.gap,dayOffset:n.dayOffset,revision:n.revision},i={...n,id:t.id,timeStart:t.timeStart,timeEnd:t.timeEnd,duration:t.duration,linkStart:t.linkStart,parent:t.parent,delay:t.delay,gap:t.gap,dayOffset:t.dayOffset,revision:t.revision};return[e,i]};function h(n,t){return n.find(e=>e.id===t)}function N(n,t,e){let i=!1;for(let r=t.length-1;r>=0;r--){const l=t[r];if(!i&&l===e){i=!0;continue}const s=n[l];if(i&&d(s))return{entry:s,index:r}}return{entry:null,index:null}}function S(n,t,e){let i=!1;for(let r=0;r<t.length;r++){const l=t[r];if(!i&&l===e){i=!0;continue}const s=n[l];if(i&&d(s))return{entry:s,index:r}}return{entry:null,index:null}}export{p as a,g as b,I as c,m as d,y as e,x as f,h as g,N as h,S as i,E as j,b as s};
2
+ //# sourceMappingURL=rundownUtils-D1oJpMdx.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rundownUtils-CtVGQDQn.js","sources":["../../../../packages/utils/src/rundown-utils/rundownUtils.ts"],"sourcesContent":["import type {\n EntryId,\n OntimeEntry,\n OntimeEvent,\n OntimeGroup,\n PlayableEvent,\n Rundown,\n RundownEntries,\n} from 'ontime-types';\nimport { isOntimeEvent, isOntimeGroup, isPlayableEvent } from 'ontime-types';\n\ntype IndexAndEntry = { entry: OntimeEntry | null; index: number | null };\n\n/**\n * Gets first event in a normalised rundown, if it exists\n */\nexport function getFirstNormal(entries: RundownEntries, order: EntryId[]): OntimeEntry | null {\n if (!order.length) {\n return null;\n }\n const eventId = order[0];\n return entries[eventId] ?? null;\n}\n\n/**\n * Gets first scheduled event in rundown, if it exists\n */\nexport function getFirstEvent(rundown: OntimeEntry[]): {\n firstEvent: PlayableEvent | null;\n firstIndex: number | null;\n} {\n for (let i = 0; i < rundown.length; i++) {\n const firstEvent = rundown[i];\n if (isOntimeEvent(firstEvent) && isPlayableEvent(firstEvent)) {\n return { firstEvent, firstIndex: i };\n }\n }\n return { firstEvent: null, firstIndex: null };\n}\n\n/**\n * Gets first scheduled event in a normalised rundown, if it exists\n */\nexport function getFirstEventNormal(\n rundown: RundownEntries,\n order: EntryId[],\n): {\n firstEvent: PlayableEvent | null;\n firstIndex: number | null;\n} {\n for (let i = 0; i < order.length; i++) {\n const firstId = order[i];\n const firstEvent = rundown[firstId];\n if (isOntimeEvent(firstEvent) && isPlayableEvent(firstEvent)) {\n return { firstEvent, firstIndex: i };\n }\n }\n return { firstEvent: null, firstIndex: null };\n}\n\n/**\n * Gets last event in a normalised rundown, if it exists\n */\nexport function getLastNormal(entries: RundownEntries, order: EntryId[]): OntimeEntry | null {\n const lastId = order.at(-1);\n if (lastId === undefined) {\n return null;\n }\n return entries[lastId] ?? null;\n}\n\n/**\n * Gets last scheduled event in rundown, if it exists\n */\nexport function getLastEvent(rundown: OntimeEntry[]): {\n lastEvent: PlayableEvent | null;\n lastIndex: number | null;\n} {\n if (rundown.length < 1) {\n return { lastEvent: null, lastIndex: null };\n }\n\n for (let i = rundown.length - 1; i >= 0; i--) {\n const lastEvent = rundown[i];\n if (isOntimeEvent(lastEvent) && isPlayableEvent(lastEvent)) {\n return { lastEvent, lastIndex: i };\n }\n }\n return { lastEvent: null, lastIndex: null };\n}\n\n/**\n * Gets last scheduled event in a normalised rundown, if it exists\n */\nexport function getLastEventNormal(\n rundown: RundownEntries,\n order: string[],\n): {\n lastEvent: OntimeEvent | null;\n lastIndex: number | null;\n} {\n if (order.length < 1) {\n return { lastEvent: null, lastIndex: null };\n }\n\n for (let i = order.length - 1; i >= 0; i--) {\n const lastId = order[i];\n const lastEvent = rundown[lastId];\n if (isOntimeEvent(lastEvent) && !lastEvent.skip) {\n return { lastEvent, lastIndex: i };\n }\n }\n return { lastEvent: null, lastIndex: null };\n}\n\n/**\n * Gets next entry in rundown, if it exists\n */\nexport function getNext(\n rundown: Pick<Rundown, 'entries' | 'order'>,\n currentId: string,\n): { nextEvent: OntimeEntry | null; nextIndex: number | null } {\n const index = rundown.order.findIndex((entryId) => entryId === currentId);\n if (index !== -1 && index + 1 < rundown.order.length) {\n const nextIndex = index + 1;\n const nextId = rundown.order[nextIndex];\n const nextEvent = rundown.entries[nextId];\n return { nextEvent, nextIndex };\n } else {\n return { nextEvent: null, nextIndex: null };\n }\n}\n\n/**\n * Gets next entry in rundown, if it exists\n */\nexport function getNextNormal(rundown: RundownEntries, order: string[], currentId: string): IndexAndEntry {\n const currentIndex = order.findIndex((id) => id === currentId);\n if (currentIndex !== -1 && currentIndex + 1 < order.length) {\n const index = currentIndex + 1;\n const nextId = order[index];\n const entry = rundown[nextId];\n return { entry, index };\n } else {\n return { entry: null, index: null };\n }\n}\n\n/**\n * Gets next scheduled event in rundown, if it exists\n */\nexport function getNextEvent(\n rundown: OntimeEntry[],\n currentId: string,\n): { nextEvent: OntimeEvent | null; nextIndex: number | null } {\n const index = rundown.findIndex((entry) => entry.id === currentId);\n if (index < 0) {\n return { nextEvent: null, nextIndex: null };\n }\n\n for (let i = index + 1; i < rundown.length; i++) {\n const nextEvent = rundown[i];\n if (isOntimeEvent(nextEvent)) {\n return { nextEvent, nextIndex: i };\n }\n }\n return { nextEvent: null, nextIndex: null };\n}\n\n/**\n * Gets next scheduled event in a normalised rundown, if it exists\n */\nexport function getNextEventNormal(\n entries: RundownEntries,\n order: EntryId[],\n currentId: string,\n): { nextEvent: OntimeEvent | null; nextIndex: number | null } {\n const index = order.findIndex((entryId) => entryId === currentId);\n if (index < 0) {\n return { nextEvent: null, nextIndex: null };\n }\n\n for (let i = index + 1; i < order.length; i++) {\n const nextId = order[i];\n const nextEvent = entries[nextId];\n if (isOntimeEvent(nextEvent)) {\n return { nextEvent, nextIndex: i };\n }\n }\n return { nextEvent: null, nextIndex: null };\n}\n\n/**\n * Gets previous entry in rundown, if it exists\n */\nexport function getPrevious(rundown: Pick<Rundown, 'entries' | 'order'>, currentId: string): IndexAndEntry {\n const currentIndex = rundown.order.findIndex((entryId) => entryId === currentId);\n\n if (currentIndex > 1) {\n const index = currentIndex - 1;\n const previousId = rundown.order[index];\n const entry = rundown.entries[previousId];\n return { entry, index };\n } else {\n return { entry: null, index: null };\n }\n}\n\n/**\n * Gets previous entry in a normalised rundown, if it exists\n */\nexport function getPreviousNormal(entries: RundownEntries, order: string[], currentId: string): IndexAndEntry {\n const currentIndex = order.findIndex((id) => id === currentId);\n\n if (currentIndex !== -1 && currentIndex - 1 >= 0) {\n const index = currentIndex - 1;\n const previousId = order[index];\n const entry = entries[previousId];\n return { entry, index };\n } else {\n return { entry: null, index: null };\n }\n}\n\n/**\n * Gets previous scheduled event in rundown, if it exists\n */\nexport function getPreviousEvent(\n rundown: Pick<Rundown, 'entries' | 'order'>,\n currentId: string,\n): { previousEvent: OntimeEvent | null; previousIndex: number | null } {\n const index = rundown.order.findIndex((entryId) => entryId === currentId);\n if (index < 0) {\n return { previousEvent: null, previousIndex: null };\n }\n for (let i = index - 1; i >= 0; i--) {\n const previousId = rundown.order[i];\n const previousEvent = rundown.entries[previousId];\n if (isOntimeEvent(previousEvent)) {\n return { previousEvent, previousIndex: i };\n }\n }\n return { previousEvent: null, previousIndex: null };\n}\n\n/**\n * Gets previous scheduled event in a normalised rundown, if it exists\n */\nexport function getPreviousEventNormal(\n entries: RundownEntries,\n order: EntryId[],\n currentId: string,\n): { previousEvent: OntimeEvent | null; previousIndex: number | null } {\n const index = order.findIndex((entryId) => entryId === currentId);\n if (index < 0) {\n return { previousEvent: null, previousIndex: null };\n }\n for (let i = index - 1; i >= 0; i--) {\n const previousId = order[i];\n const previousEvent = entries[previousId];\n if (isOntimeEvent(previousEvent)) {\n return { previousEvent, previousIndex: i };\n }\n }\n return { previousEvent: null, previousIndex: null };\n}\n\n/**\n * @description swaps two OntimeEvents in the rundown\n */\nexport const swapEventData = (eventA: OntimeEvent, eventB: OntimeEvent): [newA: OntimeEvent, newB: OntimeEvent] => {\n const newA = {\n ...eventB,\n // events keep the ID\n id: eventA.id,\n // events keep the schedule\n timeStart: eventA.timeStart,\n timeEnd: eventA.timeEnd,\n duration: eventA.duration,\n linkStart: eventA.linkStart,\n parent: eventA.parent,\n // keep schedule metadata\n delay: eventA.delay,\n gap: eventA.gap,\n dayOffset: eventA.dayOffset,\n // keep revision number\n revision: eventA.revision,\n };\n\n const newB = {\n ...eventA,\n // events keep the ID\n id: eventB.id,\n // events keep the schedule\n timeStart: eventB.timeStart,\n timeEnd: eventB.timeEnd,\n duration: eventB.duration,\n linkStart: eventB.linkStart,\n parent: eventB.parent,\n // keep schedule metadata\n delay: eventB.delay,\n gap: eventB.gap,\n dayOffset: eventB.dayOffset,\n // keep revision number\n revision: eventB.revision,\n };\n\n return [newA, newB];\n};\n\nexport function getEventWithId(rundown: OntimeEntry[], id: string): OntimeEntry | undefined {\n return rundown.find((event) => event.id === id);\n}\n\n/**\n * Gets relevant group element for a given ID\n */\nexport function getPreviousGroupNormal(rundown: RundownEntries, order: string[], currentId: string): IndexAndEntry {\n let foundCurrentEvent = false;\n // Iterate backwards through the rundown to find the current event\n for (let index = order.length - 1; index >= 0; index--) {\n const id = order[index];\n if (!foundCurrentEvent && id === currentId) {\n // set the flag when the current event is found\n foundCurrentEvent = true;\n continue;\n }\n // the first group before the current event is the relevant one\n const entry = rundown[id];\n if (foundCurrentEvent && isOntimeGroup(entry)) {\n return { entry, index };\n }\n }\n // no groups exist before current event\n return { entry: null, index: null };\n}\n\n/**\n * Gets next group element for a given ID\n */\nexport function getNextGroupNormal(rundown: RundownEntries, order: string[], currentId: string): IndexAndEntry {\n let foundCurrentEvent = false;\n // Iterate backwards through the rundown to find the current event\n for (let index = 0; index < order.length; index++) {\n const id = order[index];\n if (!foundCurrentEvent && id === currentId) {\n // set the flag when the current event is found\n foundCurrentEvent = true;\n continue;\n }\n // the first group before the current event is the relevant one\n const entry = rundown[id];\n if (foundCurrentEvent && isOntimeGroup(entry)) {\n return { entry, index };\n }\n }\n // no groups exist before current event\n return { entry: null, index: null };\n}\n\n/**\n * Gets relevant group element for a given ID\n */\nexport function getPreviousGroup(rundown: Pick<Rundown, 'entries' | 'order'>, currentId: EntryId): OntimeGroup | null {\n const currentEvent = rundown.entries[currentId];\n\n // check if event is inside a group\n if (isOntimeEvent(currentEvent) && currentEvent.parent) {\n return rundown.entries[currentEvent.parent] as OntimeGroup;\n }\n\n let foundCurrentEvent = false;\n // Iterate backwards through the rundown to find the current event\n for (let i = rundown.order.length - 1; i >= 0; i--) {\n const entryId = rundown.order[i];\n const entry = rundown.entries[entryId];\n if (!foundCurrentEvent && entry.id === currentId) {\n // set the flag when the current event is found\n foundCurrentEvent = true;\n continue;\n }\n // the first group before the current event is the relevant one\n if (foundCurrentEvent && isOntimeGroup(entry)) {\n return entry;\n }\n }\n // no groups exist before null event\n return null;\n}\n"],"names":["getFirstNormal","entries","order","length","eventId","getFirstEvent","rundown","i","firstEvent","isOntimeEvent","isPlayableEvent","firstIndex","getLastNormal","lastId","at","undefined","getLastEvent","lastEvent","lastIndex","getNextNormal","currentId","currentIndex","findIndex","id","index","nextId","entry","getNextEvent","nextEvent","nextIndex","getPreviousNormal","previousId","swapEventData","eventA","eventB","newA","timeStart","timeEnd","duration","linkStart","parent","delay","gap","dayOffset","revision","newB","getEventWithId","find","event","getPreviousGroupNormal","foundCurrentEvent","isOntimeGroup","getNextGroupNormal"],"mappings":"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"}
1
+ {"version":3,"file":"rundownUtils-D1oJpMdx.js","sources":["../../../../packages/utils/src/rundown-utils/rundownUtils.ts"],"sourcesContent":["import type {\n EntryId,\n OntimeEntry,\n OntimeEvent,\n OntimeGroup,\n PlayableEvent,\n Rundown,\n RundownEntries,\n} from 'ontime-types';\nimport { isOntimeEvent, isOntimeGroup, isPlayableEvent } from 'ontime-types';\n\ntype IndexAndEntry = { entry: OntimeEntry | null; index: number | null };\n\n/**\n * Gets first event in a normalised rundown, if it exists\n */\nexport function getFirstNormal(entries: RundownEntries, order: EntryId[]): OntimeEntry | null {\n if (!order.length) {\n return null;\n }\n const eventId = order[0];\n return entries[eventId] ?? null;\n}\n\n/**\n * Gets first scheduled event in rundown, if it exists\n */\nexport function getFirstEvent(rundown: OntimeEntry[]): {\n firstEvent: PlayableEvent | null;\n firstIndex: number | null;\n} {\n for (let i = 0; i < rundown.length; i++) {\n const firstEvent = rundown[i];\n if (isOntimeEvent(firstEvent) && isPlayableEvent(firstEvent)) {\n return { firstEvent, firstIndex: i };\n }\n }\n return { firstEvent: null, firstIndex: null };\n}\n\n/**\n * Gets first scheduled event in a normalised rundown, if it exists\n */\nexport function getFirstEventNormal(\n rundown: RundownEntries,\n order: EntryId[],\n): {\n firstEvent: PlayableEvent | null;\n firstIndex: number | null;\n} {\n for (let i = 0; i < order.length; i++) {\n const firstId = order[i];\n const firstEvent = rundown[firstId];\n if (isOntimeEvent(firstEvent) && isPlayableEvent(firstEvent)) {\n return { firstEvent, firstIndex: i };\n }\n }\n return { firstEvent: null, firstIndex: null };\n}\n\n/**\n * Gets last event in a normalised rundown, if it exists\n */\nexport function getLastNormal(entries: RundownEntries, order: EntryId[]): OntimeEntry | null {\n const lastId = order.at(-1);\n if (lastId === undefined) {\n return null;\n }\n return entries[lastId] ?? null;\n}\n\n/**\n * Gets last scheduled event in rundown, if it exists\n */\nexport function getLastEvent(rundown: OntimeEntry[]): {\n lastEvent: PlayableEvent | null;\n lastIndex: number | null;\n} {\n if (rundown.length < 1) {\n return { lastEvent: null, lastIndex: null };\n }\n\n for (let i = rundown.length - 1; i >= 0; i--) {\n const lastEvent = rundown[i];\n if (isOntimeEvent(lastEvent) && isPlayableEvent(lastEvent)) {\n return { lastEvent, lastIndex: i };\n }\n }\n return { lastEvent: null, lastIndex: null };\n}\n\n/**\n * Gets last scheduled event in a normalised rundown, if it exists\n */\nexport function getLastEventNormal(\n rundown: RundownEntries,\n order: string[],\n): {\n lastEvent: OntimeEvent | null;\n lastIndex: number | null;\n} {\n if (order.length < 1) {\n return { lastEvent: null, lastIndex: null };\n }\n\n for (let i = order.length - 1; i >= 0; i--) {\n const lastId = order[i];\n const lastEvent = rundown[lastId];\n if (isOntimeEvent(lastEvent) && !lastEvent.skip) {\n return { lastEvent, lastIndex: i };\n }\n }\n return { lastEvent: null, lastIndex: null };\n}\n\n/**\n * Gets next entry in rundown, if it exists\n */\nexport function getNext(\n rundown: Pick<Rundown, 'entries' | 'order'>,\n currentId: string,\n): { nextEvent: OntimeEntry | null; nextIndex: number | null } {\n const index = rundown.order.findIndex((entryId) => entryId === currentId);\n if (index !== -1 && index + 1 < rundown.order.length) {\n const nextIndex = index + 1;\n const nextId = rundown.order[nextIndex];\n const nextEvent = rundown.entries[nextId];\n return { nextEvent, nextIndex };\n } else {\n return { nextEvent: null, nextIndex: null };\n }\n}\n\n/**\n * Gets next entry in rundown, if it exists\n */\nexport function getNextNormal(rundown: RundownEntries, order: string[], currentId: string): IndexAndEntry {\n const currentIndex = order.findIndex((id) => id === currentId);\n if (currentIndex !== -1 && currentIndex + 1 < order.length) {\n const index = currentIndex + 1;\n const nextId = order[index];\n const entry = rundown[nextId];\n return { entry, index };\n } else {\n return { entry: null, index: null };\n }\n}\n\n/**\n * Gets next scheduled event in rundown, if it exists\n */\nexport function getNextEvent(\n rundown: OntimeEntry[],\n currentId: string,\n): { nextEvent: OntimeEvent | null; nextIndex: number | null } {\n const index = rundown.findIndex((entry) => entry.id === currentId);\n if (index < 0) {\n return { nextEvent: null, nextIndex: null };\n }\n\n for (let i = index + 1; i < rundown.length; i++) {\n const nextEvent = rundown[i];\n if (isOntimeEvent(nextEvent)) {\n return { nextEvent, nextIndex: i };\n }\n }\n return { nextEvent: null, nextIndex: null };\n}\n\n/**\n * Gets next scheduled event in a normalised rundown, if it exists\n */\nexport function getNextEventNormal(\n entries: RundownEntries,\n order: EntryId[],\n currentId: string,\n): { nextEvent: OntimeEvent | null; nextIndex: number | null } {\n const index = order.findIndex((entryId) => entryId === currentId);\n if (index < 0) {\n return { nextEvent: null, nextIndex: null };\n }\n\n for (let i = index + 1; i < order.length; i++) {\n const nextId = order[i];\n const nextEvent = entries[nextId];\n if (isOntimeEvent(nextEvent)) {\n return { nextEvent, nextIndex: i };\n }\n }\n return { nextEvent: null, nextIndex: null };\n}\n\n/**\n * Gets previous entry in rundown, if it exists\n */\nexport function getPrevious(rundown: Pick<Rundown, 'entries' | 'order'>, currentId: string): IndexAndEntry {\n const currentIndex = rundown.order.findIndex((entryId) => entryId === currentId);\n\n if (currentIndex > 1) {\n const index = currentIndex - 1;\n const previousId = rundown.order[index];\n const entry = rundown.entries[previousId];\n return { entry, index };\n } else {\n return { entry: null, index: null };\n }\n}\n\n/**\n * Gets previous entry in a normalised rundown, if it exists\n */\nexport function getPreviousNormal(entries: RundownEntries, order: string[], currentId: string): IndexAndEntry {\n const currentIndex = order.findIndex((id) => id === currentId);\n\n if (currentIndex !== -1 && currentIndex - 1 >= 0) {\n const index = currentIndex - 1;\n const previousId = order[index];\n const entry = entries[previousId];\n return { entry, index };\n } else {\n return { entry: null, index: null };\n }\n}\n\n/**\n * Gets previous scheduled event in rundown, if it exists\n */\nexport function getPreviousEvent(\n rundown: Pick<Rundown, 'entries' | 'order'>,\n currentId: string,\n): { previousEvent: OntimeEvent | null; previousIndex: number | null } {\n const index = rundown.order.findIndex((entryId) => entryId === currentId);\n if (index < 0) {\n return { previousEvent: null, previousIndex: null };\n }\n for (let i = index - 1; i >= 0; i--) {\n const previousId = rundown.order[i];\n const previousEvent = rundown.entries[previousId];\n if (isOntimeEvent(previousEvent)) {\n return { previousEvent, previousIndex: i };\n }\n }\n return { previousEvent: null, previousIndex: null };\n}\n\n/**\n * Gets previous scheduled event in a normalised rundown, if it exists\n */\nexport function getPreviousEventNormal(\n entries: RundownEntries,\n order: EntryId[],\n currentId: string,\n): { previousEvent: OntimeEvent | null; previousIndex: number | null } {\n const index = order.findIndex((entryId) => entryId === currentId);\n if (index < 0) {\n return { previousEvent: null, previousIndex: null };\n }\n for (let i = index - 1; i >= 0; i--) {\n const previousId = order[i];\n const previousEvent = entries[previousId];\n if (isOntimeEvent(previousEvent)) {\n return { previousEvent, previousIndex: i };\n }\n }\n return { previousEvent: null, previousIndex: null };\n}\n\n/**\n * @description swaps two OntimeEvents in the rundown\n */\nexport const swapEventData = (eventA: OntimeEvent, eventB: OntimeEvent): [newA: OntimeEvent, newB: OntimeEvent] => {\n const newA = {\n ...eventB,\n // events keep the ID\n id: eventA.id,\n // events keep the schedule\n timeStart: eventA.timeStart,\n timeEnd: eventA.timeEnd,\n duration: eventA.duration,\n linkStart: eventA.linkStart,\n parent: eventA.parent,\n // keep schedule metadata\n delay: eventA.delay,\n gap: eventA.gap,\n dayOffset: eventA.dayOffset,\n // keep revision number\n revision: eventA.revision,\n };\n\n const newB = {\n ...eventA,\n // events keep the ID\n id: eventB.id,\n // events keep the schedule\n timeStart: eventB.timeStart,\n timeEnd: eventB.timeEnd,\n duration: eventB.duration,\n linkStart: eventB.linkStart,\n parent: eventB.parent,\n // keep schedule metadata\n delay: eventB.delay,\n gap: eventB.gap,\n dayOffset: eventB.dayOffset,\n // keep revision number\n revision: eventB.revision,\n };\n\n return [newA, newB];\n};\n\nexport function getEventWithId(rundown: OntimeEntry[], id: string): OntimeEntry | undefined {\n return rundown.find((event) => event.id === id);\n}\n\n/**\n * Gets relevant group element for a given ID\n */\nexport function getPreviousGroupNormal(rundown: RundownEntries, order: string[], currentId: string): IndexAndEntry {\n let foundCurrentEvent = false;\n // Iterate backwards through the rundown to find the current event\n for (let index = order.length - 1; index >= 0; index--) {\n const id = order[index];\n if (!foundCurrentEvent && id === currentId) {\n // set the flag when the current event is found\n foundCurrentEvent = true;\n continue;\n }\n // the first group before the current event is the relevant one\n const entry = rundown[id];\n if (foundCurrentEvent && isOntimeGroup(entry)) {\n return { entry, index };\n }\n }\n // no groups exist before current event\n return { entry: null, index: null };\n}\n\n/**\n * Gets next group element for a given ID\n */\nexport function getNextGroupNormal(rundown: RundownEntries, order: string[], currentId: string): IndexAndEntry {\n let foundCurrentEvent = false;\n // Iterate backwards through the rundown to find the current event\n for (let index = 0; index < order.length; index++) {\n const id = order[index];\n if (!foundCurrentEvent && id === currentId) {\n // set the flag when the current event is found\n foundCurrentEvent = true;\n continue;\n }\n // the first group before the current event is the relevant one\n const entry = rundown[id];\n if (foundCurrentEvent && isOntimeGroup(entry)) {\n return { entry, index };\n }\n }\n // no groups exist before current event\n return { entry: null, index: null };\n}\n\n/**\n * Gets relevant group element for a given ID\n */\nexport function getPreviousGroup(rundown: Pick<Rundown, 'entries' | 'order'>, currentId: EntryId): OntimeGroup | null {\n const currentEvent = rundown.entries[currentId];\n\n // check if event is inside a group\n if (isOntimeEvent(currentEvent) && currentEvent.parent) {\n return rundown.entries[currentEvent.parent] as OntimeGroup;\n }\n\n let foundCurrentEvent = false;\n // Iterate backwards through the rundown to find the current event\n for (let i = rundown.order.length - 1; i >= 0; i--) {\n const entryId = rundown.order[i];\n const entry = rundown.entries[entryId];\n if (!foundCurrentEvent && entry.id === currentId) {\n // set the flag when the current event is found\n foundCurrentEvent = true;\n continue;\n }\n // the first group before the current event is the relevant one\n if (foundCurrentEvent && isOntimeGroup(entry)) {\n return entry;\n }\n }\n // no groups exist before null event\n return null;\n}\n"],"names":["getFirstNormal","entries","order","length","eventId","getFirstEvent","rundown","i","firstEvent","isOntimeEvent","isPlayableEvent","firstIndex","getLastNormal","lastId","at","undefined","getLastEvent","lastEvent","lastIndex","getNextNormal","currentId","currentIndex","findIndex","id","index","nextId","entry","getNextEvent","nextEvent","nextIndex","getPreviousNormal","previousId","swapEventData","eventA","eventB","newA","timeStart","timeEnd","duration","linkStart","parent","delay","gap","dayOffset","revision","newB","getEventWithId","find","event","getPreviousGroupNormal","foundCurrentEvent","isOntimeGroup","getNextGroupNormal"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{h as y,j as S}from"./vendor-q6fv0YT2.js";import{T as u,y as d,h as g}from"./index-B81u4hxi.js";import{b as f,a as v}from"./viewUtils-B8Dr4GHH.js";import{i as x}from"./playbackstate-CPQdnF-k.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]="6e251596-f07c-46e5-91d1-d829893d3245",e._sentryDebugIdIdentifier="sentry-dbid-6e251596-f07c-46e5-91d1-d829893d3245")}catch{}})();const m=(e,t,n)=>{for(;e<t;){const o=Math.floor((e+t)/2);if(o===e)break;n(o)?e=o:t=o}return e};function C({children:e,mode:t="multi",min:n=16,max:o=256,...s}){const i=y.useRef(null),a=y.useCallback(()=>{const r=i.current;return r?r.scrollHeight>r.clientHeight||r.scrollWidth>r.clientWidth:!1},[]),c=y.useCallback(()=>{const r=i.current;if(!r)return;const l=r.style.visibility;r.style.visibility="hidden";const h=m(n,o+1,b=>(r.style.fontSize=`${b}px`,!a()));r.style.fontSize=`${h}px`,r.style.visibility=l},[a,n,o]);return y.useEffect(()=>{const r=i.current;if(!r)return;c();const l=new ResizeObserver(c);return l.observe(r),()=>l.disconnect()},[e,t,c]),S.jsx("div",{ref:i,style:{whiteSpace:t==="single"?"nowrap":"normal"},...s,children:e})}function F(e){return e.text!==""&&e.visible}function z(e){return e===g.Play||e===g.Roll}function E(e,t){return(e??0)+(t??0)}function P(e){return e!==u.None&&e!==u.Clock}function k(e){return e!==u.Clock}const w={4:28,5:28,6:25,8:18,9:18};function I(e,t){const n=e.length;let o=100/(n-1)*1.25;return w[n]&&(o=w[n]),t&&(o*=.6),o}function W(e,t,n,o,s,i){return i?{showEndMessage:!1,showFinished:!1,showWarning:!1,showDanger:!1}:e===u.CountDown||t?{showEndMessage:n===d.Overtime&&o&&s!=="",showFinished:n===d.Overtime,showWarning:n===d.Warning,showDanger:n===d.Danger}:{showEndMessage:!1,showFinished:!1,showWarning:!1,showDanger:!1}}function B(e,t,n,o,s,i){if(!i){if(e.timer.secondarySource==="aux1"||e.timer.secondarySource==="aux2"||e.timer.secondarySource==="aux3")return v(t,u.CountDown,n,{removeSeconds:o,removeLeadingZero:s});if(e.timer.secondarySource==="secondary"&&e.secondary)return e.secondary}}function O(e,t,n,o,s,i){if(s===g.Stop)return{showNow:!1,nowMain:void 0,nowSecondary:void 0,showNext:!1,nextMain:void 0,nextSecondary:void 0};const a=x(s)&&i!==d.Pending,c=a?f(e,n??"title"):void 0,r=a?f(e,o):void 0,l=a?f(t,n??"title"):f(e,n??"title"),h=a?f(t,o):f(e,o);return{showNow:!!c||!!r,nowMain:c,nowSecondary:r,showNext:!!l||!!h,nextMain:l,nextSecondary:h}}export{C as F,W as a,z as b,k as c,P as d,O as e,E as f,F as g,B as h,I as i};
2
- //# sourceMappingURL=timer.utils-rGyI9NYa.js.map
1
+ import{h as y,j as S}from"./vendor-DmGkEtRj.js";import{T as u,y as d,h as g}from"./index-B1K7rED_.js";import{b as f,a as v}from"./viewUtils-VNLYoR28.js";import{i as x}from"./playbackstate-1HCEpVh5.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]="6e251596-f07c-46e5-91d1-d829893d3245",e._sentryDebugIdIdentifier="sentry-dbid-6e251596-f07c-46e5-91d1-d829893d3245")}catch{}})();const m=(e,t,n)=>{for(;e<t;){const o=Math.floor((e+t)/2);if(o===e)break;n(o)?e=o:t=o}return e};function C({children:e,mode:t="multi",min:n=16,max:o=256,...s}){const i=y.useRef(null),a=y.useCallback(()=>{const r=i.current;return r?r.scrollHeight>r.clientHeight||r.scrollWidth>r.clientWidth:!1},[]),c=y.useCallback(()=>{const r=i.current;if(!r)return;const l=r.style.visibility;r.style.visibility="hidden";const h=m(n,o+1,b=>(r.style.fontSize=`${b}px`,!a()));r.style.fontSize=`${h}px`,r.style.visibility=l},[a,n,o]);return y.useEffect(()=>{const r=i.current;if(!r)return;c();const l=new ResizeObserver(c);return l.observe(r),()=>l.disconnect()},[e,t,c]),S.jsx("div",{ref:i,style:{whiteSpace:t==="single"?"nowrap":"normal"},...s,children:e})}function F(e){return e.text!==""&&e.visible}function z(e){return e===g.Play||e===g.Roll}function E(e,t){return(e??0)+(t??0)}function P(e){return e!==u.None&&e!==u.Clock}function k(e){return e!==u.Clock}const w={4:28,5:28,6:25,8:18,9:18};function I(e,t){const n=e.length;let o=100/(n-1)*1.25;return w[n]&&(o=w[n]),t&&(o*=.6),o}function W(e,t,n,o,s,i){return i?{showEndMessage:!1,showFinished:!1,showWarning:!1,showDanger:!1}:e===u.CountDown||t?{showEndMessage:n===d.Overtime&&o&&s!=="",showFinished:n===d.Overtime,showWarning:n===d.Warning,showDanger:n===d.Danger}:{showEndMessage:!1,showFinished:!1,showWarning:!1,showDanger:!1}}function B(e,t,n,o,s,i){if(!i){if(e.timer.secondarySource==="aux1"||e.timer.secondarySource==="aux2"||e.timer.secondarySource==="aux3")return v(t,u.CountDown,n,{removeSeconds:o,removeLeadingZero:s});if(e.timer.secondarySource==="secondary"&&e.secondary)return e.secondary}}function O(e,t,n,o,s,i){if(s===g.Stop)return{showNow:!1,nowMain:void 0,nowSecondary:void 0,showNext:!1,nextMain:void 0,nextSecondary:void 0};const a=x(s)&&i!==d.Pending,c=a?f(e,n??"title"):void 0,r=a?f(e,o):void 0,l=a?f(t,n??"title"):f(e,n??"title"),h=a?f(t,o):f(e,o);return{showNow:!!c||!!r,nowMain:c,nowSecondary:r,showNext:!!l||!!h,nextMain:l,nextSecondary:h}}export{C as F,W as a,z as b,k as c,P as d,O as e,E as f,F as g,B as h,I as i};
2
+ //# sourceMappingURL=timer.utils-FiqT1yNa.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"timer.utils-rGyI9NYa.js","sources":["../../src/common/components/fit-text/fitText.utils.ts","../../src/common/components/fit-text/FitText.tsx","../../src/views/timer/timer.utils.ts"],"sourcesContent":["/**\n * @param low inclusive, must be true on predicate function\n * @param high exclusive,\n * @param predicate predicate function\n */\nexport const bsearch = (low: number, high: number, predicate: (mid: number) => boolean): number => {\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n if (mid === low) break;\n\n if (predicate(mid)) {\n low = mid;\n } else {\n high = mid;\n }\n }\n return low;\n};\n","/**\n * Copied from\n * https://github.com/namhong2001/react-textfit/blob/master/index.tsx\n */\n\nimport { HTMLAttributes, PropsWithChildren, useCallback, useEffect, useRef } from 'react';\n\nimport { bsearch } from './fitText.utils';\n\ninterface FitTextProps extends HTMLAttributes<HTMLDivElement> {\n mode?: 'single' | 'multi';\n min?: number; // inclusive\n max?: number; // inclusive\n}\n\nexport function FitText({\n children,\n mode = 'multi',\n min = 16,\n max = 256,\n ...elementProps\n}: PropsWithChildren<FitTextProps>) {\n const ref = useRef<HTMLDivElement>(null);\n\n const isOverflown = useCallback(() => {\n const el = ref.current;\n if (!el) return false;\n return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;\n }, []);\n\n const setFontSize = useCallback(() => {\n const el = ref.current;\n if (!el) return;\n\n const originVisibility = el.style.visibility;\n\n el.style.visibility = 'hidden';\n const fontSize = bsearch(min, max + 1, (mid) => {\n el.style.fontSize = `${mid}px`;\n return !isOverflown();\n });\n el.style.fontSize = `${fontSize}px`;\n el.style.visibility = originVisibility;\n }, [isOverflown, min, max]);\n\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n setFontSize();\n const observer = new ResizeObserver(setFontSize);\n observer.observe(el);\n\n return () => observer.disconnect();\n }, [children, mode, setFontSize]);\n\n return (\n <div\n ref={ref}\n style={{\n whiteSpace: mode === 'single' ? 'nowrap' : 'normal',\n }}\n {...elementProps}\n >\n {children}\n </div>\n );\n}\n","import { MaybeNumber, MessageState, OntimeEvent, Playback, TimerMessage, TimerPhase, TimerType } from 'ontime-types';\nimport { isPlaybackActive } from 'ontime-utils';\n\nimport { getFormattedTimer, getPropertyValue } from '../common/viewUtils';\n\n/**\n * Whether a message should be shown\n */\nexport function getShowMessage(message: TimerMessage): boolean {\n return message.text !== '' && message.visible;\n}\n\n/**\n * Whether the playback is playing\n */\nexport function getIsPlaying(playback: Playback): boolean {\n return playback === Playback.Play || playback === Playback.Roll;\n}\n\n/**\n * Gets the total time from the duration and added time of an event\n */\nexport function getTotalTime(duration: MaybeNumber, addedTime: MaybeNumber): number {\n return (duration ?? 0) + (addedTime ?? 0);\n}\n\n/**\n * Whether the progress bar should be shown for this timer type\n */\nexport function getShowProgressBar(timerType: TimerType) {\n return timerType !== TimerType.None && timerType !== TimerType.Clock;\n}\n\n/**\n * Whether the clock should be shown with this timer type\n */\nexport function getShowClock(timerType: TimerType) {\n return timerType !== TimerType.Clock;\n}\n\nconst fontSizeMap: { [key: number]: number } = {\n 4: 28, // 9:01\n 5: 28, // -9:01, 10:01, 9 min\n 6: 25, // -10:01, 10 min\n 8: 18, // 23:01:01\n 9: 18, // -23:01:01\n};\n\n/**\n * Finds a font size that fits the timer in the screen\n * Unfortunately hand tweaked\n */\nexport function getEstimatedFontSize(stageTimer: string, secondaryContent?: string): number {\n const stageTimerCharacters = stageTimer.length;\n let timerFontSize = (100 / (stageTimerCharacters - 1)) * 1.25;\n\n if (fontSizeMap[stageTimerCharacters]) {\n timerFontSize = fontSizeMap[stageTimerCharacters];\n }\n\n // we need to shrink the timer if the external is going to be there\n // this number has been tweaked to fit in a landscape mobile screen\n if (secondaryContent) {\n timerFontSize *= 0.6;\n }\n\n return timerFontSize;\n}\n\n/**\n * which, if any, modifier should be shown at any time\n */\nexport function getShowModifiers(\n timerType: TimerType,\n countToEnd: boolean,\n phase: TimerPhase,\n freezeOvertime: boolean,\n freezeMessage: string,\n hidePhase: boolean,\n) {\n if (hidePhase) {\n return {\n showEndMessage: false,\n showFinished: false,\n showWarning: false,\n showDanger: false,\n };\n }\n\n const showModifiers = timerType === TimerType.CountDown || countToEnd;\n if (!showModifiers) {\n return {\n showEndMessage: false,\n showFinished: false,\n showWarning: false,\n showDanger: false,\n };\n }\n\n return {\n showEndMessage: phase === TimerPhase.Overtime && freezeOvertime && freezeMessage !== '',\n showFinished: phase === TimerPhase.Overtime,\n showWarning: phase === TimerPhase.Warning,\n showDanger: phase === TimerPhase.Danger,\n };\n}\n\n/**\n * What, if anything, should be displayed in the secondary field\n */\nexport function getSecondaryDisplay(\n message: MessageState,\n currentAux: MaybeNumber,\n localisedMinutes: string,\n removeSeconds: boolean,\n removeLeadingZero: boolean,\n hideSecondary: boolean,\n): string | undefined {\n if (hideSecondary) {\n return;\n }\n if (\n message.timer.secondarySource === 'aux1' ||\n message.timer.secondarySource === 'aux2' ||\n message.timer.secondarySource === 'aux3'\n ) {\n return getFormattedTimer(currentAux, TimerType.CountDown, localisedMinutes, {\n removeSeconds,\n removeLeadingZero,\n });\n }\n if (message.timer.secondarySource === 'secondary' && message.secondary) {\n return message.secondary;\n }\n return;\n}\n\n/**\n * What should we be showing in the cards?\n */\nexport function getCardData(\n eventNow: OntimeEvent | null,\n eventNext: OntimeEvent | null,\n mainSource: keyof OntimeEvent | null,\n secondarySource: keyof OntimeEvent | null,\n playback: Playback,\n phase: TimerPhase,\n) {\n if (playback === Playback.Stop) {\n return {\n showNow: false,\n nowMain: undefined,\n nowSecondary: undefined,\n showNext: false,\n nextMain: undefined,\n nextSecondary: undefined,\n };\n }\n\n // pending roll timers would be classified as active\n const hasActiveTimer = isPlaybackActive(playback) && phase !== TimerPhase.Pending;\n\n // if we are loaded, we show the upcoming event as next\n const nowMain = hasActiveTimer ? getPropertyValue(eventNow, mainSource ?? 'title') : undefined;\n const nowSecondary = hasActiveTimer ? getPropertyValue(eventNow, secondarySource) : undefined;\n const nextMain = hasActiveTimer\n ? getPropertyValue(eventNext, mainSource ?? 'title')\n : getPropertyValue(eventNow, mainSource ?? 'title');\n const nextSecondary = hasActiveTimer\n ? getPropertyValue(eventNext, secondarySource)\n : getPropertyValue(eventNow, secondarySource);\n\n return {\n showNow: Boolean(nowMain) || Boolean(nowSecondary),\n nowMain,\n nowSecondary,\n showNext: Boolean(nextMain) || Boolean(nextSecondary),\n nextMain,\n nextSecondary,\n };\n}\n"],"names":["bsearch","low","high","predicate","mid","Math","floor","FitText","children","mode","min","max","elementProps","ref","useRef","isOverflown","useCallback","el","current","scrollHeight","clientHeight","scrollWidth","clientWidth","setFontSize","originVisibility","style","visibility","fontSize","useEffect","observer","ResizeObserver","observe","disconnect","jsx","whiteSpace","getShowMessage","message","text","visible","getIsPlaying","playback","Playback","Play","Roll","getTotalTime","duration","addedTime","getShowProgressBar","timerType","TimerType","None","Clock","getShowClock","fontSizeMap","getEstimatedFontSize","stageTimer","secondaryContent","stageTimerCharacters","length","timerFontSize","getShowModifiers","countToEnd","phase","freezeOvertime","freezeMessage","hidePhase","showEndMessage","showFinished","showWarning","showDanger","CountDown","TimerPhase","Overtime","Warning","Danger","getSecondaryDisplay","currentAux","localisedMinutes","removeSeconds","removeLeadingZero","hideSecondary","timer","secondarySource","getFormattedTimer","secondary","getCardData","eventNow","eventNext","mainSource","Stop","showNow","nowMain","undefined","nowSecondary","showNext","nextMain","nextSecondary","hasActiveTimer","isPlaybackActive","Pending","getPropertyValue","Boolean"],"mappings":"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"}
1
+ {"version":3,"file":"timer.utils-FiqT1yNa.js","sources":["../../src/common/components/fit-text/fitText.utils.ts","../../src/common/components/fit-text/FitText.tsx","../../src/views/timer/timer.utils.ts"],"sourcesContent":["/**\n * @param low inclusive, must be true on predicate function\n * @param high exclusive,\n * @param predicate predicate function\n */\nexport const bsearch = (low: number, high: number, predicate: (mid: number) => boolean): number => {\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n if (mid === low) break;\n\n if (predicate(mid)) {\n low = mid;\n } else {\n high = mid;\n }\n }\n return low;\n};\n","/**\n * Copied from\n * https://github.com/namhong2001/react-textfit/blob/master/index.tsx\n */\n\nimport { HTMLAttributes, PropsWithChildren, useCallback, useEffect, useRef } from 'react';\n\nimport { bsearch } from './fitText.utils';\n\ninterface FitTextProps extends HTMLAttributes<HTMLDivElement> {\n mode?: 'single' | 'multi';\n min?: number; // inclusive\n max?: number; // inclusive\n}\n\nexport function FitText({\n children,\n mode = 'multi',\n min = 16,\n max = 256,\n ...elementProps\n}: PropsWithChildren<FitTextProps>) {\n const ref = useRef<HTMLDivElement>(null);\n\n const isOverflown = useCallback(() => {\n const el = ref.current;\n if (!el) return false;\n return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;\n }, []);\n\n const setFontSize = useCallback(() => {\n const el = ref.current;\n if (!el) return;\n\n const originVisibility = el.style.visibility;\n\n el.style.visibility = 'hidden';\n const fontSize = bsearch(min, max + 1, (mid) => {\n el.style.fontSize = `${mid}px`;\n return !isOverflown();\n });\n el.style.fontSize = `${fontSize}px`;\n el.style.visibility = originVisibility;\n }, [isOverflown, min, max]);\n\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n setFontSize();\n const observer = new ResizeObserver(setFontSize);\n observer.observe(el);\n\n return () => observer.disconnect();\n }, [children, mode, setFontSize]);\n\n return (\n <div\n ref={ref}\n style={{\n whiteSpace: mode === 'single' ? 'nowrap' : 'normal',\n }}\n {...elementProps}\n >\n {children}\n </div>\n );\n}\n","import { MaybeNumber, MessageState, OntimeEvent, Playback, TimerMessage, TimerPhase, TimerType } from 'ontime-types';\nimport { isPlaybackActive } from 'ontime-utils';\n\nimport { getFormattedTimer, getPropertyValue } from '../common/viewUtils';\n\n/**\n * Whether a message should be shown\n */\nexport function getShowMessage(message: TimerMessage): boolean {\n return message.text !== '' && message.visible;\n}\n\n/**\n * Whether the playback is playing\n */\nexport function getIsPlaying(playback: Playback): boolean {\n return playback === Playback.Play || playback === Playback.Roll;\n}\n\n/**\n * Gets the total time from the duration and added time of an event\n */\nexport function getTotalTime(duration: MaybeNumber, addedTime: MaybeNumber): number {\n return (duration ?? 0) + (addedTime ?? 0);\n}\n\n/**\n * Whether the progress bar should be shown for this timer type\n */\nexport function getShowProgressBar(timerType: TimerType) {\n return timerType !== TimerType.None && timerType !== TimerType.Clock;\n}\n\n/**\n * Whether the clock should be shown with this timer type\n */\nexport function getShowClock(timerType: TimerType) {\n return timerType !== TimerType.Clock;\n}\n\nconst fontSizeMap: { [key: number]: number } = {\n 4: 28, // 9:01\n 5: 28, // -9:01, 10:01, 9 min\n 6: 25, // -10:01, 10 min\n 8: 18, // 23:01:01\n 9: 18, // -23:01:01\n};\n\n/**\n * Finds a font size that fits the timer in the screen\n * Unfortunately hand tweaked\n */\nexport function getEstimatedFontSize(stageTimer: string, secondaryContent?: string): number {\n const stageTimerCharacters = stageTimer.length;\n let timerFontSize = (100 / (stageTimerCharacters - 1)) * 1.25;\n\n if (fontSizeMap[stageTimerCharacters]) {\n timerFontSize = fontSizeMap[stageTimerCharacters];\n }\n\n // we need to shrink the timer if the external is going to be there\n // this number has been tweaked to fit in a landscape mobile screen\n if (secondaryContent) {\n timerFontSize *= 0.6;\n }\n\n return timerFontSize;\n}\n\n/**\n * which, if any, modifier should be shown at any time\n */\nexport function getShowModifiers(\n timerType: TimerType,\n countToEnd: boolean,\n phase: TimerPhase,\n freezeOvertime: boolean,\n freezeMessage: string,\n hidePhase: boolean,\n) {\n if (hidePhase) {\n return {\n showEndMessage: false,\n showFinished: false,\n showWarning: false,\n showDanger: false,\n };\n }\n\n const showModifiers = timerType === TimerType.CountDown || countToEnd;\n if (!showModifiers) {\n return {\n showEndMessage: false,\n showFinished: false,\n showWarning: false,\n showDanger: false,\n };\n }\n\n return {\n showEndMessage: phase === TimerPhase.Overtime && freezeOvertime && freezeMessage !== '',\n showFinished: phase === TimerPhase.Overtime,\n showWarning: phase === TimerPhase.Warning,\n showDanger: phase === TimerPhase.Danger,\n };\n}\n\n/**\n * What, if anything, should be displayed in the secondary field\n */\nexport function getSecondaryDisplay(\n message: MessageState,\n currentAux: MaybeNumber,\n localisedMinutes: string,\n removeSeconds: boolean,\n removeLeadingZero: boolean,\n hideSecondary: boolean,\n): string | undefined {\n if (hideSecondary) {\n return;\n }\n if (\n message.timer.secondarySource === 'aux1' ||\n message.timer.secondarySource === 'aux2' ||\n message.timer.secondarySource === 'aux3'\n ) {\n return getFormattedTimer(currentAux, TimerType.CountDown, localisedMinutes, {\n removeSeconds,\n removeLeadingZero,\n });\n }\n if (message.timer.secondarySource === 'secondary' && message.secondary) {\n return message.secondary;\n }\n return;\n}\n\n/**\n * What should we be showing in the cards?\n */\nexport function getCardData(\n eventNow: OntimeEvent | null,\n eventNext: OntimeEvent | null,\n mainSource: keyof OntimeEvent | null,\n secondarySource: keyof OntimeEvent | null,\n playback: Playback,\n phase: TimerPhase,\n) {\n if (playback === Playback.Stop) {\n return {\n showNow: false,\n nowMain: undefined,\n nowSecondary: undefined,\n showNext: false,\n nextMain: undefined,\n nextSecondary: undefined,\n };\n }\n\n // pending roll timers would be classified as active\n const hasActiveTimer = isPlaybackActive(playback) && phase !== TimerPhase.Pending;\n\n // if we are loaded, we show the upcoming event as next\n const nowMain = hasActiveTimer ? getPropertyValue(eventNow, mainSource ?? 'title') : undefined;\n const nowSecondary = hasActiveTimer ? getPropertyValue(eventNow, secondarySource) : undefined;\n const nextMain = hasActiveTimer\n ? getPropertyValue(eventNext, mainSource ?? 'title')\n : getPropertyValue(eventNow, mainSource ?? 'title');\n const nextSecondary = hasActiveTimer\n ? getPropertyValue(eventNext, secondarySource)\n : getPropertyValue(eventNow, secondarySource);\n\n return {\n showNow: Boolean(nowMain) || Boolean(nowSecondary),\n nowMain,\n nowSecondary,\n showNext: Boolean(nextMain) || Boolean(nextSecondary),\n nextMain,\n nextSecondary,\n };\n}\n"],"names":["bsearch","low","high","predicate","mid","Math","floor","FitText","children","mode","min","max","elementProps","ref","useRef","isOverflown","useCallback","el","current","scrollHeight","clientHeight","scrollWidth","clientWidth","setFontSize","originVisibility","style","visibility","fontSize","useEffect","observer","ResizeObserver","observe","disconnect","jsx","whiteSpace","getShowMessage","message","text","visible","getIsPlaying","playback","Playback","Play","Roll","getTotalTime","duration","addedTime","getShowProgressBar","timerType","TimerType","None","Clock","getShowClock","fontSizeMap","getEstimatedFontSize","stageTimer","secondaryContent","stageTimerCharacters","length","timerFontSize","getShowModifiers","countToEnd","phase","freezeOvertime","freezeMessage","hidePhase","showEndMessage","showFinished","showWarning","showDanger","CountDown","TimerPhase","Overtime","Warning","Danger","getSecondaryDisplay","currentAux","localisedMinutes","removeSeconds","removeLeadingZero","hideSecondary","timer","secondarySource","getFormattedTimer","secondary","getCardData","eventNow","eventNext","mainSource","Stop","showNow","nowMain","undefined","nowSecondary","showNext","nextMain","nextSecondary","hasActiveTimer","isPlaybackActive","Pending","getPropertyValue","Boolean"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{e as s,k as i}from"./vendor-q6fv0YT2.js";import{ay as u,aG as c,aA as l}from"./index-B81u4hxi.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]="a61b2069-3800-4c00-adf3-610ee6803f12",e._sentryDebugIdIdentifier="sentry-dbid-a61b2069-3800-4c00-adf3-610ee6803f12")}catch{}})();const a=`${u}/custom-fields`;async function f(){return(await s.get(a)).data}async function g(e){return(await s.post(a,{...e})).data}async function m(e,t){return(await s.put(`${a}/${e}`,{...t})).data}async function h(e){return(await s.delete(`${a}/${e}`)).data}const y={};function F(){const{data:e,status:t,isFetching:r,isError:o,refetch:d}=i({queryKey:l,queryFn:f,placeholderData:(n,p)=>n,retry:5,retryDelay:n=>n*2500,refetchInterval:c,networkMode:"always"});return{data:e??y,status:t,isFetching:r,isError:o,refetch:d}}export{h as d,m as e,g as p,F as u};
2
- //# sourceMappingURL=useCustomFields-k4piRt9n.js.map
1
+ import{e as s,k as i}from"./vendor-DmGkEtRj.js";import{ay as u,aG as c,aA as l}from"./index-B1K7rED_.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]="a61b2069-3800-4c00-adf3-610ee6803f12",e._sentryDebugIdIdentifier="sentry-dbid-a61b2069-3800-4c00-adf3-610ee6803f12")}catch{}})();const a=`${u}/custom-fields`;async function f(){return(await s.get(a)).data}async function g(e){return(await s.post(a,{...e})).data}async function m(e,t){return(await s.put(`${a}/${e}`,{...t})).data}async function h(e){return(await s.delete(`${a}/${e}`)).data}const y={};function F(){const{data:e,status:t,isFetching:r,isError:o,refetch:d}=i({queryKey:l,queryFn:f,placeholderData:(n,p)=>n,retry:5,retryDelay:n=>n*2500,refetchInterval:c,networkMode:"always"});return{data:e??y,status:t,isFetching:r,isError:o,refetch:d}}export{h as d,m as e,g as p,F as u};
2
+ //# sourceMappingURL=useCustomFields-nW-_Zyfw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useCustomFields-k4piRt9n.js","sources":["../../src/common/api/customFields.ts","../../src/common/hooks-query/useCustomFields.ts"],"sourcesContent":["import axios from 'axios';\nimport { CustomField, CustomFieldKey, CustomFields } from 'ontime-types';\n\nimport { apiEntryUrl } from './constants';\n\nconst customFieldsPath = `${apiEntryUrl}/custom-fields`;\n\n/**\n * Requests list of known custom fields\n */\nexport async function getCustomFields(): Promise<CustomFields> {\n const res = await axios.get(customFieldsPath);\n return res.data;\n}\n\n/**\n * Sets list of known custom fields\n */\nexport async function postCustomField(newField: CustomField): Promise<CustomFields> {\n const res = await axios.post(customFieldsPath, { ...newField });\n return res.data;\n}\n\n/**\n * Edits single custom field\n */\nexport async function editCustomField(key: CustomFieldKey, newField: CustomField): Promise<CustomFields> {\n const res = await axios.put(`${customFieldsPath}/${key}`, { ...newField });\n return res.data;\n}\n\n/**\n * Deletes single custom field\n */\nexport async function deleteCustomField(key: CustomFieldKey): Promise<CustomFields> {\n const res = await axios.delete(`${customFieldsPath}/${key}`);\n return res.data;\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { CustomFields } from 'ontime-types';\n\nimport { queryRefetchIntervalSlow } from '../../ontimeConfig';\nimport { CUSTOM_FIELDS } from '../api/constants';\nimport { getCustomFields } from '../api/customFields';\n\nconst placeholder: CustomFields = {};\n\nexport default function useCustomFields() {\n const { data, status, isFetching, isError, refetch } = useQuery({\n queryKey: CUSTOM_FIELDS,\n queryFn: getCustomFields,\n placeholderData: (previousData, _previousQuery) => previousData,\n retry: 5,\n retryDelay: (attempt) => attempt * 2500,\n refetchInterval: queryRefetchIntervalSlow,\n networkMode: 'always',\n });\n\n return { data: data ?? placeholder, status, isFetching, isError, refetch };\n}\n"],"names":["customFieldsPath","apiEntryUrl","getCustomFields","axios","get","data","postCustomField","newField","post","editCustomField","key","put","deleteCustomField","delete","placeholder","useCustomFields","status","isFetching","isError","refetch","useQuery","queryKey","CUSTOM_FIELDS","queryFn","placeholderData","previousData","_previousQuery","retry","retryDelay","attempt","refetchInterval","queryRefetchIntervalSlow","networkMode"],"mappings":"mcAKA,MAAMA,EAAmB,GAAGC,CAAW,iBAKvC,eAAsBC,GAAyC,CAE7D,OADY,MAAMC,EAAMC,IAAIJ,CAAgB,GACjCK,IACb,CAKA,eAAsBC,EAAgBC,EAA8C,CAElF,OADY,MAAMJ,EAAMK,KAAKR,EAAkB,CAAE,GAAGO,CAAAA,CAAU,GACnDF,IACb,CAKsBI,eAAAA,EAAgBC,EAAqBH,EAA8C,CAEvG,OADY,MAAMJ,EAAMQ,IAAI,GAAGX,CAAgB,IAAIU,CAAG,GAAI,CAAE,GAAGH,CAAAA,CAAU,GAC9DF,IACb,CAKA,eAAsBO,EAAkBF,EAA4C,CAElF,OADY,MAAMP,EAAMU,OAAO,GAAGb,CAAgB,IAAIU,CAAG,EAAE,GAChDL,IACb,CC9BA,MAAMS,EAA4B,CAAC,EAEnC,SAAwBC,GAAkB,CAClC,KAAA,CAAEV,KAAAA,EAAMW,OAAAA,EAAQC,WAAAA,EAAYC,QAAAA,EAASC,QAAAA,GAAYC,EAAS,CAC9DC,SAAUC,EACVC,QAASrB,EACTsB,gBAAiBA,CAACC,EAAcC,IAAmBD,EACnDE,MAAO,EACPC,cAAyBC,EAAU,KACnCC,gBAAiBC,EACjBC,YAAa,QAAA,CACd,EAEM,MAAA,CAAE3B,KAAMA,GAAQS,EAAaE,OAAAA,EAAQC,WAAAA,EAAYC,QAAAA,EAASC,QAAAA,CAAQ,CAC3E"}
1
+ {"version":3,"file":"useCustomFields-nW-_Zyfw.js","sources":["../../src/common/api/customFields.ts","../../src/common/hooks-query/useCustomFields.ts"],"sourcesContent":["import axios from 'axios';\nimport { CustomField, CustomFieldKey, CustomFields } from 'ontime-types';\n\nimport { apiEntryUrl } from './constants';\n\nconst customFieldsPath = `${apiEntryUrl}/custom-fields`;\n\n/**\n * Requests list of known custom fields\n */\nexport async function getCustomFields(): Promise<CustomFields> {\n const res = await axios.get(customFieldsPath);\n return res.data;\n}\n\n/**\n * Sets list of known custom fields\n */\nexport async function postCustomField(newField: CustomField): Promise<CustomFields> {\n const res = await axios.post(customFieldsPath, { ...newField });\n return res.data;\n}\n\n/**\n * Edits single custom field\n */\nexport async function editCustomField(key: CustomFieldKey, newField: CustomField): Promise<CustomFields> {\n const res = await axios.put(`${customFieldsPath}/${key}`, { ...newField });\n return res.data;\n}\n\n/**\n * Deletes single custom field\n */\nexport async function deleteCustomField(key: CustomFieldKey): Promise<CustomFields> {\n const res = await axios.delete(`${customFieldsPath}/${key}`);\n return res.data;\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { CustomFields } from 'ontime-types';\n\nimport { queryRefetchIntervalSlow } from '../../ontimeConfig';\nimport { CUSTOM_FIELDS } from '../api/constants';\nimport { getCustomFields } from '../api/customFields';\n\nconst placeholder: CustomFields = {};\n\nexport default function useCustomFields() {\n const { data, status, isFetching, isError, refetch } = useQuery({\n queryKey: CUSTOM_FIELDS,\n queryFn: getCustomFields,\n placeholderData: (previousData, _previousQuery) => previousData,\n retry: 5,\n retryDelay: (attempt) => attempt * 2500,\n refetchInterval: queryRefetchIntervalSlow,\n networkMode: 'always',\n });\n\n return { data: data ?? placeholder, status, isFetching, isError, refetch };\n}\n"],"names":["customFieldsPath","apiEntryUrl","getCustomFields","axios","get","data","postCustomField","newField","post","editCustomField","key","put","deleteCustomField","delete","placeholder","useCustomFields","status","isFetching","isError","refetch","useQuery","queryKey","CUSTOM_FIELDS","queryFn","placeholderData","previousData","_previousQuery","retry","retryDelay","attempt","refetchInterval","queryRefetchIntervalSlow","networkMode"],"mappings":"mcAKA,MAAMA,EAAmB,GAAGC,CAAW,iBAKvC,eAAsBC,GAAyC,CAE7D,OADY,MAAMC,EAAMC,IAAIJ,CAAgB,GACjCK,IACb,CAKA,eAAsBC,EAAgBC,EAA8C,CAElF,OADY,MAAMJ,EAAMK,KAAKR,EAAkB,CAAE,GAAGO,CAAAA,CAAU,GACnDF,IACb,CAKsBI,eAAAA,EAAgBC,EAAqBH,EAA8C,CAEvG,OADY,MAAMJ,EAAMQ,IAAI,GAAGX,CAAgB,IAAIU,CAAG,GAAI,CAAE,GAAGH,CAAAA,CAAU,GAC9DF,IACb,CAKA,eAAsBO,EAAkBF,EAA4C,CAElF,OADY,MAAMP,EAAMU,OAAO,GAAGb,CAAgB,IAAIU,CAAG,EAAE,GAChDL,IACb,CC9BA,MAAMS,EAA4B,CAAC,EAEnC,SAAwBC,GAAkB,CAClC,KAAA,CAAEV,KAAAA,EAAMW,OAAAA,EAAQC,WAAAA,EAAYC,QAAAA,EAASC,QAAAA,GAAYC,EAAS,CAC9DC,SAAUC,EACVC,QAASrB,EACTsB,gBAAiBA,CAACC,EAAcC,IAAmBD,EACnDE,MAAO,EACPC,cAAyBC,EAAU,KACnCC,gBAAiBC,EACjBC,YAAa,QAAA,CACd,EAEM,MAAA,CAAE3B,KAAMA,GAAQS,EAAaE,OAAAA,EAAQC,WAAAA,EAAYC,QAAAA,EAASC,QAAAA,CAAQ,CAC3E"}
@@ -1,2 +1,2 @@
1
- import{h as c}from"./vendor-q6fv0YT2.js";(function(){try{var n=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new n.Error().stack;e&&(n._sentryDebugIds=n._sentryDebugIds||{},n._sentryDebugIds[e]="f54ae56d-eca4-4696-9400-b8617aeef534",n._sentryDebugIdIdentifier="sentry-dbid-f54ae56d-eca4-4696-9400-b8617aeef534")}catch{}})();function b(n,e,r){if(!n.current||!e.current)return;const u=n.current.getBoundingClientRect(),t=e.current.getBoundingClientRect(),i=u.top-t.top+e.current.scrollTop-r;e.current.scrollTo({top:i,behavior:"smooth"})}function y({followRef:n,scrollRef:e,doFollow:r,topOffset:u=100,setScrollFlag:t,followTrigger:i}){return c.useEffect(()=>{!r||!i||n.current&&e.current&&(t==null||t(!0),window.requestAnimationFrame(()=>{b(n,e,u),t==null||t(!1)}))},[i,r,n,e,t,u]),c.useCallback((d=n,o=e,s=u)=>{d&&o&&b(d,o,s)},[n,e,u])}export{y as u};
2
- //# sourceMappingURL=useFollowComponent-B7vvPzG2.js.map
1
+ import{h as c}from"./vendor-DmGkEtRj.js";(function(){try{var n=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new n.Error().stack;e&&(n._sentryDebugIds=n._sentryDebugIds||{},n._sentryDebugIds[e]="f54ae56d-eca4-4696-9400-b8617aeef534",n._sentryDebugIdIdentifier="sentry-dbid-f54ae56d-eca4-4696-9400-b8617aeef534")}catch{}})();function b(n,e,r){if(!n.current||!e.current)return;const u=n.current.getBoundingClientRect(),t=e.current.getBoundingClientRect(),i=u.top-t.top+e.current.scrollTop-r;e.current.scrollTo({top:i,behavior:"smooth"})}function y({followRef:n,scrollRef:e,doFollow:r,topOffset:u=100,setScrollFlag:t,followTrigger:i}){return c.useEffect(()=>{!r||!i||n.current&&e.current&&(t==null||t(!0),window.requestAnimationFrame(()=>{b(n,e,u),t==null||t(!1)}))},[i,r,n,e,t,u]),c.useCallback((d=n,o=e,s=u)=>{d&&o&&b(d,o,s)},[n,e,u])}export{y as u};
2
+ //# sourceMappingURL=useFollowComponent-4cbKEsVz.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFollowComponent-B7vvPzG2.js","sources":["../../src/common/hooks/useFollowComponent.ts"],"sourcesContent":["import { RefObject, useCallback, useEffect } from 'react';\nimport { MaybeString } from 'ontime-types';\n\nfunction scrollToComponent<ComponentRef extends HTMLElement, ScrollRef extends HTMLElement>(\n componentRef: RefObject<ComponentRef>,\n scrollRef: RefObject<ScrollRef>,\n topOffset: number,\n) {\n if (!componentRef.current || !scrollRef.current) {\n return;\n }\n\n const componentRect = componentRef.current.getBoundingClientRect();\n const scrollRect = scrollRef.current.getBoundingClientRect();\n const top = componentRect.top - scrollRect.top + scrollRef.current.scrollTop - topOffset;\n\n scrollRef.current.scrollTo({ top, behavior: 'smooth' });\n}\n\ninterface UseFollowComponentProps {\n followRef: RefObject<HTMLElement | null>;\n scrollRef: RefObject<HTMLElement | null>;\n doFollow: boolean;\n topOffset?: number;\n setScrollFlag?: (newValue: boolean) => void;\n followTrigger?: MaybeString; // this would be an entry id or null\n}\n\nexport default function useFollowComponent({\n followRef,\n scrollRef,\n doFollow,\n topOffset = 100,\n setScrollFlag,\n followTrigger,\n}: UseFollowComponentProps) {\n // when trigger moves, view should follow\n useEffect(() => {\n if (!doFollow || !followTrigger) {\n return;\n }\n\n if (followRef.current && scrollRef.current) {\n setScrollFlag?.(true);\n // Use requestAnimationFrame to ensure the component is fully loaded\n window.requestAnimationFrame(() => {\n scrollToComponent(followRef as RefObject<HTMLElement>, scrollRef as RefObject<HTMLElement>, topOffset);\n setScrollFlag?.(false);\n });\n }\n }, [followTrigger, doFollow, followRef, scrollRef, setScrollFlag, topOffset]);\n\n const scrollToRefComponent = useCallback(\n (componentRef = followRef, containerRef = scrollRef, offset = topOffset) => {\n if (componentRef && containerRef) {\n // @ts-expect-error -- we know this are not null\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n scrollToComponent(componentRef!, containerRef!, offset);\n }\n },\n [followRef, scrollRef, topOffset],\n );\n\n return scrollToRefComponent;\n}\n"],"names":["scrollToComponent","componentRef","scrollRef","topOffset","current","componentRect","getBoundingClientRect","scrollRect","top","scrollTop","scrollTo","behavior","useFollowComponent","followRef","doFollow","setScrollFlag","followTrigger","useEffect","window","requestAnimationFrame","useCallback","containerRef","offset"],"mappings":"mYAGA,SAASA,EACPC,EACAC,EACAC,EACA,CACA,GAAI,CAACF,EAAaG,SAAW,CAACF,EAAUE,QACtC,OAGIC,MAAAA,EAAgBJ,EAAaG,QAAQE,sBAAsB,EAC3DC,EAAaL,EAAUE,QAAQE,sBAAsB,EACrDE,EAAMH,EAAcG,IAAMD,EAAWC,IAAMN,EAAUE,QAAQK,UAAYN,EAE/ED,EAAUE,QAAQM,SAAS,CAAEF,IAAAA,EAAKG,SAAU,QAAA,CAAU,CACxD,CAWA,SAAwBC,EAAmB,CACzCC,UAAAA,EACAX,UAAAA,EACAY,SAAAA,EACAX,UAAAA,EAAY,IACZY,cAAAA,EACAC,cAAAA,CACuB,EAAG,CAE1BC,OAAAA,EAAAA,UAAU,IAAM,CACV,CAACH,GAAY,CAACE,GAIdH,EAAUT,SAAWF,EAAUE,UACjCW,GAAAA,MAAAA,EAAgB,IAEhBG,OAAOC,sBAAsB,IAAM,CACfN,EAAAA,EAAqCX,EAAqCC,CAAS,EACrGY,GAAAA,MAAAA,EAAgB,GAAK,CACtB,EACH,EACC,CAACC,EAAeF,EAAUD,EAAWX,EAAWa,EAAeZ,CAAS,CAAC,EAE/CiB,cAC3B,CAACnB,EAAeY,EAAWQ,EAAenB,EAAWoB,EAASnB,IAAc,CACtEF,GAAgBoB,GAGApB,EAAAA,EAAeoB,EAAeC,CAAM,CAG1D,EAAA,CAACT,EAAWX,EAAWC,CAAS,CAClC,CAGF"}
1
+ {"version":3,"file":"useFollowComponent-4cbKEsVz.js","sources":["../../src/common/hooks/useFollowComponent.ts"],"sourcesContent":["import { RefObject, useCallback, useEffect } from 'react';\nimport { MaybeString } from 'ontime-types';\n\nfunction scrollToComponent<ComponentRef extends HTMLElement, ScrollRef extends HTMLElement>(\n componentRef: RefObject<ComponentRef>,\n scrollRef: RefObject<ScrollRef>,\n topOffset: number,\n) {\n if (!componentRef.current || !scrollRef.current) {\n return;\n }\n\n const componentRect = componentRef.current.getBoundingClientRect();\n const scrollRect = scrollRef.current.getBoundingClientRect();\n const top = componentRect.top - scrollRect.top + scrollRef.current.scrollTop - topOffset;\n\n scrollRef.current.scrollTo({ top, behavior: 'smooth' });\n}\n\ninterface UseFollowComponentProps {\n followRef: RefObject<HTMLElement | null>;\n scrollRef: RefObject<HTMLElement | null>;\n doFollow: boolean;\n topOffset?: number;\n setScrollFlag?: (newValue: boolean) => void;\n followTrigger?: MaybeString; // this would be an entry id or null\n}\n\nexport default function useFollowComponent({\n followRef,\n scrollRef,\n doFollow,\n topOffset = 100,\n setScrollFlag,\n followTrigger,\n}: UseFollowComponentProps) {\n // when trigger moves, view should follow\n useEffect(() => {\n if (!doFollow || !followTrigger) {\n return;\n }\n\n if (followRef.current && scrollRef.current) {\n setScrollFlag?.(true);\n // Use requestAnimationFrame to ensure the component is fully loaded\n window.requestAnimationFrame(() => {\n scrollToComponent(followRef as RefObject<HTMLElement>, scrollRef as RefObject<HTMLElement>, topOffset);\n setScrollFlag?.(false);\n });\n }\n }, [followTrigger, doFollow, followRef, scrollRef, setScrollFlag, topOffset]);\n\n const scrollToRefComponent = useCallback(\n (componentRef = followRef, containerRef = scrollRef, offset = topOffset) => {\n if (componentRef && containerRef) {\n // @ts-expect-error -- we know this are not null\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n scrollToComponent(componentRef!, containerRef!, offset);\n }\n },\n [followRef, scrollRef, topOffset],\n );\n\n return scrollToRefComponent;\n}\n"],"names":["scrollToComponent","componentRef","scrollRef","topOffset","current","componentRect","getBoundingClientRect","scrollRect","top","scrollTop","scrollTo","behavior","useFollowComponent","followRef","doFollow","setScrollFlag","followTrigger","useEffect","window","requestAnimationFrame","useCallback","containerRef","offset"],"mappings":"mYAGA,SAASA,EACPC,EACAC,EACAC,EACA,CACA,GAAI,CAACF,EAAaG,SAAW,CAACF,EAAUE,QACtC,OAGIC,MAAAA,EAAgBJ,EAAaG,QAAQE,sBAAsB,EAC3DC,EAAaL,EAAUE,QAAQE,sBAAsB,EACrDE,EAAMH,EAAcG,IAAMD,EAAWC,IAAMN,EAAUE,QAAQK,UAAYN,EAE/ED,EAAUE,QAAQM,SAAS,CAAEF,IAAAA,EAAKG,SAAU,QAAA,CAAU,CACxD,CAWA,SAAwBC,EAAmB,CACzCC,UAAAA,EACAX,UAAAA,EACAY,SAAAA,EACAX,UAAAA,EAAY,IACZY,cAAAA,EACAC,cAAAA,CACuB,EAAG,CAE1BC,OAAAA,EAAAA,UAAU,IAAM,CACV,CAACH,GAAY,CAACE,GAIdH,EAAUT,SAAWF,EAAUE,UACjCW,GAAAA,MAAAA,EAAgB,IAEhBG,OAAOC,sBAAsB,IAAM,CACfN,EAAAA,EAAqCX,EAAqCC,CAAS,EACrGY,GAAAA,MAAAA,EAAgB,GAAK,CACtB,EACH,EACC,CAACC,EAAeF,EAAUD,EAAWX,EAAWa,EAAeZ,CAAS,CAAC,EAE/CiB,cAC3B,CAACnB,EAAeY,EAAWQ,EAAenB,EAAWoB,EAASnB,IAAc,CACtEF,GAAgBoB,GAGApB,EAAAA,EAAeoB,EAAeC,CAAM,CAG1D,EAAA,CAACT,EAAWX,EAAWC,CAAS,CAClC,CAGF"}
@@ -1,2 +1,2 @@
1
- import{e as r,k as i,O as d,P as f}from"./vendor-q6fv0YT2.js";import{ay as l,aQ as o,aG as p}from"./index-B81u4hxi.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="26d1db01-05b2-45e8-a0fe-67088cd0c99f",t._sentryDebugIdIdentifier="sentry-dbid-26d1db01-05b2-45e8-a0fe-67088cd0c99f")}catch{}})();const n=`${l}/project`;async function y(){return(await r.get(n)).data}async function g(t){return r.post(n,t)}async function P(t){const e=new FormData;return e.append("image",t),await r.post(`${n}/upload`,e,{headers:{"Content-Type":"multipart/form-data"}})}const D={title:"",description:"",url:"",info:"",logo:null,custom:[]};function j(){const{data:t,status:e,isFetching:a,isError:s,refetch:u}=i({queryKey:o,queryFn:y,placeholderData:(c,b)=>c,refetchInterval:p});return{data:t??D,status:e,isFetching:a,isError:s,refetch:u}}function w(){const t=d(),e=f({mutationFn:g,onSuccess:a=>{t.setQueryData(o,a)}});return{updateProjectData:e.mutateAsync,isMutating:e.isPending,isMutatingError:e.isError}}export{w as a,P as b,j as u};
2
- //# sourceMappingURL=useProjectData-DdgKoYzk.js.map
1
+ import{e as r,k as i,O as d,P as f}from"./vendor-DmGkEtRj.js";import{ay as l,aQ as o,aG as p}from"./index-B1K7rED_.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="26d1db01-05b2-45e8-a0fe-67088cd0c99f",t._sentryDebugIdIdentifier="sentry-dbid-26d1db01-05b2-45e8-a0fe-67088cd0c99f")}catch{}})();const n=`${l}/project`;async function y(){return(await r.get(n)).data}async function g(t){return r.post(n,t)}async function P(t){const e=new FormData;return e.append("image",t),await r.post(`${n}/upload`,e,{headers:{"Content-Type":"multipart/form-data"}})}const D={title:"",description:"",url:"",info:"",logo:null,custom:[]};function j(){const{data:t,status:e,isFetching:a,isError:s,refetch:u}=i({queryKey:o,queryFn:y,placeholderData:(c,b)=>c,refetchInterval:p});return{data:t??D,status:e,isFetching:a,isError:s,refetch:u}}function w(){const t=d(),e=f({mutationFn:g,onSuccess:a=>{t.setQueryData(o,a)}});return{updateProjectData:e.mutateAsync,isMutating:e.isPending,isMutatingError:e.isError}}export{w as a,P as b,j as u};
2
+ //# sourceMappingURL=useProjectData-DP-pr73E.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useProjectData-DdgKoYzk.js","sources":["../../src/common/api/project.ts","../../src/common/models/ProjectData.ts","../../src/common/hooks-query/useProjectData.ts"],"sourcesContent":["import axios, { AxiosResponse } from 'axios';\nimport { ProjectData, ProjectLogoResponse } from 'ontime-types';\n\nimport { apiEntryUrl } from './constants';\n\nconst projectPath = `${apiEntryUrl}/project`;\n\n/**\n * HTTP request to fetch project data\n */\nexport async function getProjectData(): Promise<ProjectData> {\n const res = await axios.get(projectPath);\n return res.data;\n}\n\n/**\n * HTTP request to mutate project data\n */\nexport async function postProjectData(data: ProjectData): Promise<AxiosResponse<ProjectData>> {\n return axios.post(projectPath, data);\n}\n\n/**\n * HTTP request to upload a project logo\n */\nexport async function uploadProjectLogo(file: File): Promise<AxiosResponse<ProjectLogoResponse>> {\n const formData = new FormData();\n formData.append('image', file);\n const response = await axios.post(`${projectPath}/upload`, formData, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n });\n\n return response;\n}\n","import { ProjectData } from 'ontime-types';\n\nexport const projectDataPlaceholder: ProjectData = {\n title: '',\n description: '',\n url: '',\n info: '',\n logo: null,\n custom: [],\n};\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\n\nimport { queryRefetchIntervalSlow } from '../../ontimeConfig';\nimport { PROJECT_DATA } from '../api/constants';\nimport { getProjectData, postProjectData } from '../api/project';\nimport { projectDataPlaceholder } from '../models/ProjectData';\n\nexport default function useProjectData() {\n const { data, status, isFetching, isError, refetch } = useQuery({\n queryKey: PROJECT_DATA,\n queryFn: getProjectData,\n placeholderData: (previousData, _previousQuery) => previousData,\n refetchInterval: queryRefetchIntervalSlow,\n });\n\n return { data: data ?? projectDataPlaceholder, status, isFetching, isError, refetch };\n}\n\nexport function useUpdateProjectData() {\n const queryClient = useQueryClient();\n\n const updateFn = useMutation({\n mutationFn: postProjectData,\n onSuccess: (newProjectData) => {\n queryClient.setQueryData(PROJECT_DATA, newProjectData);\n },\n });\n\n return {\n updateProjectData: updateFn.mutateAsync,\n isMutating: updateFn.isPending,\n isMutatingError: updateFn.isError,\n };\n}\n"],"names":["projectPath","apiEntryUrl","getProjectData","axios","get","data","postProjectData","post","uploadProjectLogo","file","formData","FormData","append","headers","projectDataPlaceholder","title","description","url","info","logo","custom","useProjectData","status","isFetching","isError","refetch","useQuery","queryKey","PROJECT_DATA","queryFn","placeholderData","previousData","_previousQuery","refetchInterval","queryRefetchIntervalSlow","useUpdateProjectData","queryClient","useQueryClient","updateFn","useMutation","mutationFn","onSuccess","newProjectData","setQueryData","updateProjectData","mutateAsync","isMutating","isPending","isMutatingError"],"mappings":"idAKA,MAAMA,EAAc,GAAGC,CAAW,WAKlC,eAAsBC,GAAuC,CAE3D,OADY,MAAMC,EAAMC,IAAIJ,CAAW,GAC5BK,IACb,CAKA,eAAsBC,EAAgBD,EAAwD,CACrFF,OAAAA,EAAMI,KAAKP,EAAaK,CAAI,CACrC,CAKA,eAAsBG,EAAkBC,EAAyD,CACzFC,MAAAA,EAAW,IAAIC,SACZC,OAAAA,EAAAA,OAAO,QAASH,CAAI,EACZ,MAAMN,EAAMI,KAAK,GAAGP,CAAW,UAAWU,EAAU,CACnEG,QAAS,CACP,eAAgB,qBAAA,CAClB,CACD,CAGH,CCjCO,MAAMC,EAAsC,CACjDC,MAAO,GACPC,YAAa,GACbC,IAAK,GACLC,KAAM,GACNC,KAAM,KACNC,OAAQ,CAAA,CACV,ECFA,SAAwBC,GAAiB,CACjC,KAAA,CAAEhB,KAAAA,EAAMiB,OAAAA,EAAQC,WAAAA,EAAYC,QAAAA,EAASC,QAAAA,GAAYC,EAAS,CAC9DC,SAAUC,EACVC,QAAS3B,EACT4B,gBAAiBA,CAACC,EAAcC,IAAmBD,EACnDE,gBAAiBC,CAAAA,CAClB,EAEM,MAAA,CAAE7B,KAAMA,GAAQS,EAAwBQ,OAAAA,EAAQC,WAAAA,EAAYC,QAAAA,EAASC,QAAAA,CAAQ,CACtF,CAEO,SAASU,GAAuB,CACrC,MAAMC,EAAcC,EAAe,EAE7BC,EAAWC,EAAY,CAC3BC,WAAYlC,EACZmC,UAA+BC,GAAA,CACjBC,EAAAA,aAAaf,EAAcc,CAAc,CAAA,CACvD,CACD,EAEM,MAAA,CACLE,kBAAmBN,EAASO,YAC5BC,WAAYR,EAASS,UACrBC,gBAAiBV,EAASd,OAC5B,CACF"}
1
+ {"version":3,"file":"useProjectData-DP-pr73E.js","sources":["../../src/common/api/project.ts","../../src/common/models/ProjectData.ts","../../src/common/hooks-query/useProjectData.ts"],"sourcesContent":["import axios, { AxiosResponse } from 'axios';\nimport { ProjectData, ProjectLogoResponse } from 'ontime-types';\n\nimport { apiEntryUrl } from './constants';\n\nconst projectPath = `${apiEntryUrl}/project`;\n\n/**\n * HTTP request to fetch project data\n */\nexport async function getProjectData(): Promise<ProjectData> {\n const res = await axios.get(projectPath);\n return res.data;\n}\n\n/**\n * HTTP request to mutate project data\n */\nexport async function postProjectData(data: ProjectData): Promise<AxiosResponse<ProjectData>> {\n return axios.post(projectPath, data);\n}\n\n/**\n * HTTP request to upload a project logo\n */\nexport async function uploadProjectLogo(file: File): Promise<AxiosResponse<ProjectLogoResponse>> {\n const formData = new FormData();\n formData.append('image', file);\n const response = await axios.post(`${projectPath}/upload`, formData, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n });\n\n return response;\n}\n","import { ProjectData } from 'ontime-types';\n\nexport const projectDataPlaceholder: ProjectData = {\n title: '',\n description: '',\n url: '',\n info: '',\n logo: null,\n custom: [],\n};\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\n\nimport { queryRefetchIntervalSlow } from '../../ontimeConfig';\nimport { PROJECT_DATA } from '../api/constants';\nimport { getProjectData, postProjectData } from '../api/project';\nimport { projectDataPlaceholder } from '../models/ProjectData';\n\nexport default function useProjectData() {\n const { data, status, isFetching, isError, refetch } = useQuery({\n queryKey: PROJECT_DATA,\n queryFn: getProjectData,\n placeholderData: (previousData, _previousQuery) => previousData,\n refetchInterval: queryRefetchIntervalSlow,\n });\n\n return { data: data ?? projectDataPlaceholder, status, isFetching, isError, refetch };\n}\n\nexport function useUpdateProjectData() {\n const queryClient = useQueryClient();\n\n const updateFn = useMutation({\n mutationFn: postProjectData,\n onSuccess: (newProjectData) => {\n queryClient.setQueryData(PROJECT_DATA, newProjectData);\n },\n });\n\n return {\n updateProjectData: updateFn.mutateAsync,\n isMutating: updateFn.isPending,\n isMutatingError: updateFn.isError,\n };\n}\n"],"names":["projectPath","apiEntryUrl","getProjectData","axios","get","data","postProjectData","post","uploadProjectLogo","file","formData","FormData","append","headers","projectDataPlaceholder","title","description","url","info","logo","custom","useProjectData","status","isFetching","isError","refetch","useQuery","queryKey","PROJECT_DATA","queryFn","placeholderData","previousData","_previousQuery","refetchInterval","queryRefetchIntervalSlow","useUpdateProjectData","queryClient","useQueryClient","updateFn","useMutation","mutationFn","onSuccess","newProjectData","setQueryData","updateProjectData","mutateAsync","isMutating","isPending","isMutatingError"],"mappings":"idAKA,MAAMA,EAAc,GAAGC,CAAW,WAKlC,eAAsBC,GAAuC,CAE3D,OADY,MAAMC,EAAMC,IAAIJ,CAAW,GAC5BK,IACb,CAKA,eAAsBC,EAAgBD,EAAwD,CACrFF,OAAAA,EAAMI,KAAKP,EAAaK,CAAI,CACrC,CAKA,eAAsBG,EAAkBC,EAAyD,CACzFC,MAAAA,EAAW,IAAIC,SACZC,OAAAA,EAAAA,OAAO,QAASH,CAAI,EACZ,MAAMN,EAAMI,KAAK,GAAGP,CAAW,UAAWU,EAAU,CACnEG,QAAS,CACP,eAAgB,qBAAA,CAClB,CACD,CAGH,CCjCO,MAAMC,EAAsC,CACjDC,MAAO,GACPC,YAAa,GACbC,IAAK,GACLC,KAAM,GACNC,KAAM,KACNC,OAAQ,CAAA,CACV,ECFA,SAAwBC,GAAiB,CACjC,KAAA,CAAEhB,KAAAA,EAAMiB,OAAAA,EAAQC,WAAAA,EAAYC,QAAAA,EAASC,QAAAA,GAAYC,EAAS,CAC9DC,SAAUC,EACVC,QAAS3B,EACT4B,gBAAiBA,CAACC,EAAcC,IAAmBD,EACnDE,gBAAiBC,CAAAA,CAClB,EAEM,MAAA,CAAE7B,KAAMA,GAAQS,EAAwBQ,OAAAA,EAAQC,WAAAA,EAAYC,QAAAA,EAASC,QAAAA,CAAQ,CACtF,CAEO,SAASU,GAAuB,CACrC,MAAMC,EAAcC,EAAe,EAE7BC,EAAWC,EAAY,CAC3BC,WAAYlC,EACZmC,UAA+BC,GAAA,CACjBC,EAAAA,aAAaf,EAAcc,CAAc,CAAA,CACvD,CACD,EAEM,MAAA,CACLE,kBAAmBN,EAASO,YAC5BC,WAAYR,EAASS,UACrBC,gBAAiBV,EAASd,OAC5B,CACF"}
@@ -1,2 +1,2 @@
1
- import{e as r,k as o}from"./vendor-q6fv0YT2.js";import{ay as i,bu as d,bV as n,I as u}from"./index-B81u4hxi.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]="4685ef89-a793-4e74-913e-da2156ca19c0",e._sentryDebugIdIdentifier="sentry-dbid-4685ef89-a793-4e74-913e-da2156ca19c0")}catch{}})();const s=`${i}/report`;async function y(){return(await r.get(s)).data}async function p(){await r.delete(`${s}/all`),await d.invalidateQueries({queryKey:n})}function b(){const{data:e,refetch:t}=o({queryKey:n,queryFn:y,placeholderData:(a,l)=>a,retry:5,retryDelay:a=>a*2500,networkMode:"always",staleTime:u});return{data:e??{},refetch:t}}export{p as d,b as u};
2
- //# sourceMappingURL=useReport-DSuFnUb9.js.map
1
+ import{e as r,k as o}from"./vendor-DmGkEtRj.js";import{ay as i,bu as d,bV as n,I as u}from"./index-B1K7rED_.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]="4685ef89-a793-4e74-913e-da2156ca19c0",e._sentryDebugIdIdentifier="sentry-dbid-4685ef89-a793-4e74-913e-da2156ca19c0")}catch{}})();const s=`${i}/report`;async function y(){return(await r.get(s)).data}async function p(){await r.delete(`${s}/all`),await d.invalidateQueries({queryKey:n})}function b(){const{data:e,refetch:t}=o({queryKey:n,queryFn:y,placeholderData:(a,l)=>a,retry:5,retryDelay:a=>a*2500,networkMode:"always",staleTime:u});return{data:e??{},refetch:t}}export{p as d,b as u};
2
+ //# sourceMappingURL=useReport-6XA_s2Vc.js.map