@getontime/cli 4.4.2 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/client/assets/{Backstage-BdrcXNr9.js → Backstage-DQu8ne-1.js} +2 -2
  2. package/client/assets/Backstage-DQu8ne-1.js.br +0 -0
  3. package/client/assets/Backstage-DQu8ne-1.js.gz +0 -0
  4. package/client/assets/{Backstage-BdrcXNr9.js.map → Backstage-DQu8ne-1.js.map} +1 -1
  5. package/client/assets/{Countdown-DQM2ppPg.js → Countdown-COte1yne.js} +2 -2
  6. package/client/assets/Countdown-COte1yne.js.br +0 -0
  7. package/client/assets/Countdown-COte1yne.js.gz +0 -0
  8. package/client/assets/{Countdown-DQM2ppPg.js.map → Countdown-COte1yne.js.map} +1 -1
  9. package/client/assets/CuesheetTable-BQfxAp-I.js +2 -0
  10. package/client/assets/CuesheetTable-BQfxAp-I.js.br +0 -0
  11. package/client/assets/CuesheetTable-BQfxAp-I.js.gz +0 -0
  12. package/client/assets/CuesheetTable-BQfxAp-I.js.map +1 -0
  13. package/client/assets/CustomTranslationModal-C5mAtBjW.js +2 -0
  14. package/client/assets/CustomTranslationModal-C5mAtBjW.js.br +0 -0
  15. package/client/assets/CustomTranslationModal-C5mAtBjW.js.gz +0 -0
  16. package/client/assets/{CustomTranslationModal-CML7Vsot.js.map → CustomTranslationModal-C5mAtBjW.js.map} +1 -1
  17. package/client/assets/{DelayIndicator-DKS6mZdB.js → DelayIndicator-B0cudY9N.js} +2 -2
  18. package/client/assets/DelayIndicator-B0cudY9N.js.br +0 -0
  19. package/client/assets/DelayIndicator-B0cudY9N.js.gz +0 -0
  20. package/client/assets/DelayIndicator-B0cudY9N.js.map +1 -0
  21. package/client/assets/{EditorFeatureWrapper-C1vLQxiy.js → EditorFeatureWrapper-DpDaCaJ3.js} +2 -2
  22. package/client/assets/EditorFeatureWrapper-DpDaCaJ3.js.br +0 -0
  23. package/client/assets/EditorFeatureWrapper-DpDaCaJ3.js.gz +0 -0
  24. package/client/assets/{EditorFeatureWrapper-C1vLQxiy.js.map → EditorFeatureWrapper-DpDaCaJ3.js.map} +1 -1
  25. package/client/assets/{EditorUtils-BLcTuWz1.js → EditorUtils-k5KpETPG.js} +2 -2
  26. package/client/assets/EditorUtils-k5KpETPG.js.br +0 -0
  27. package/client/assets/EditorUtils-k5KpETPG.js.gz +0 -0
  28. package/client/assets/{EditorUtils-BLcTuWz1.js.map → EditorUtils-k5KpETPG.js.map} +1 -1
  29. package/client/assets/EmptyPage-aTb22KTq.js +2 -0
  30. package/client/assets/EmptyPage-aTb22KTq.js.br +0 -0
  31. package/client/assets/EmptyPage-aTb22KTq.js.gz +0 -0
  32. package/client/assets/{EmptyPage-CYVrjOvI.js.map → EmptyPage-aTb22KTq.js.map} +1 -1
  33. package/client/assets/{FollowButton-DcSbb4R_.js → FollowButton--Bj9S6jO.js} +2 -2
  34. package/client/assets/FollowButton--Bj9S6jO.js.br +0 -0
  35. package/client/assets/FollowButton--Bj9S6jO.js.gz +0 -0
  36. package/client/assets/{FollowButton-DcSbb4R_.js.map → FollowButton--Bj9S6jO.js.map} +1 -1
  37. package/client/assets/MessageControlExport-BN6OfADo.js +3 -0
  38. package/client/assets/MessageControlExport-BN6OfADo.js.br +0 -0
  39. package/client/assets/MessageControlExport-BN6OfADo.js.gz +0 -0
  40. package/client/assets/{MessageControlExport-BgT9JaXk.js.map → MessageControlExport-BN6OfADo.js.map} +1 -1
  41. package/client/assets/{MultiPartProgressBar-W2a-JWPY.js → MultiPartProgressBar-BlLJNQ0D.js} +2 -2
  42. package/client/assets/MultiPartProgressBar-BlLJNQ0D.js.br +0 -0
  43. package/client/assets/MultiPartProgressBar-BlLJNQ0D.js.gz +0 -0
  44. package/client/assets/{MultiPartProgressBar-W2a-JWPY.js.map → MultiPartProgressBar-BlLJNQ0D.js.map} +1 -1
  45. package/client/assets/{OperatorExport-CbWojpp6.js → OperatorExport-CmgIl1lz.js} +2 -2
  46. package/client/assets/OperatorExport-CmgIl1lz.js.br +0 -0
  47. package/client/assets/OperatorExport-CmgIl1lz.js.gz +0 -0
  48. package/client/assets/OperatorExport-CmgIl1lz.js.map +1 -0
  49. package/client/assets/OverviewWrapper-B4nU68Eq.js +2 -0
  50. package/client/assets/OverviewWrapper-B4nU68Eq.js.br +0 -0
  51. package/client/assets/OverviewWrapper-B4nU68Eq.js.gz +0 -0
  52. package/client/assets/{OverviewWrapper-B2i8d3rt.js.map → OverviewWrapper-B4nU68Eq.js.map} +1 -1
  53. package/client/assets/OverviewWrapper-fPfl6o_p.css +1 -0
  54. package/client/assets/OverviewWrapper-fPfl6o_p.css.br +0 -0
  55. package/client/assets/OverviewWrapper-fPfl6o_p.css.gz +0 -0
  56. package/client/assets/{PipHost-Dz2oy7XG.js → PipHost-BZy7ouDv.js} +2 -2
  57. package/client/assets/PipHost-BZy7ouDv.js.br +0 -0
  58. package/client/assets/PipHost-BZy7ouDv.js.gz +0 -0
  59. package/client/assets/{PipHost-Dz2oy7XG.js.map → PipHost-BZy7ouDv.js.map} +1 -1
  60. package/client/assets/{ProjectInfo-BR_7Hp5u.js → ProjectInfo-D0X9vdIX.js} +2 -2
  61. package/client/assets/ProjectInfo-D0X9vdIX.js.br +0 -0
  62. package/client/assets/ProjectInfo-D0X9vdIX.js.gz +0 -0
  63. package/client/assets/{ProjectInfo-BR_7Hp5u.js.map → ProjectInfo-D0X9vdIX.js.map} +1 -1
  64. package/client/assets/ProtectRoute-DSilyhst.js +2 -0
  65. package/client/assets/ProtectRoute-DSilyhst.js.br +0 -0
  66. package/client/assets/ProtectRoute-DSilyhst.js.gz +0 -0
  67. package/client/assets/{ProtectRoute-Bxq6q7ba.js.map → ProtectRoute-DSilyhst.js.map} +1 -1
  68. package/client/assets/ProtectedCuesheet-DRTfZTZN.js +2 -0
  69. package/client/assets/ProtectedCuesheet-DRTfZTZN.js.br +0 -0
  70. package/client/assets/ProtectedCuesheet-DRTfZTZN.js.gz +0 -0
  71. package/client/assets/ProtectedCuesheet-DRTfZTZN.js.map +1 -0
  72. package/client/assets/ProtectedEditor-DNOiQqIU.js +3 -0
  73. package/client/assets/ProtectedEditor-DNOiQqIU.js.br +0 -0
  74. package/client/assets/ProtectedEditor-DNOiQqIU.js.gz +0 -0
  75. package/client/assets/ProtectedEditor-DNOiQqIU.js.map +1 -0
  76. package/client/assets/ProtectedEditor-DyaLP0mG.css +1 -0
  77. package/client/assets/ProtectedEditor-DyaLP0mG.css.br +0 -0
  78. package/client/assets/ProtectedEditor-DyaLP0mG.css.gz +0 -0
  79. package/client/assets/{RundownExport-25orDQIW.js → RundownExport-Bvc1J50m.js} +2 -2
  80. package/client/assets/RundownExport-Bvc1J50m.js.br +0 -0
  81. package/client/assets/RundownExport-Bvc1J50m.js.gz +0 -0
  82. package/client/assets/RundownExport-Bvc1J50m.js.map +1 -0
  83. package/client/assets/{Select-BnGTAeXJ.js → Select-CvUrsmYI.js} +2 -2
  84. package/client/assets/Select-CvUrsmYI.js.br +0 -0
  85. package/client/assets/Select-CvUrsmYI.js.gz +0 -0
  86. package/client/assets/{Select-BnGTAeXJ.js.map → Select-CvUrsmYI.js.map} +1 -1
  87. package/client/assets/{Studio-BK2Klo_K.js → Studio-BSSiKd6k.js} +2 -2
  88. package/client/assets/Studio-BSSiKd6k.js.br +0 -0
  89. package/client/assets/Studio-BSSiKd6k.js.gz +0 -0
  90. package/client/assets/{Studio-BK2Klo_K.js.map → Studio-BSSiKd6k.js.map} +1 -1
  91. package/client/assets/{StyleEditor-DIHQ1PUV.js → StyleEditor-buc-zQHR.js} +2 -2
  92. package/client/assets/StyleEditor-buc-zQHR.js.br +0 -0
  93. package/client/assets/StyleEditor-buc-zQHR.js.gz +0 -0
  94. package/client/assets/{StyleEditor-DIHQ1PUV.js.map → StyleEditor-buc-zQHR.js.map} +1 -1
  95. package/client/assets/{SuperscriptPeriod-EEedc9rG.js → SuperscriptPeriod-CSX8zFgq.js} +2 -2
  96. package/client/assets/SuperscriptPeriod-CSX8zFgq.js.br +0 -0
  97. package/client/assets/SuperscriptPeriod-CSX8zFgq.js.gz +0 -0
  98. package/client/assets/{SuperscriptPeriod-EEedc9rG.js.map → SuperscriptPeriod-CSX8zFgq.js.map} +1 -1
  99. package/client/assets/{SuperscriptTime-BVanhNvd.js → SuperscriptTime-retbmT5o.js} +2 -2
  100. package/client/assets/SuperscriptTime-retbmT5o.js.br +0 -0
  101. package/client/assets/SuperscriptTime-retbmT5o.js.gz +0 -0
  102. package/client/assets/{SuperscriptTime-BVanhNvd.js.map → SuperscriptTime-retbmT5o.js.map} +1 -1
  103. package/client/assets/SwatchPicker-DuWAohyD.js +2 -0
  104. package/client/assets/SwatchPicker-DuWAohyD.js.br +0 -0
  105. package/client/assets/SwatchPicker-DuWAohyD.js.gz +0 -0
  106. package/client/assets/{SwatchPicker-Ckpchvjo.js.map → SwatchPicker-DuWAohyD.js.map} +1 -1
  107. package/client/assets/TimeElements-BfxdLkpO.js +2 -0
  108. package/client/assets/TimeElements-BfxdLkpO.js.br +0 -0
  109. package/client/assets/TimeElements-BfxdLkpO.js.gz +0 -0
  110. package/client/assets/{TimeElements-CYIgGk0T.js.map → TimeElements-BfxdLkpO.js.map} +1 -1
  111. package/client/assets/{TimeInput-Cwl9vLWA.js → TimeInput-BjOTgjcv.js} +2 -2
  112. package/client/assets/TimeInput-BjOTgjcv.js.br +0 -0
  113. package/client/assets/TimeInput-BjOTgjcv.js.gz +0 -0
  114. package/client/assets/{TimeInput-Cwl9vLWA.js.map → TimeInput-BjOTgjcv.js.map} +1 -1
  115. package/client/assets/{TimelinePage-D4QNdk-Z.js → TimelinePage-pjff5TxG.js} +2 -2
  116. package/client/assets/TimelinePage-pjff5TxG.js.br +0 -0
  117. package/client/assets/TimelinePage-pjff5TxG.js.gz +0 -0
  118. package/client/assets/TimelinePage-pjff5TxG.js.map +1 -0
  119. package/client/assets/{Timer-BJQKNHfo.js → Timer-ahF-O2zN.js} +2 -2
  120. package/client/assets/Timer-ahF-O2zN.js.br +0 -0
  121. package/client/assets/Timer-ahF-O2zN.js.gz +0 -0
  122. package/client/assets/{Timer-BJQKNHfo.js.map → Timer-ahF-O2zN.js.map} +1 -1
  123. package/client/assets/TimerControlExport-De2n8HWG.js +2 -0
  124. package/client/assets/TimerControlExport-De2n8HWG.js.br +0 -0
  125. package/client/assets/TimerControlExport-De2n8HWG.js.gz +0 -0
  126. package/client/assets/TimerControlExport-De2n8HWG.js.map +1 -0
  127. package/client/assets/TimerDisplay-DeFQvmo9.js +2 -0
  128. package/client/assets/TimerDisplay-DeFQvmo9.js.br +0 -0
  129. package/client/assets/TimerDisplay-DeFQvmo9.js.gz +0 -0
  130. package/client/assets/{TimerDisplay-tVcUk9j3.js.map → TimerDisplay-DeFQvmo9.js.map} +1 -1
  131. package/client/assets/{TitleCard-BNjv58eq.js → TitleCard-BiaQE4ZK.js} +2 -2
  132. package/client/assets/TitleCard-BiaQE4ZK.js.br +0 -0
  133. package/client/assets/TitleCard-BiaQE4ZK.js.gz +0 -0
  134. package/client/assets/{TitleCard-BNjv58eq.js.map → TitleCard-BiaQE4ZK.js.map} +1 -1
  135. package/client/assets/{Tooltip-DZJ7u9gm.js → Tooltip-C5iPq6NR.js} +2 -2
  136. package/client/assets/Tooltip-C5iPq6NR.js.br +0 -0
  137. package/client/assets/Tooltip-C5iPq6NR.js.gz +0 -0
  138. package/client/assets/{Tooltip-DZJ7u9gm.js.map → Tooltip-C5iPq6NR.js.map} +1 -1
  139. package/client/assets/{ViewLogo-2I7w5Yms.js → ViewLogo-DcDhyyIF.js} +2 -2
  140. package/client/assets/ViewLogo-DcDhyyIF.js.br +0 -0
  141. package/client/assets/ViewLogo-DcDhyyIF.js.gz +0 -0
  142. package/client/assets/{ViewLogo-2I7w5Yms.js.map → ViewLogo-DcDhyyIF.js.map} +1 -1
  143. package/client/assets/{ViewParamsEditor-BX2RM8sx.js → ViewParamsEditor-DeMdkxxC.js} +2 -2
  144. package/client/assets/ViewParamsEditor-DeMdkxxC.js.br +0 -0
  145. package/client/assets/ViewParamsEditor-DeMdkxxC.js.gz +0 -0
  146. package/client/assets/{ViewParamsEditor-BX2RM8sx.js.map → ViewParamsEditor-DeMdkxxC.js.map} +1 -1
  147. package/client/assets/{editorSettings-_x6YKRfR.js → editorSettings-xk5GwlLv.js} +2 -2
  148. package/client/assets/editorSettings-xk5GwlLv.js.br +0 -0
  149. package/client/assets/editorSettings-xk5GwlLv.js.gz +0 -0
  150. package/client/assets/{editorSettings-_x6YKRfR.js.map → editorSettings-xk5GwlLv.js.map} +1 -1
  151. package/client/assets/{getProgress-ZUTmCn_v.js → getProgress-CWSCZOIN.js} +2 -2
  152. package/client/assets/getProgress-CWSCZOIN.js.br +0 -0
  153. package/client/assets/getProgress-CWSCZOIN.js.gz +0 -0
  154. package/client/assets/{getProgress-ZUTmCn_v.js.map → getProgress-CWSCZOIN.js.map} +1 -1
  155. package/client/assets/index-3aosT33y.js +3 -0
  156. package/client/assets/index-3aosT33y.js.br +0 -0
  157. package/client/assets/index-3aosT33y.js.gz +0 -0
  158. package/client/assets/index-3aosT33y.js.map +1 -0
  159. package/client/assets/{offset-VthsmtrO.js → offset-yVqq_CB1.js} +2 -2
  160. package/client/assets/offset-yVqq_CB1.js.br +0 -0
  161. package/client/assets/offset-yVqq_CB1.js.gz +0 -0
  162. package/client/assets/{offset-VthsmtrO.js.map → offset-yVqq_CB1.js.map} +1 -1
  163. package/client/assets/parseUserTime-wAKk9aCJ.js +2 -0
  164. package/client/assets/parseUserTime-wAKk9aCJ.js.br +0 -0
  165. package/client/assets/parseUserTime-wAKk9aCJ.js.gz +0 -0
  166. package/client/assets/{parseUserTime-sZbEBi61.js.map → parseUserTime-wAKk9aCJ.js.map} +1 -1
  167. package/client/assets/{playbackstate-Dl_ZJABT.js → playbackstate-BZ9WYn2k.js} +2 -2
  168. package/client/assets/playbackstate-BZ9WYn2k.js.br +0 -0
  169. package/client/assets/playbackstate-BZ9WYn2k.js.gz +0 -0
  170. package/client/assets/{playbackstate-Dl_ZJABT.js.map → playbackstate-BZ9WYn2k.js.map} +1 -1
  171. package/client/assets/{presentation.utils-Z61KykAH.js → presentation.utils-lyuuD4A5.js} +2 -2
  172. package/client/assets/presentation.utils-lyuuD4A5.js.br +0 -0
  173. package/client/assets/presentation.utils-lyuuD4A5.js.gz +0 -0
  174. package/client/assets/{presentation.utils-Z61KykAH.js.map → presentation.utils-lyuuD4A5.js.map} +1 -1
  175. package/client/assets/{rundownUtils-CXZRD6yP.js → rundownUtils-XX_c4Pcl.js} +2 -2
  176. package/client/assets/rundownUtils-XX_c4Pcl.js.br +0 -0
  177. package/client/assets/rundownUtils-XX_c4Pcl.js.gz +0 -0
  178. package/client/assets/{rundownUtils-CXZRD6yP.js.map → rundownUtils-XX_c4Pcl.js.map} +1 -1
  179. package/client/assets/{timer.utils-B4bvsns3.js → timer.utils-CWHFVz06.js} +2 -2
  180. package/client/assets/timer.utils-CWHFVz06.js.br +0 -0
  181. package/client/assets/timer.utils-CWHFVz06.js.gz +0 -0
  182. package/client/assets/{timer.utils-B4bvsns3.js.map → timer.utils-CWHFVz06.js.map} +1 -1
  183. package/client/assets/useCustomFields-kBD1jvDA.js +2 -0
  184. package/client/assets/useCustomFields-kBD1jvDA.js.br +0 -0
  185. package/client/assets/useCustomFields-kBD1jvDA.js.gz +0 -0
  186. package/client/assets/{useCustomFields-BBE4LBBr.js.map → useCustomFields-kBD1jvDA.js.map} +1 -1
  187. package/client/assets/{useEventSelection-Bpbu89c7.js → useEventSelection-Cvdw9all.js} +2 -2
  188. package/client/assets/useEventSelection-Cvdw9all.js.br +0 -0
  189. package/client/assets/useEventSelection-Cvdw9all.js.gz +0 -0
  190. package/client/assets/{useEventSelection-Bpbu89c7.js.map → useEventSelection-Cvdw9all.js.map} +1 -1
  191. package/client/assets/{useProjectData-C110zIXC.js → useProjectData-gGT2eczr.js} +2 -2
  192. package/client/assets/useProjectData-gGT2eczr.js.br +0 -0
  193. package/client/assets/useProjectData-gGT2eczr.js.gz +0 -0
  194. package/client/assets/{useProjectData-C110zIXC.js.map → useProjectData-gGT2eczr.js.map} +1 -1
  195. package/client/assets/{useReport-DqSBq4MG.js → useReport-CG6m_Zb0.js} +2 -2
  196. package/client/assets/useReport-CG6m_Zb0.js.br +0 -0
  197. package/client/assets/useReport-CG6m_Zb0.js.gz +0 -0
  198. package/client/assets/{useReport-DqSBq4MG.js.map → useReport-CG6m_Zb0.js.map} +1 -1
  199. package/client/assets/{useRundown-DAo6huE4.js → useRundown-C6stroSA.js} +2 -2
  200. package/client/assets/useRundown-C6stroSA.js.br +0 -0
  201. package/client/assets/useRundown-C6stroSA.js.gz +0 -0
  202. package/client/assets/useRundown-C6stroSA.js.map +1 -0
  203. package/client/assets/{useSelectAndRevealEntry-DTg0hmxA.js → useSelectAndRevealEntry-D79sYFHr.js} +2 -2
  204. package/client/assets/useSelectAndRevealEntry-D79sYFHr.js.br +0 -0
  205. package/client/assets/useSelectAndRevealEntry-D79sYFHr.js.gz +0 -0
  206. package/client/assets/{useSelectAndRevealEntry-DTg0hmxA.js.map → useSelectAndRevealEntry-D79sYFHr.js.map} +1 -1
  207. package/client/assets/{useWindowTitle-DM8dIp8L.js → useWindowTitle-CQ8nEeel.js} +2 -2
  208. package/client/assets/useWindowTitle-CQ8nEeel.js.br +0 -0
  209. package/client/assets/useWindowTitle-CQ8nEeel.js.gz +0 -0
  210. package/client/assets/{useWindowTitle-DM8dIp8L.js.map → useWindowTitle-CQ8nEeel.js.map} +1 -1
  211. package/client/assets/{validateEvent-GnPt-e9-.js → validateEvent-BnwPmDph.js} +2 -2
  212. package/client/assets/validateEvent-BnwPmDph.js.br +0 -0
  213. package/client/assets/validateEvent-BnwPmDph.js.gz +0 -0
  214. package/client/assets/{validateEvent-GnPt-e9-.js.map → validateEvent-BnwPmDph.js.map} +1 -1
  215. package/client/assets/{vendor-BKUJ0_Du.js → vendor-Dt3_Fdfs.js} +2 -2
  216. package/client/assets/vendor-Dt3_Fdfs.js.br +0 -0
  217. package/client/assets/vendor-Dt3_Fdfs.js.gz +0 -0
  218. package/client/assets/{vendor-BKUJ0_Du.js.map → vendor-Dt3_Fdfs.js.map} +1 -1
  219. package/client/assets/{viewLoader.utils-4lL4PiNI.js → viewLoader.utils-H7r-zNPP.js} +2 -2
  220. package/client/assets/viewLoader.utils-H7r-zNPP.js.br +0 -0
  221. package/client/assets/viewLoader.utils-H7r-zNPP.js.gz +0 -0
  222. package/client/assets/{viewLoader.utils-4lL4PiNI.js.map → viewLoader.utils-H7r-zNPP.js.map} +1 -1
  223. package/client/assets/{viewUtils-29a3Mmiu.js → viewUtils-k0tARVDN.js} +2 -2
  224. package/client/assets/viewUtils-k0tARVDN.js.br +0 -0
  225. package/client/assets/viewUtils-k0tARVDN.js.gz +0 -0
  226. package/client/assets/{viewUtils-29a3Mmiu.js.map → viewUtils-k0tARVDN.js.map} +1 -1
  227. package/client/index.html +2 -2
  228. package/package.json +1 -1
  229. package/server/index.cjs +104 -104
  230. package/client/assets/Backstage-BdrcXNr9.js.br +0 -0
  231. package/client/assets/Backstage-BdrcXNr9.js.gz +0 -0
  232. package/client/assets/Countdown-DQM2ppPg.js.br +0 -0
  233. package/client/assets/Countdown-DQM2ppPg.js.gz +0 -0
  234. package/client/assets/CuesheetTable-B5LQVh5m.js +0 -2
  235. package/client/assets/CuesheetTable-B5LQVh5m.js.br +0 -0
  236. package/client/assets/CuesheetTable-B5LQVh5m.js.gz +0 -0
  237. package/client/assets/CuesheetTable-B5LQVh5m.js.map +0 -1
  238. package/client/assets/CustomTranslationModal-CML7Vsot.js +0 -2
  239. package/client/assets/CustomTranslationModal-CML7Vsot.js.br +0 -0
  240. package/client/assets/CustomTranslationModal-CML7Vsot.js.gz +0 -0
  241. package/client/assets/DelayIndicator-DKS6mZdB.js.br +0 -0
  242. package/client/assets/DelayIndicator-DKS6mZdB.js.gz +0 -0
  243. package/client/assets/DelayIndicator-DKS6mZdB.js.map +0 -1
  244. package/client/assets/EditorFeatureWrapper-C1vLQxiy.js.br +0 -0
  245. package/client/assets/EditorFeatureWrapper-C1vLQxiy.js.gz +0 -0
  246. package/client/assets/EditorUtils-BLcTuWz1.js.br +0 -0
  247. package/client/assets/EditorUtils-BLcTuWz1.js.gz +0 -0
  248. package/client/assets/EmptyPage-CYVrjOvI.js +0 -2
  249. package/client/assets/EmptyPage-CYVrjOvI.js.br +0 -0
  250. package/client/assets/EmptyPage-CYVrjOvI.js.gz +0 -0
  251. package/client/assets/FollowButton-DcSbb4R_.js.br +0 -0
  252. package/client/assets/FollowButton-DcSbb4R_.js.gz +0 -0
  253. package/client/assets/MessageControlExport-BgT9JaXk.js +0 -3
  254. package/client/assets/MessageControlExport-BgT9JaXk.js.br +0 -0
  255. package/client/assets/MessageControlExport-BgT9JaXk.js.gz +0 -0
  256. package/client/assets/MultiPartProgressBar-W2a-JWPY.js.br +0 -0
  257. package/client/assets/MultiPartProgressBar-W2a-JWPY.js.gz +0 -0
  258. package/client/assets/OperatorExport-CbWojpp6.js.br +0 -0
  259. package/client/assets/OperatorExport-CbWojpp6.js.gz +0 -0
  260. package/client/assets/OperatorExport-CbWojpp6.js.map +0 -1
  261. package/client/assets/OverviewWrapper-B2i8d3rt.js +0 -2
  262. package/client/assets/OverviewWrapper-B2i8d3rt.js.br +0 -0
  263. package/client/assets/OverviewWrapper-B2i8d3rt.js.gz +0 -0
  264. package/client/assets/OverviewWrapper-DOYzR0Ef.css +0 -1
  265. package/client/assets/OverviewWrapper-DOYzR0Ef.css.br +0 -0
  266. package/client/assets/OverviewWrapper-DOYzR0Ef.css.gz +0 -0
  267. package/client/assets/PipHost-Dz2oy7XG.js.br +0 -0
  268. package/client/assets/PipHost-Dz2oy7XG.js.gz +0 -0
  269. package/client/assets/ProjectInfo-BR_7Hp5u.js.br +0 -0
  270. package/client/assets/ProjectInfo-BR_7Hp5u.js.gz +0 -0
  271. package/client/assets/ProtectRoute-Bxq6q7ba.js +0 -2
  272. package/client/assets/ProtectRoute-Bxq6q7ba.js.br +0 -0
  273. package/client/assets/ProtectRoute-Bxq6q7ba.js.gz +0 -0
  274. package/client/assets/ProtectedCuesheet-C7AqD2dy.js +0 -2
  275. package/client/assets/ProtectedCuesheet-C7AqD2dy.js.br +0 -0
  276. package/client/assets/ProtectedCuesheet-C7AqD2dy.js.gz +0 -0
  277. package/client/assets/ProtectedCuesheet-C7AqD2dy.js.map +0 -1
  278. package/client/assets/ProtectedEditor-CsfvVyOU.js +0 -3
  279. package/client/assets/ProtectedEditor-CsfvVyOU.js.br +0 -0
  280. package/client/assets/ProtectedEditor-CsfvVyOU.js.gz +0 -0
  281. package/client/assets/ProtectedEditor-CsfvVyOU.js.map +0 -1
  282. package/client/assets/ProtectedEditor-DID9cfOA.css +0 -1
  283. package/client/assets/ProtectedEditor-DID9cfOA.css.br +0 -0
  284. package/client/assets/ProtectedEditor-DID9cfOA.css.gz +0 -0
  285. package/client/assets/RundownExport-25orDQIW.js.br +0 -0
  286. package/client/assets/RundownExport-25orDQIW.js.gz +0 -0
  287. package/client/assets/RundownExport-25orDQIW.js.map +0 -1
  288. package/client/assets/Select-BnGTAeXJ.js.br +0 -0
  289. package/client/assets/Select-BnGTAeXJ.js.gz +0 -0
  290. package/client/assets/Studio-BK2Klo_K.js.br +0 -0
  291. package/client/assets/Studio-BK2Klo_K.js.gz +0 -0
  292. package/client/assets/StyleEditor-DIHQ1PUV.js.br +0 -0
  293. package/client/assets/StyleEditor-DIHQ1PUV.js.gz +0 -0
  294. package/client/assets/SuperscriptPeriod-EEedc9rG.js.br +0 -0
  295. package/client/assets/SuperscriptPeriod-EEedc9rG.js.gz +0 -0
  296. package/client/assets/SuperscriptTime-BVanhNvd.js.br +0 -0
  297. package/client/assets/SuperscriptTime-BVanhNvd.js.gz +0 -0
  298. package/client/assets/SwatchPicker-Ckpchvjo.js +0 -2
  299. package/client/assets/SwatchPicker-Ckpchvjo.js.br +0 -0
  300. package/client/assets/SwatchPicker-Ckpchvjo.js.gz +0 -0
  301. package/client/assets/TimeElements-CYIgGk0T.js +0 -2
  302. package/client/assets/TimeElements-CYIgGk0T.js.br +0 -0
  303. package/client/assets/TimeElements-CYIgGk0T.js.gz +0 -0
  304. package/client/assets/TimeInput-Cwl9vLWA.js.br +0 -0
  305. package/client/assets/TimeInput-Cwl9vLWA.js.gz +0 -0
  306. package/client/assets/TimelinePage-D4QNdk-Z.js.br +0 -0
  307. package/client/assets/TimelinePage-D4QNdk-Z.js.gz +0 -0
  308. package/client/assets/TimelinePage-D4QNdk-Z.js.map +0 -1
  309. package/client/assets/Timer-BJQKNHfo.js.br +0 -0
  310. package/client/assets/Timer-BJQKNHfo.js.gz +0 -0
  311. package/client/assets/TimerControlExport-Ba1vifNg.js +0 -2
  312. package/client/assets/TimerControlExport-Ba1vifNg.js.br +0 -0
  313. package/client/assets/TimerControlExport-Ba1vifNg.js.gz +0 -0
  314. package/client/assets/TimerControlExport-Ba1vifNg.js.map +0 -1
  315. package/client/assets/TimerDisplay-tVcUk9j3.js +0 -2
  316. package/client/assets/TimerDisplay-tVcUk9j3.js.br +0 -0
  317. package/client/assets/TimerDisplay-tVcUk9j3.js.gz +0 -0
  318. package/client/assets/TitleCard-BNjv58eq.js.br +0 -0
  319. package/client/assets/TitleCard-BNjv58eq.js.gz +0 -0
  320. package/client/assets/Tooltip-DZJ7u9gm.js.br +0 -4
  321. package/client/assets/Tooltip-DZJ7u9gm.js.gz +0 -0
  322. package/client/assets/ViewLogo-2I7w5Yms.js.br +0 -0
  323. package/client/assets/ViewLogo-2I7w5Yms.js.gz +0 -0
  324. package/client/assets/ViewParamsEditor-BX2RM8sx.js.br +0 -0
  325. package/client/assets/ViewParamsEditor-BX2RM8sx.js.gz +0 -0
  326. package/client/assets/editorSettings-_x6YKRfR.js.br +0 -6
  327. package/client/assets/editorSettings-_x6YKRfR.js.gz +0 -0
  328. package/client/assets/getProgress-ZUTmCn_v.js.br +0 -0
  329. package/client/assets/getProgress-ZUTmCn_v.js.gz +0 -0
  330. package/client/assets/index-Dm-4OTmY.js +0 -3
  331. package/client/assets/index-Dm-4OTmY.js.br +0 -0
  332. package/client/assets/index-Dm-4OTmY.js.gz +0 -0
  333. package/client/assets/index-Dm-4OTmY.js.map +0 -1
  334. package/client/assets/offset-VthsmtrO.js.br +0 -0
  335. package/client/assets/offset-VthsmtrO.js.gz +0 -0
  336. package/client/assets/parseUserTime-sZbEBi61.js +0 -2
  337. package/client/assets/parseUserTime-sZbEBi61.js.br +0 -0
  338. package/client/assets/parseUserTime-sZbEBi61.js.gz +0 -0
  339. package/client/assets/playbackstate-Dl_ZJABT.js.br +0 -0
  340. package/client/assets/playbackstate-Dl_ZJABT.js.gz +0 -0
  341. package/client/assets/presentation.utils-Z61KykAH.js.br +0 -0
  342. package/client/assets/presentation.utils-Z61KykAH.js.gz +0 -0
  343. package/client/assets/rundownUtils-CXZRD6yP.js.br +0 -0
  344. package/client/assets/rundownUtils-CXZRD6yP.js.gz +0 -0
  345. package/client/assets/timer.utils-B4bvsns3.js.br +0 -0
  346. package/client/assets/timer.utils-B4bvsns3.js.gz +0 -0
  347. package/client/assets/useCustomFields-BBE4LBBr.js +0 -2
  348. package/client/assets/useCustomFields-BBE4LBBr.js.br +0 -0
  349. package/client/assets/useCustomFields-BBE4LBBr.js.gz +0 -0
  350. package/client/assets/useEventSelection-Bpbu89c7.js.br +0 -0
  351. package/client/assets/useEventSelection-Bpbu89c7.js.gz +0 -0
  352. package/client/assets/useProjectData-C110zIXC.js.br +0 -0
  353. package/client/assets/useProjectData-C110zIXC.js.gz +0 -0
  354. package/client/assets/useReport-DqSBq4MG.js.br +0 -0
  355. package/client/assets/useReport-DqSBq4MG.js.gz +0 -0
  356. package/client/assets/useRundown-DAo6huE4.js.br +0 -0
  357. package/client/assets/useRundown-DAo6huE4.js.gz +0 -0
  358. package/client/assets/useRundown-DAo6huE4.js.map +0 -1
  359. package/client/assets/useSelectAndRevealEntry-DTg0hmxA.js.br +0 -0
  360. package/client/assets/useSelectAndRevealEntry-DTg0hmxA.js.gz +0 -0
  361. package/client/assets/useWindowTitle-DM8dIp8L.js.br +0 -0
  362. package/client/assets/useWindowTitle-DM8dIp8L.js.gz +0 -0
  363. package/client/assets/validateEvent-GnPt-e9-.js.br +0 -0
  364. package/client/assets/validateEvent-GnPt-e9-.js.gz +0 -0
  365. package/client/assets/vendor-BKUJ0_Du.js.br +0 -0
  366. package/client/assets/vendor-BKUJ0_Du.js.gz +0 -0
  367. package/client/assets/viewLoader.utils-4lL4PiNI.js.br +0 -0
  368. package/client/assets/viewLoader.utils-4lL4PiNI.js.gz +0 -0
  369. package/client/assets/viewUtils-29a3Mmiu.js.br +0 -0
  370. package/client/assets/viewUtils-29a3Mmiu.js.gz +0 -0
@@ -1,2 +1,2 @@
1
- import{j as e,c8 as a,c9 as d,ca as m,cb as _,cc as f,cd as j,ce as u,cf as I,cg as p,ch as x,ci as b,cj as S,ck as g,A as h,cl as w,cm as y}from"./vendor-BKUJ0_Du.js";import{e as N}from"./index-Dm-4OTmY.js";(function(){try{var c=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},i=new c.Error().stack;i&&(c._sentryDebugIds=c._sentryDebugIds||{},c._sentryDebugIds[i]="e399f2ec-741c-46e9-9197-9c125fb4722d",c._sentryDebugIdIdentifier="sentry-dbid-e399f2ec-741c-46e9-9197-9c125fb4722d")}catch{}})();const A="_blink_fi0ij_1",k="_fourtyfive_fi0ij_13",D="_select_fi0ij_17",L="_medium_fi0ij_51",v="_large_fi0ij_55",T="_fluid_fi0ij_59",P="_selectIcon_fi0ij_63",C="_popup_fi0ij_67",E="_list_fi0ij_82",R="_item_fi0ij_92",U="_itemIndicator_fi0ij_110",V="_itemIndicatorIcon_fi0ij_114",q="_itemLabel_fi0ij_120",z="_scrollArrow_fi0ij_124",s={blink:A,fourtyfive:k,select:D,medium:L,large:v,fluid:T,selectIcon:P,popup:C,list:E,item:R,itemIndicator:U,itemIndicatorIcon:V,itemLabel:q,scrollArrow:z};function G({options:c,fluid:i,size:t="medium",...o}){return e.jsxs(a,{items:c,...o,children:[e.jsxs(d,{className:N([s.select,s[t],i&&s.fluid]),children:[e.jsx(m,{}),e.jsx(_,{className:s.selectIcon,children:e.jsx(f,{})})]}),e.jsx(j,{children:e.jsxs(u,{side:"bottom",align:"start",children:[e.jsx(I,{className:s.scrollArrow}),e.jsxs(p,{className:s.popup,children:[e.jsx(x,{}),e.jsx(b,{className:s.list,children:c.map(({disabled:r,label:n,value:l})=>e.jsxs(S,{className:s.item,value:l,disabled:r,children:[e.jsx(g,{className:s.itemIndicator,children:e.jsx(h,{className:s.itemIndicatorIcon})}),e.jsx(w,{className:s.itemLabel,children:n})]},String(l)))})]}),e.jsx(y,{className:s.scrollArrow})]})})]})}export{G as S};
2
- //# sourceMappingURL=Select-BnGTAeXJ.js.map
1
+ import{j as e,c8 as a,c9 as d,ca as m,cb as _,cc as f,cd as j,ce as u,cf as I,cg as p,ch as x,ci as b,cj as S,ck as g,A as h,cl as w,cm as y}from"./vendor-Dt3_Fdfs.js";import{e as N}from"./index-3aosT33y.js";(function(){try{var c=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},i=new c.Error().stack;i&&(c._sentryDebugIds=c._sentryDebugIds||{},c._sentryDebugIds[i]="e399f2ec-741c-46e9-9197-9c125fb4722d",c._sentryDebugIdIdentifier="sentry-dbid-e399f2ec-741c-46e9-9197-9c125fb4722d")}catch{}})();const A="_blink_fi0ij_1",k="_fourtyfive_fi0ij_13",D="_select_fi0ij_17",L="_medium_fi0ij_51",v="_large_fi0ij_55",T="_fluid_fi0ij_59",P="_selectIcon_fi0ij_63",C="_popup_fi0ij_67",E="_list_fi0ij_82",R="_item_fi0ij_92",U="_itemIndicator_fi0ij_110",V="_itemIndicatorIcon_fi0ij_114",q="_itemLabel_fi0ij_120",z="_scrollArrow_fi0ij_124",s={blink:A,fourtyfive:k,select:D,medium:L,large:v,fluid:T,selectIcon:P,popup:C,list:E,item:R,itemIndicator:U,itemIndicatorIcon:V,itemLabel:q,scrollArrow:z};function G({options:c,fluid:i,size:t="medium",...o}){return e.jsxs(a,{items:c,...o,children:[e.jsxs(d,{className:N([s.select,s[t],i&&s.fluid]),children:[e.jsx(m,{}),e.jsx(_,{className:s.selectIcon,children:e.jsx(f,{})})]}),e.jsx(j,{children:e.jsxs(u,{side:"bottom",align:"start",children:[e.jsx(I,{className:s.scrollArrow}),e.jsxs(p,{className:s.popup,children:[e.jsx(x,{}),e.jsx(b,{className:s.list,children:c.map(({disabled:r,label:n,value:l})=>e.jsxs(S,{className:s.item,value:l,disabled:r,children:[e.jsx(g,{className:s.itemIndicator,children:e.jsx(h,{className:s.itemIndicatorIcon})}),e.jsx(w,{className:s.itemLabel,children:n})]},String(l)))})]}),e.jsx(y,{className:s.scrollArrow})]})})]})}export{G as S};
2
+ //# sourceMappingURL=Select-CvUrsmYI.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select-BnGTAeXJ.js","sources":["../../src/common/components/select/Select.tsx"],"sourcesContent":["import { IoCheckmark } from 'react-icons/io5';\nimport { LuChevronsUpDown } from 'react-icons/lu';\nimport { Select as BaseSelect } from '@base-ui/react/select';\n\nimport { cx } from '../../utils/styleUtils';\n\nimport styles from './Select.module.scss';\n\nexport type SelectOption<T = string> = {\n value: T;\n label: string;\n disabled?: boolean;\n};\n\ninterface SelectProps<T> extends Omit<BaseSelect.Root.Props<T>, 'items'> {\n options: SelectOption<T>[];\n fluid?: boolean;\n size?: 'medium' | 'large';\n}\n\nexport default function Select<T>({ options, fluid, size = 'medium', ...selectRootProps }: SelectProps<T>) {\n return (\n <BaseSelect.Root items={options} {...selectRootProps}>\n <BaseSelect.Trigger className={cx([styles.select, styles[size], fluid && styles.fluid])}>\n <BaseSelect.Value />\n <BaseSelect.Icon className={styles.selectIcon}>\n <LuChevronsUpDown />\n </BaseSelect.Icon>\n </BaseSelect.Trigger>\n <BaseSelect.Portal>\n <BaseSelect.Positioner side='bottom' align='start'>\n <BaseSelect.ScrollUpArrow className={styles.scrollArrow} />\n <BaseSelect.Popup className={styles.popup}>\n <BaseSelect.Arrow />\n <BaseSelect.List className={styles.list}>\n {options.map(({ disabled, label, value }) => (\n <BaseSelect.Item key={String(value)} className={styles.item} value={value} disabled={disabled}>\n <BaseSelect.ItemIndicator className={styles.itemIndicator}>\n <IoCheckmark className={styles.itemIndicatorIcon} />\n </BaseSelect.ItemIndicator>\n <BaseSelect.ItemText className={styles.itemLabel}>{label}</BaseSelect.ItemText>\n </BaseSelect.Item>\n ))}\n </BaseSelect.List>\n </BaseSelect.Popup>\n <BaseSelect.ScrollDownArrow className={styles.scrollArrow} />\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n </BaseSelect.Root>\n );\n}\n"],"names":["Select","options","fluid","size","selectRootProps","BaseSelect.Root","jsxs","BaseSelect.Trigger","cx","styles","select","jsx","BaseSelect.Value","BaseSelect.Icon","selectIcon","LuChevronsUpDown","BaseSelect.Portal","BaseSelect.Positioner","BaseSelect.ScrollUpArrow","scrollArrow","BaseSelect.Popup","popup","BaseSelect.Arrow","BaseSelect.List","list","map","disabled","label","value","BaseSelect.Item","item","BaseSelect.ItemIndicator","itemIndicator","IoCheckmark","itemIndicatorIcon","BaseSelect.ItemText","itemLabel","String","BaseSelect.ScrollDownArrow"],"mappings":"+gCAoBA,SAAwBA,EAAU,CAAEC,QAAAA,EAASC,MAAAA,EAAOC,KAAAA,EAAO,SAAU,GAAGC,CAAgC,EAAG,CACzG,cACGC,EAAA,CAAgB,MAAOJ,EAAS,GAAIG,EACnC,SAAA,CAAAE,EAAA,KAACC,EAAA,CAAmB,UAAWC,EAAG,CAACC,EAAOC,OAAQD,EAAON,CAAI,EAAGD,GAASO,EAAOP,KAAK,CAAC,EACpF,SAAA,CAACS,EAAA,IAAAC,EAAA,EAAgB,EACjBD,MAACE,EAAA,CAAgB,UAAWJ,EAAOK,WACjC,SAACH,EAAA,IAAAI,EAAA,CAAA,CAAgB,CACnB,CAAA,CAAA,EACF,EACAJ,EAAAA,IAACK,EAAA,CACC,SAAAV,OAACW,EAAA,CAAsB,KAAK,SAAS,MAAM,QACzC,SAAA,CAAAN,EAAAA,IAACO,EAAA,CAAyB,UAAWT,EAAOU,WAAY,CAAA,SACvDC,EAAA,CAAiB,UAAWX,EAAOY,MAClC,SAAA,CAACV,EAAA,IAAAW,EAAA,EAAgB,EACjBX,MAACY,EAAA,CAAgB,UAAWd,EAAOe,KAChCvB,SAAQwB,EAAAA,IAAI,CAAC,CAAEC,SAAAA,EAAUC,MAAAA,EAAOC,MAAAA,CAAAA,WAC9BC,EAAA,CAAoC,UAAWpB,EAAOqB,KAAM,MAAAF,EAAc,SAAAF,EACzE,SAAA,CAACf,EAAAA,IAAAoB,EAAA,CAAyB,UAAWtB,EAAOuB,cAC1C,SAAArB,MAACsB,EAAY,CAAA,UAAWxB,EAAOyB,iBAAAA,CAAkB,CACnD,CAAA,QACCC,EAAA,CAAoB,UAAW1B,EAAO2B,UAAYT,SAAMA,CAAA,CAAA,CAAA,CAAA,EAJrCU,OAAOT,CAAK,CAKlC,CACD,CACH,CAAA,CAAA,EACF,QACCU,EAAA,CAA2B,UAAW7B,EAAOU,WAAY,CAAA,CAAA,CAAA,CAC5D,CACF,CAAA,CAAA,EACF,CAEJ"}
1
+ {"version":3,"file":"Select-CvUrsmYI.js","sources":["../../src/common/components/select/Select.tsx"],"sourcesContent":["import { IoCheckmark } from 'react-icons/io5';\nimport { LuChevronsUpDown } from 'react-icons/lu';\nimport { Select as BaseSelect } from '@base-ui/react/select';\n\nimport { cx } from '../../utils/styleUtils';\n\nimport styles from './Select.module.scss';\n\nexport type SelectOption<T = string> = {\n value: T;\n label: string;\n disabled?: boolean;\n};\n\ninterface SelectProps<T> extends Omit<BaseSelect.Root.Props<T>, 'items'> {\n options: SelectOption<T>[];\n fluid?: boolean;\n size?: 'medium' | 'large';\n}\n\nexport default function Select<T>({ options, fluid, size = 'medium', ...selectRootProps }: SelectProps<T>) {\n return (\n <BaseSelect.Root items={options} {...selectRootProps}>\n <BaseSelect.Trigger className={cx([styles.select, styles[size], fluid && styles.fluid])}>\n <BaseSelect.Value />\n <BaseSelect.Icon className={styles.selectIcon}>\n <LuChevronsUpDown />\n </BaseSelect.Icon>\n </BaseSelect.Trigger>\n <BaseSelect.Portal>\n <BaseSelect.Positioner side='bottom' align='start'>\n <BaseSelect.ScrollUpArrow className={styles.scrollArrow} />\n <BaseSelect.Popup className={styles.popup}>\n <BaseSelect.Arrow />\n <BaseSelect.List className={styles.list}>\n {options.map(({ disabled, label, value }) => (\n <BaseSelect.Item key={String(value)} className={styles.item} value={value} disabled={disabled}>\n <BaseSelect.ItemIndicator className={styles.itemIndicator}>\n <IoCheckmark className={styles.itemIndicatorIcon} />\n </BaseSelect.ItemIndicator>\n <BaseSelect.ItemText className={styles.itemLabel}>{label}</BaseSelect.ItemText>\n </BaseSelect.Item>\n ))}\n </BaseSelect.List>\n </BaseSelect.Popup>\n <BaseSelect.ScrollDownArrow className={styles.scrollArrow} />\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n </BaseSelect.Root>\n );\n}\n"],"names":["Select","options","fluid","size","selectRootProps","BaseSelect.Root","jsxs","BaseSelect.Trigger","cx","styles","select","jsx","BaseSelect.Value","BaseSelect.Icon","selectIcon","LuChevronsUpDown","BaseSelect.Portal","BaseSelect.Positioner","BaseSelect.ScrollUpArrow","scrollArrow","BaseSelect.Popup","popup","BaseSelect.Arrow","BaseSelect.List","list","map","disabled","label","value","BaseSelect.Item","item","BaseSelect.ItemIndicator","itemIndicator","IoCheckmark","itemIndicatorIcon","BaseSelect.ItemText","itemLabel","String","BaseSelect.ScrollDownArrow"],"mappings":"+gCAoBA,SAAwBA,EAAU,CAAEC,QAAAA,EAASC,MAAAA,EAAOC,KAAAA,EAAO,SAAU,GAAGC,CAAgC,EAAG,CACzG,cACGC,EAAA,CAAgB,MAAOJ,EAAS,GAAIG,EACnC,SAAA,CAAAE,EAAA,KAACC,EAAA,CAAmB,UAAWC,EAAG,CAACC,EAAOC,OAAQD,EAAON,CAAI,EAAGD,GAASO,EAAOP,KAAK,CAAC,EACpF,SAAA,CAACS,EAAA,IAAAC,EAAA,EAAgB,EACjBD,MAACE,EAAA,CAAgB,UAAWJ,EAAOK,WACjC,SAACH,EAAA,IAAAI,EAAA,CAAA,CAAgB,CACnB,CAAA,CAAA,EACF,EACAJ,EAAAA,IAACK,EAAA,CACC,SAAAV,OAACW,EAAA,CAAsB,KAAK,SAAS,MAAM,QACzC,SAAA,CAAAN,EAAAA,IAACO,EAAA,CAAyB,UAAWT,EAAOU,WAAY,CAAA,SACvDC,EAAA,CAAiB,UAAWX,EAAOY,MAClC,SAAA,CAACV,EAAA,IAAAW,EAAA,EAAgB,EACjBX,MAACY,EAAA,CAAgB,UAAWd,EAAOe,KAChCvB,SAAQwB,EAAAA,IAAI,CAAC,CAAEC,SAAAA,EAAUC,MAAAA,EAAOC,MAAAA,CAAAA,WAC9BC,EAAA,CAAoC,UAAWpB,EAAOqB,KAAM,MAAAF,EAAc,SAAAF,EACzE,SAAA,CAACf,EAAAA,IAAAoB,EAAA,CAAyB,UAAWtB,EAAOuB,cAC1C,SAAArB,MAACsB,EAAY,CAAA,UAAWxB,EAAOyB,iBAAAA,CAAkB,CACnD,CAAA,QACCC,EAAA,CAAoB,UAAW1B,EAAO2B,UAAYT,SAAMA,CAAA,CAAA,CAAA,CAAA,EAJrCU,OAAOT,CAAK,CAKlC,CACD,CACH,CAAA,CAAA,EACF,QACCU,EAAA,CAA2B,UAAW7B,EAAOU,WAAY,CAAA,CAAA,CAAA,CAC5D,CACF,CAAA,CAAA,EACF,CAEJ"}
@@ -1,2 +1,2 @@
1
- import{l as w,h as g,j as e}from"./vendor-BKUJ0_Du.js";import{P as O,f as m,C,D as E,E as P,h as S,e as d,m as x,d as A,G as F,y as f,H as M,u as I,a as V,b as D,L,g as H,O as R}from"./index-Dm-4OTmY.js";import{E as W}from"./EmptyPage-CYVrjOvI.js";import{V as z}from"./ViewLogo-2I7w5Yms.js";import{m as B,O as j,V as $}from"./ViewParamsEditor-BX2RM8sx.js";import{u as G}from"./useWindowTitle-DM8dIp8L.js";import{g as Q,a as U}from"./viewLoader.utils-4lL4PiNI.js";import{i as X,b as Y}from"./viewUtils-29a3Mmiu.js";import{S as q}from"./SuperscriptTime-BVanhNvd.js";import{a as J,g as K}from"./offset-VthsmtrO.js";import{g as Z}from"./presentation.utils-Z61KykAH.js";import{u as ee}from"./useCustomFields-BBE4LBBr.js";import{u as se}from"./useProjectData-C110zIXC.js";import"./SwatchPicker-Ckpchvjo.js";import"./Select-BnGTAeXJ.js";/* empty css */(function(){try{var s=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new s.Error().stack;t&&(s._sentryDebugIds=s._sentryDebugIds||{},s._sentryDebugIds[t]="07c38163-8649-4239-bb7a-bbe96044f9ca",s._sentryDebugIdIdentifier="sentry-dbid-07c38163-8649-4239-bb7a-bbe96044f9ca")}catch{}})();const te=(s,t)=>{const a=B(t,[{value:"title",label:"Title"}]);return[{title:j.ClockOptions,collapsible:!0,options:[Q(s)]},{title:j.DataSources,collapsible:!0,options:[{id:"main",title:"Main text",description:"Select the data source for the main text",type:"option",values:a,defaultValue:"title"}]},{title:j.ElementVisibility,collapsible:!0,options:[{id:"hideCards",title:"Hide cards section",description:"Hides the card section with the timers",type:"boolean",defaultValue:!1}]}]};function ae(s,t){const a=i=>(t==null?void 0:t.get(i))??s.get(i);return{mainSource:a("main"),hideCards:X(a("hideCards"))}}function b(){const[s]=w(),t=g.use(O);return g.useMemo(()=>{const i=t?new URLSearchParams(t.search):void 0;return ae(s,i)},[t,s])}function ie(s){const[t,a]=(()=>{const i=m(s);return i.endsWith("AM")?[i.slice(0,-2),"AM"]:i.endsWith("PM")?[i.slice(0,-2),"PM"]:[i,void 0]})();return{seconds:C(s),display:t,meridian:a}}const re=[...Array(12).keys()],ne=[...Array(60).keys()];function ce({hideCards:s}){const t=E(),{clock:a,playback:i}=P(),l=i!==S.Stop;if(t&&!s)return e.jsx(de,{clock:a,onAir:l});const{seconds:n,display:r,meridian:o}=ie(a);return e.jsx("div",{className:"studio__clock",children:e.jsxs("div",{className:"clock-container",children:[ne.map(c=>e.jsx("div",{className:d(["tick",c<=n&&"tick--active"]),style:{transform:`rotate(${180+c*6}deg) translateY(var(--half-size))`}},c)),re.map(c=>e.jsx("div",{className:"tick tick--active",style:{transform:`rotate(${180+c*30}deg) translateX(var(--smaller-half-size))`}},c)),e.jsx("div",{className:d(["ampm",!!o&&"ampm--active"]),children:o}),e.jsx("div",{className:"time time--large",children:r}),e.jsx("div",{className:d(["on-air",l&&"on-air--active"]),children:"ON AIR"})]})})}function de({clock:s,onAir:t}){const a=m(s);return e.jsxs("div",{className:"studio__clock studio__clock--small",children:[e.jsx(q,{className:"time time--small",time:a}),e.jsx("div",{className:d(["on-air",t&&"on-air--active"]),children:"ON AIR"})]})}const h={format12:"h:mm a",format24:"HH:mm"};function oe(s){return{actualStart:m(s.actualStart,h),expectedEnd:m(s.expectedEnd,h),offset:J(s.offset)}}function le(s,t,a){return{title:(s==null?void 0:s[a??"title"])||"-",startedAt:m(t.startedAt,h),expectedEnd:m(t.expectedFinish,h),timer:x(t.current)}}function me({viewSettings:s}){const{getLocalizedString:t}=A(),{mainSource:a}=b(),{eventNow:i,eventNext:l,message:n,time:r,offset:o,rundown:c,expectedRundownEnd:v}=F(),p=oe({offset:o,actualStart:c.actualStart,expectedEnd:v}),u=le(i,r,a),y=Y(l,a??"title")||"-",k=n.timer.visible&&n.timer.text||"-",N=n.timer.secondarySource==="secondary"&&n.secondary||"-",T=Z(s,void 0,r.phase===f.Warning,r.phase===f.Danger),_=K(o);return e.jsxs("div",{className:"studio__timers",children:[e.jsx("div",{className:"card",id:"card-schedule",children:e.jsxs("div",{className:"card__row",children:[e.jsxs("div",{children:[e.jsx("div",{className:"label",children:t("common.started_at")}),e.jsx("div",{className:"runtime-timer",children:p.actualStart})]}),e.jsxs("div",{children:[e.jsx("div",{className:"label center",children:"Over / under"}),e.jsx("div",{className:d(["runtime-timer","center",!i&&"muted",_]),children:p.offset})]}),e.jsxs("div",{children:[e.jsx("div",{className:"label right",children:t("common.expected_end")}),e.jsx("div",{className:"runtime-timer right",children:p.expectedEnd})]})]})}),e.jsxs("div",{className:"card",id:"card-event-now",children:[e.jsxs("div",{className:"card__row",children:[e.jsxs("div",{children:[e.jsx("div",{className:"label",children:t("common.now")}),e.jsx("div",{className:"title",children:u.title})]}),e.jsxs("div",{children:[e.jsx("div",{className:"label right",children:t("common.next")}),e.jsx("div",{className:"title right",children:y})]})]}),e.jsxs("div",{className:"card__row",children:[e.jsxs("div",{children:[e.jsx("div",{className:"label",children:t("common.started_at")}),e.jsx("div",{className:"runtime-timer",children:u.startedAt})]}),e.jsxs("div",{children:[e.jsx("div",{className:"label"}),e.jsx("div",{className:d(["event-timer",r.phase===f.Overtime&&"event-timer--finished",r.playback===S.Pause&&"event-timer--paused"]),style:{"--phase-color":T},"data-phase":r.phase,children:u.timer})]}),e.jsxs("div",{children:[e.jsx("div",{className:"label right",children:t("common.expected_end")}),e.jsx("div",{className:"runtime-timer right",children:u.expectedEnd})]})]})]}),e.jsx(ue,{}),e.jsx("div",{className:"card",id:"card-timer-message",children:e.jsxs("div",{children:[e.jsx("div",{className:"label",children:"Timer message"}),e.jsx("div",{className:d(["extra",!1]),children:k})]})}),e.jsx("div",{className:"card",id:"card-secondary-message",children:e.jsxs("div",{children:[e.jsx("div",{className:"label",children:"Secondary message"}),e.jsx("div",{className:d(["extra",!N&&"muted"]),children:N})]})})]})}function ue(){const s=M();return e.jsx("div",{className:"card",id:"card-aux",children:e.jsxs("div",{className:"card__row",children:[e.jsxs("div",{children:[e.jsx("div",{className:"label",children:"Aux 1"}),e.jsx("div",{className:"extra",children:x(s.aux1)})]}),e.jsxs("div",{children:[e.jsx("div",{className:"label center",children:"Aux 2"}),e.jsx("div",{className:"extra center",children:x(s.aux2)})]}),e.jsxs("div",{children:[e.jsx("div",{className:"label right",children:"Aux 3"}),e.jsx("div",{className:"extra right",children:x(s.aux3)})]})]})})}function xe(){const s=I(v=>v.mirror),{data:t,status:a}=se(),{data:i,status:l}=V(),{data:n,status:r}=D(),{data:o,status:c}=ee();return{data:{customFields:o,projectData:t,isMirrored:s,settings:n,viewSettings:i},status:U([a,l,r,c])}}function Pe(){const{data:s,status:t}=xe();return G("Studio Clock"),t==="pending"?e.jsx(L,{}):t==="error"?e.jsx(W,{text:"There was an error fetching data, please refresh the page."}):e.jsx(he,{...s})}function he({customFields:s,projectData:t,isMirrored:a,settings:i,viewSettings:l}){const{hideCards:n}=b(),r=H(i==null?void 0:i.timeFormat),o=g.useMemo(()=>te(r,s),[r,s]);return e.jsxs("div",{className:d(["studio",a&&"mirror"]),"data-testid":"studio-view",children:[e.jsx($,{target:R.StudioClock,viewOptions:o}),e.jsxs("div",{className:"project-header",children:[(t==null?void 0:t.logo)&&e.jsx(z,{name:t.logo,className:"logo"}),e.jsx("div",{className:"title",children:t.title})]}),e.jsxs("div",{className:d(["studio-contents",n&&"studio-contents--onecol"]),children:[e.jsx(ce,{hideCards:n}),!n&&e.jsx(me,{viewSettings:l})]})]})}export{Pe as default};
2
- //# sourceMappingURL=Studio-BK2Klo_K.js.map
1
+ import{l as w,h as g,j as e}from"./vendor-Dt3_Fdfs.js";import{P as O,f as m,C,D as E,E as P,h as S,e as d,m as x,d as A,G as F,y as f,H as M,u as I,a as V,b as D,L,g as H,O as R}from"./index-3aosT33y.js";import{E as W}from"./EmptyPage-aTb22KTq.js";import{V as z}from"./ViewLogo-DcDhyyIF.js";import{m as B,O as j,V as $}from"./ViewParamsEditor-DeMdkxxC.js";import{u as G}from"./useWindowTitle-CQ8nEeel.js";import{g as Q,a as U}from"./viewLoader.utils-H7r-zNPP.js";import{i as X,b as Y}from"./viewUtils-k0tARVDN.js";import{S as q}from"./SuperscriptTime-retbmT5o.js";import{a as J,g as K}from"./offset-yVqq_CB1.js";import{g as Z}from"./presentation.utils-lyuuD4A5.js";import{u as ee}from"./useCustomFields-kBD1jvDA.js";import{u as se}from"./useProjectData-gGT2eczr.js";import"./SwatchPicker-DuWAohyD.js";import"./Select-CvUrsmYI.js";/* empty css */(function(){try{var s=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new s.Error().stack;t&&(s._sentryDebugIds=s._sentryDebugIds||{},s._sentryDebugIds[t]="07c38163-8649-4239-bb7a-bbe96044f9ca",s._sentryDebugIdIdentifier="sentry-dbid-07c38163-8649-4239-bb7a-bbe96044f9ca")}catch{}})();const te=(s,t)=>{const a=B(t,[{value:"title",label:"Title"}]);return[{title:j.ClockOptions,collapsible:!0,options:[Q(s)]},{title:j.DataSources,collapsible:!0,options:[{id:"main",title:"Main text",description:"Select the data source for the main text",type:"option",values:a,defaultValue:"title"}]},{title:j.ElementVisibility,collapsible:!0,options:[{id:"hideCards",title:"Hide cards section",description:"Hides the card section with the timers",type:"boolean",defaultValue:!1}]}]};function ae(s,t){const a=i=>(t==null?void 0:t.get(i))??s.get(i);return{mainSource:a("main"),hideCards:X(a("hideCards"))}}function b(){const[s]=w(),t=g.use(O);return g.useMemo(()=>{const i=t?new URLSearchParams(t.search):void 0;return ae(s,i)},[t,s])}function ie(s){const[t,a]=(()=>{const i=m(s);return i.endsWith("AM")?[i.slice(0,-2),"AM"]:i.endsWith("PM")?[i.slice(0,-2),"PM"]:[i,void 0]})();return{seconds:C(s),display:t,meridian:a}}const re=[...Array(12).keys()],ne=[...Array(60).keys()];function ce({hideCards:s}){const t=E(),{clock:a,playback:i}=P(),l=i!==S.Stop;if(t&&!s)return e.jsx(de,{clock:a,onAir:l});const{seconds:n,display:r,meridian:o}=ie(a);return e.jsx("div",{className:"studio__clock",children:e.jsxs("div",{className:"clock-container",children:[ne.map(c=>e.jsx("div",{className:d(["tick",c<=n&&"tick--active"]),style:{transform:`rotate(${180+c*6}deg) translateY(var(--half-size))`}},c)),re.map(c=>e.jsx("div",{className:"tick tick--active",style:{transform:`rotate(${180+c*30}deg) translateX(var(--smaller-half-size))`}},c)),e.jsx("div",{className:d(["ampm",!!o&&"ampm--active"]),children:o}),e.jsx("div",{className:"time time--large",children:r}),e.jsx("div",{className:d(["on-air",l&&"on-air--active"]),children:"ON AIR"})]})})}function de({clock:s,onAir:t}){const a=m(s);return e.jsxs("div",{className:"studio__clock studio__clock--small",children:[e.jsx(q,{className:"time time--small",time:a}),e.jsx("div",{className:d(["on-air",t&&"on-air--active"]),children:"ON AIR"})]})}const h={format12:"h:mm a",format24:"HH:mm"};function oe(s){return{actualStart:m(s.actualStart,h),expectedEnd:m(s.expectedEnd,h),offset:J(s.offset)}}function le(s,t,a){return{title:(s==null?void 0:s[a??"title"])||"-",startedAt:m(t.startedAt,h),expectedEnd:m(t.expectedFinish,h),timer:x(t.current)}}function me({viewSettings:s}){const{getLocalizedString:t}=A(),{mainSource:a}=b(),{eventNow:i,eventNext:l,message:n,time:r,offset:o,rundown:c,expectedRundownEnd:v}=F(),p=oe({offset:o,actualStart:c.actualStart,expectedEnd:v}),u=le(i,r,a),y=Y(l,a??"title")||"-",k=n.timer.visible&&n.timer.text||"-",N=n.timer.secondarySource==="secondary"&&n.secondary||"-",T=Z(s,void 0,r.phase===f.Warning,r.phase===f.Danger),_=K(o);return e.jsxs("div",{className:"studio__timers",children:[e.jsx("div",{className:"card",id:"card-schedule",children:e.jsxs("div",{className:"card__row",children:[e.jsxs("div",{children:[e.jsx("div",{className:"label",children:t("common.started_at")}),e.jsx("div",{className:"runtime-timer",children:p.actualStart})]}),e.jsxs("div",{children:[e.jsx("div",{className:"label center",children:"Over / under"}),e.jsx("div",{className:d(["runtime-timer","center",!i&&"muted",_]),children:p.offset})]}),e.jsxs("div",{children:[e.jsx("div",{className:"label right",children:t("common.expected_end")}),e.jsx("div",{className:"runtime-timer right",children:p.expectedEnd})]})]})}),e.jsxs("div",{className:"card",id:"card-event-now",children:[e.jsxs("div",{className:"card__row",children:[e.jsxs("div",{children:[e.jsx("div",{className:"label",children:t("common.now")}),e.jsx("div",{className:"title",children:u.title})]}),e.jsxs("div",{children:[e.jsx("div",{className:"label right",children:t("common.next")}),e.jsx("div",{className:"title right",children:y})]})]}),e.jsxs("div",{className:"card__row",children:[e.jsxs("div",{children:[e.jsx("div",{className:"label",children:t("common.started_at")}),e.jsx("div",{className:"runtime-timer",children:u.startedAt})]}),e.jsxs("div",{children:[e.jsx("div",{className:"label"}),e.jsx("div",{className:d(["event-timer",r.phase===f.Overtime&&"event-timer--finished",r.playback===S.Pause&&"event-timer--paused"]),style:{"--phase-color":T},"data-phase":r.phase,children:u.timer})]}),e.jsxs("div",{children:[e.jsx("div",{className:"label right",children:t("common.expected_end")}),e.jsx("div",{className:"runtime-timer right",children:u.expectedEnd})]})]})]}),e.jsx(ue,{}),e.jsx("div",{className:"card",id:"card-timer-message",children:e.jsxs("div",{children:[e.jsx("div",{className:"label",children:"Timer message"}),e.jsx("div",{className:d(["extra",!1]),children:k})]})}),e.jsx("div",{className:"card",id:"card-secondary-message",children:e.jsxs("div",{children:[e.jsx("div",{className:"label",children:"Secondary message"}),e.jsx("div",{className:d(["extra",!N&&"muted"]),children:N})]})})]})}function ue(){const s=M();return e.jsx("div",{className:"card",id:"card-aux",children:e.jsxs("div",{className:"card__row",children:[e.jsxs("div",{children:[e.jsx("div",{className:"label",children:"Aux 1"}),e.jsx("div",{className:"extra",children:x(s.aux1)})]}),e.jsxs("div",{children:[e.jsx("div",{className:"label center",children:"Aux 2"}),e.jsx("div",{className:"extra center",children:x(s.aux2)})]}),e.jsxs("div",{children:[e.jsx("div",{className:"label right",children:"Aux 3"}),e.jsx("div",{className:"extra right",children:x(s.aux3)})]})]})})}function xe(){const s=I(v=>v.mirror),{data:t,status:a}=se(),{data:i,status:l}=V(),{data:n,status:r}=D(),{data:o,status:c}=ee();return{data:{customFields:o,projectData:t,isMirrored:s,settings:n,viewSettings:i},status:U([a,l,r,c])}}function Pe(){const{data:s,status:t}=xe();return G("Studio Clock"),t==="pending"?e.jsx(L,{}):t==="error"?e.jsx(W,{text:"There was an error fetching data, please refresh the page."}):e.jsx(he,{...s})}function he({customFields:s,projectData:t,isMirrored:a,settings:i,viewSettings:l}){const{hideCards:n}=b(),r=H(i==null?void 0:i.timeFormat),o=g.useMemo(()=>te(r,s),[r,s]);return e.jsxs("div",{className:d(["studio",a&&"mirror"]),"data-testid":"studio-view",children:[e.jsx($,{target:R.StudioClock,viewOptions:o}),e.jsxs("div",{className:"project-header",children:[(t==null?void 0:t.logo)&&e.jsx(z,{name:t.logo,className:"logo"}),e.jsx("div",{className:"title",children:t.title})]}),e.jsxs("div",{className:d(["studio-contents",n&&"studio-contents--onecol"]),children:[e.jsx(ce,{hideCards:n}),!n&&e.jsx(me,{viewSettings:l})]})]})}export{Pe as default};
2
+ //# sourceMappingURL=Studio-BSSiKd6k.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Studio-BK2Klo_K.js","sources":["../../src/views/studio/studio.options.ts","../../src/views/studio/studioClock.utils.ts","../../src/views/studio/StudioClock.tsx","../../src/views/studio/studioTimers.utils.ts","../../src/views/studio/StudioTimers.tsx","../../src/views/studio/useStudioData.ts","../../src/views/studio/Studio.tsx"],"sourcesContent":["import { use, useMemo } from 'react';\nimport { useSearchParams } from 'react-router';\nimport { CustomFields, OntimeEvent } from 'ontime-types';\n\nimport { getTimeOption } from '../../common/components/view-params-editor/common.options';\nimport { OptionTitle } from '../../common/components/view-params-editor/constants';\nimport { ViewOption } from '../../common/components/view-params-editor/viewParams.types';\nimport { makeOptionsFromCustomFields } from '../../common/components/view-params-editor/viewParams.utils';\nimport { PresetContext } from '../../common/context/PresetContext';\nimport { isStringBoolean } from '../common/viewUtils';\n\nexport const getStudioOptions = (timeFormat: string, customFields: CustomFields): ViewOption[] => {\n const mainOptions = makeOptionsFromCustomFields(customFields, [{ value: 'title', label: 'Title' }]);\n\n return [\n { title: OptionTitle.ClockOptions, collapsible: true, options: [getTimeOption(timeFormat)] },\n {\n title: OptionTitle.DataSources,\n collapsible: true,\n options: [\n {\n id: 'main',\n title: 'Main text',\n description: 'Select the data source for the main text',\n type: 'option',\n values: mainOptions,\n defaultValue: 'title',\n },\n ],\n },\n {\n title: OptionTitle.ElementVisibility,\n collapsible: true,\n options: [\n {\n id: 'hideCards',\n title: 'Hide cards section',\n description: 'Hides the card section with the timers',\n type: 'boolean',\n defaultValue: false,\n },\n ],\n },\n ];\n};\n\ntype StudioOptions = {\n mainSource: keyof OntimeEvent | null;\n hideCards: boolean;\n};\n\n/**\n * Utility extract the view options from URL Params\n * the names and fallback are manually matched with timerOptions\n */\nfunction getOptionsFromParams(searchParams: URLSearchParams, defaultValues?: URLSearchParams): StudioOptions {\n // Helper to get value from either source, prioritizing defaultValues\n const getValue = (key: string) => defaultValues?.get(key) ?? searchParams.get(key);\n\n return {\n mainSource: getValue('main') as keyof OntimeEvent | null,\n hideCards: isStringBoolean(getValue('hideCards')),\n };\n}\n\n/**\n * Hook exposes the backstage view options\n */\nexport function useStudioOptions(): StudioOptions {\n const [searchParams] = useSearchParams();\n const maybePreset = use(PresetContext);\n\n const options = useMemo(() => {\n const defaultValues = maybePreset ? new URLSearchParams(maybePreset.search) : undefined;\n return getOptionsFromParams(searchParams, defaultValues);\n }, [maybePreset, searchParams]);\n\n return options;\n}\n","import { secondsInMillis } from 'ontime-utils';\n\nimport { formatTime } from '../../common/utils/time';\n\n/**\n * Gathers display elements for the large studio clock\n */\nexport function getLargeClockData(clock: number) {\n const [display, meridian] = (() => {\n const formatted = formatTime(clock);\n if (formatted.endsWith('AM')) {\n return [formatted.slice(0, -2), 'AM'];\n }\n if (formatted.endsWith('PM')) {\n return [formatted.slice(0, -2), 'PM'];\n }\n return [formatted, undefined];\n })();\n\n return { seconds: secondsInMillis(clock), display, meridian };\n}\n","import { Playback } from 'ontime-types';\n\nimport { useIsSmallScreen } from '../../common/hooks/useIsSmallScreen';\nimport { useStudioClockSocket } from '../../common/hooks/useSocket';\nimport { cx } from '../../common/utils/styleUtils';\nimport { formatTime } from '../../common/utils/time';\nimport SuperscriptTime from '../common/superscript-time/SuperscriptTime';\n\nimport { getLargeClockData } from './studioClock.utils';\n\nimport './StudioClock.scss';\n\nconst activeIndicators = [...Array(12).keys()];\nconst secondsIndicators = [...Array(60).keys()];\n\ninterface StudioClockProps {\n hideCards: boolean;\n}\n\nexport default function StudioClock({ hideCards }: StudioClockProps) {\n const isSmallScreen = useIsSmallScreen();\n const { clock, playback } = useStudioClockSocket();\n const onAir = playback !== Playback.Stop;\n\n // if we are on mobile and have to show the cards\n if (isSmallScreen && !hideCards) {\n return <StudioClockMobile clock={clock} onAir={onAir} />;\n }\n\n const { seconds, display, meridian } = getLargeClockData(clock);\n\n return (\n <div className='studio__clock'>\n <div className='clock-container'>\n {secondsIndicators.map((i) => {\n return (\n <div\n key={i}\n className={cx(['tick', i <= seconds && 'tick--active'])}\n style={{ transform: `rotate(${180 + i * 6}deg) translateY(var(--half-size))` }}\n />\n );\n })}\n {activeIndicators.map((i) => (\n <div\n key={i}\n className='tick tick--active'\n style={{\n transform: `rotate(${180 + i * 30}deg) translateX(var(--smaller-half-size))`,\n }}\n />\n ))}\n <div className={cx(['ampm', Boolean(meridian) && 'ampm--active'])}>{meridian}</div>\n <div className='time time--large'>{display}</div>\n <div className={cx(['on-air', onAir && 'on-air--active'])}>ON AIR</div>\n </div>\n </div>\n );\n}\n\ninterface StudioClockMobileProps {\n clock: number;\n onAir: boolean;\n}\n\nfunction StudioClockMobile({ clock, onAir }: StudioClockMobileProps) {\n const displayClock = formatTime(clock);\n\n return (\n <div className='studio__clock studio__clock--small'>\n <SuperscriptTime className='time time--small' time={displayClock} />\n <div className={cx(['on-air', onAir && 'on-air--active'])}>ON AIR</div>\n </div>\n );\n}\n","import { MaybeNumber, OntimeEvent, TimerState } from 'ontime-types';\nimport { millisToString } from 'ontime-utils';\n\nimport { getOffsetText } from '../../common/utils/offset';\nimport { formatTime } from '../../common/utils/time';\n\nconst timeFormat = { format12: 'h:mm a', format24: 'HH:mm' };\nexport function getFormattedScheduleTimes(data: {\n offset: number;\n actualStart: MaybeNumber;\n expectedEnd: MaybeNumber;\n}) {\n return {\n actualStart: formatTime(data.actualStart, timeFormat),\n expectedEnd: formatTime(data.expectedEnd, timeFormat),\n offset: getOffsetText(data.offset),\n };\n}\n\nexport function getFormattedEventData(\n eventNow: OntimeEvent | null,\n timer: TimerState,\n mainSource: keyof OntimeEvent | null,\n) {\n return {\n title: (eventNow?.[mainSource ?? 'title'] as string) || '-',\n startedAt: formatTime(timer.startedAt, timeFormat),\n expectedEnd: formatTime(timer.expectedFinish, timeFormat),\n timer: millisToString(timer.current),\n };\n}\n","import { Playback, TimerPhase, ViewSettings } from 'ontime-types';\nimport { millisToString } from 'ontime-utils';\n\nimport { useAuxTimersTime, useStudioTimersSocket } from '../../common/hooks/useSocket';\nimport { getOffsetState } from '../../common/utils/offset';\nimport { cx } from '../../common/utils/styleUtils';\nimport { useTranslation } from '../../translation/TranslationProvider';\nimport { getPropertyValue } from '../common/viewUtils';\nimport { getTimerColour } from '../utils/presentation.utils';\n\nimport { useStudioOptions } from './studio.options';\nimport { getFormattedEventData, getFormattedScheduleTimes } from './studioTimers.utils';\n\nimport './StudioTimers.scss';\n\ninterface StudioTimersProps {\n viewSettings: ViewSettings;\n}\n\nexport default function StudioTimers({ viewSettings }: StudioTimersProps) {\n const { getLocalizedString } = useTranslation();\n const { mainSource } = useStudioOptions();\n const { eventNow, eventNext, message, time, offset, rundown, expectedRundownEnd } = useStudioTimersSocket();\n\n const schedule = getFormattedScheduleTimes({\n offset: offset,\n actualStart: rundown.actualStart,\n expectedEnd: expectedRundownEnd,\n });\n const event = getFormattedEventData(eventNow, time, mainSource);\n const eventNextTitle = getPropertyValue(eventNext, mainSource ?? 'title') || '-';\n const formattedTimerMessage = (message.timer.visible && message.timer.text) || '-';\n const formattedSecondaryMessage = message.timer.secondarySource === 'secondary' ? message.secondary || '-' : '-';\n\n // gather presentation styles\n const timerColour = getTimerColour(\n viewSettings,\n undefined,\n time.phase === TimerPhase.Warning,\n time.phase === TimerPhase.Danger,\n );\n\n const offsetState = getOffsetState(offset);\n\n return (\n <div className='studio__timers'>\n <div className='card' id='card-schedule'>\n <div className='card__row'>\n <div>\n <div className='label'>{getLocalizedString('common.started_at')}</div>\n <div className='runtime-timer'>{schedule.actualStart}</div>\n </div>\n <div>\n <div className='label center'>Over / under</div>\n <div className={cx(['runtime-timer', 'center', !eventNow && 'muted', offsetState])}>{schedule.offset}</div>\n </div>\n <div>\n <div className='label right'>{getLocalizedString('common.expected_end')}</div>\n <div className='runtime-timer right'>{schedule.expectedEnd}</div>\n </div>\n </div>\n </div>\n\n <div className='card' id='card-event-now'>\n <div className='card__row'>\n <div>\n <div className='label'>{getLocalizedString('common.now')}</div>\n <div className='title'>{event.title}</div>\n </div>\n <div>\n <div className='label right'>{getLocalizedString('common.next')}</div>\n <div className='title right'>{eventNextTitle}</div>\n </div>\n </div>\n\n <div className='card__row'>\n <div>\n <div className='label'>{getLocalizedString('common.started_at')}</div>\n <div className='runtime-timer'>{event.startedAt}</div>\n </div>\n <div>\n <div className='label' />\n <div\n className={cx([\n 'event-timer',\n time.phase === TimerPhase.Overtime && 'event-timer--finished',\n time.playback === Playback.Pause && 'event-timer--paused',\n ])}\n style={{\n '--phase-color': timerColour,\n }}\n data-phase={time.phase}\n >\n {event.timer}\n </div>\n </div>\n <div>\n <div className='label right'>{getLocalizedString('common.expected_end')}</div>\n <div className='runtime-timer right'>{event.expectedEnd}</div>\n </div>\n </div>\n </div>\n\n <StudioTimersAux />\n\n <div className='card' id='card-timer-message'>\n <div>\n <div className='label'>Timer message</div>\n <div className={cx(['extra', !formattedTimerMessage && 'muted'])}>{formattedTimerMessage}</div>\n </div>\n </div>\n\n <div className='card' id='card-secondary-message'>\n <div>\n <div className='label'>Secondary message</div>\n <div className={cx(['extra', !formattedSecondaryMessage && 'muted'])}>{formattedSecondaryMessage}</div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction StudioTimersAux() {\n const auxTimer = useAuxTimersTime();\n\n return (\n <div className='card' id='card-aux'>\n <div className='card__row'>\n <div>\n <div className='label'>Aux 1</div>\n <div className='extra'>{millisToString(auxTimer.aux1)}</div>\n </div>\n\n <div>\n <div className='label center'>Aux 2</div>\n <div className='extra center'>{millisToString(auxTimer.aux2)}</div>\n </div>\n\n <div>\n <div className='label right'>Aux 3</div>\n <div className='extra right'>{millisToString(auxTimer.aux3)}</div>\n </div>\n </div>\n </div>\n );\n}\n","import { CustomFields, ProjectData, Settings, ViewSettings } from 'ontime-types';\n\nimport useCustomFields from '../../common/hooks-query/useCustomFields';\nimport useProjectData from '../../common/hooks-query/useProjectData';\nimport useSettings from '../../common/hooks-query/useSettings';\nimport useViewSettings from '../../common/hooks-query/useViewSettings';\nimport { useViewOptionsStore } from '../../common/stores/viewOptions';\nimport { aggregateQueryStatus, ViewData } from '../utils/viewLoader.utils';\n\nexport interface StudioData {\n customFields: CustomFields;\n projectData: ProjectData;\n isMirrored: boolean;\n settings: Settings;\n viewSettings: ViewSettings;\n}\n\nexport function useStudioData(): ViewData<StudioData> {\n // persisted app state\n const isMirrored = useViewOptionsStore((state) => state.mirror);\n\n // HTTP API data\n const { data: projectData, status: projectDataStatus } = useProjectData();\n const { data: viewSettings, status: viewSettingsStatus } = useViewSettings();\n const { data: settings, status: settingsStatus } = useSettings();\n const { data: customFields, status: customFieldsStatus } = useCustomFields();\n\n return {\n data: {\n customFields,\n projectData,\n isMirrored,\n settings,\n viewSettings,\n },\n status: aggregateQueryStatus([projectDataStatus, viewSettingsStatus, settingsStatus, customFieldsStatus]),\n };\n}\n","import { useMemo } from 'react';\nimport { OntimeView } from 'ontime-types';\n\nimport EmptyPage from '../../common/components/state/EmptyPage';\nimport ViewLogo from '../../common/components/view-logo/ViewLogo';\nimport ViewParamsEditor from '../../common/components/view-params-editor/ViewParamsEditor';\nimport { useWindowTitle } from '../../common/hooks/useWindowTitle';\nimport { cx } from '../../common/utils/styleUtils';\nimport { getDefaultFormat } from '../../common/utils/time';\nimport Loader from '../common/loader/Loader';\n\nimport { getStudioOptions, useStudioOptions } from './studio.options';\nimport StudioClock from './StudioClock';\nimport StudioTimers from './StudioTimers';\nimport { StudioData, useStudioData } from './useStudioData';\n\nimport './Studio.scss';\n\nexport default function StudioLoader() {\n const { data, status } = useStudioData();\n\n useWindowTitle('Studio Clock');\n\n if (status === 'pending') {\n return <Loader />;\n }\n\n if (status === 'error') {\n return <EmptyPage text='There was an error fetching data, please refresh the page.' />;\n }\n\n return <Studio {...data} />;\n}\n\nfunction Studio({ customFields, projectData, isMirrored, settings, viewSettings }: StudioData) {\n const { hideCards } = useStudioOptions();\n\n // gather option data\n const defaultFormat = getDefaultFormat(settings?.timeFormat);\n const studioOptions = useMemo(() => getStudioOptions(defaultFormat, customFields), [defaultFormat, customFields]);\n\n return (\n <div className={cx(['studio', isMirrored && 'mirror'])} data-testid='studio-view'>\n <ViewParamsEditor target={OntimeView.StudioClock} viewOptions={studioOptions} />\n\n <div className='project-header'>\n {projectData?.logo && <ViewLogo name={projectData.logo} className='logo' />}\n <div className='title'>{projectData.title}</div>\n </div>\n\n <div className={cx(['studio-contents', hideCards && 'studio-contents--onecol'])}>\n <StudioClock hideCards={hideCards} />\n {!hideCards && <StudioTimers viewSettings={viewSettings} />}\n </div>\n </div>\n );\n}\n"],"names":["getStudioOptions","timeFormat","customFields","mainOptions","makeOptionsFromCustomFields","value","label","title","OptionTitle","ClockOptions","collapsible","options","getTimeOption","DataSources","id","description","type","values","defaultValue","ElementVisibility","getOptionsFromParams","searchParams","defaultValues","getValue","key","get","mainSource","hideCards","isStringBoolean","useStudioOptions","useSearchParams","maybePreset","use","PresetContext","useMemo","URLSearchParams","search","undefined","getLargeClockData","clock","display","meridian","formatted","formatTime","endsWith","slice","seconds","secondsInMillis","activeIndicators","Array","keys","secondsIndicators","StudioClock","isSmallScreen","useIsSmallScreen","playback","useStudioClockSocket","onAir","Playback","Stop","jsx","StudioClockMobile","jsxs","map","i","cx","transform","Boolean","displayClock","SuperscriptTime","format12","format24","getFormattedScheduleTimes","data","actualStart","expectedEnd","offset","getOffsetText","getFormattedEventData","eventNow","timer","startedAt","expectedFinish","millisToString","current","StudioTimers","viewSettings","getLocalizedString","useTranslation","eventNext","message","time","rundown","expectedRundownEnd","useStudioTimersSocket","schedule","event","eventNextTitle","getPropertyValue","formattedTimerMessage","visible","text","formattedSecondaryMessage","secondarySource","secondary","timerColour","getTimerColour","phase","TimerPhase","Warning","Danger","offsetState","getOffsetState","Overtime","Pause","StudioTimersAux","auxTimer","useAuxTimersTime","aux1","aux2","aux3","useStudioData","isMirrored","useViewOptionsStore","state","mirror","projectData","status","projectDataStatus","useProjectData","viewSettingsStatus","useViewSettings","settings","settingsStatus","useSettings","customFieldsStatus","useCustomFields","aggregateQueryStatus","StudioLoader","useWindowTitle","Loader","EmptyPage","Studio","defaultFormat","getDefaultFormat","studioOptions","ViewParamsEditor","OntimeView","logo","ViewLogo"],"mappings":"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"}
1
+ {"version":3,"file":"Studio-BSSiKd6k.js","sources":["../../src/views/studio/studio.options.ts","../../src/views/studio/studioClock.utils.ts","../../src/views/studio/StudioClock.tsx","../../src/views/studio/studioTimers.utils.ts","../../src/views/studio/StudioTimers.tsx","../../src/views/studio/useStudioData.ts","../../src/views/studio/Studio.tsx"],"sourcesContent":["import { use, useMemo } from 'react';\nimport { useSearchParams } from 'react-router';\nimport { CustomFields, OntimeEvent } from 'ontime-types';\n\nimport { getTimeOption } from '../../common/components/view-params-editor/common.options';\nimport { OptionTitle } from '../../common/components/view-params-editor/constants';\nimport { ViewOption } from '../../common/components/view-params-editor/viewParams.types';\nimport { makeOptionsFromCustomFields } from '../../common/components/view-params-editor/viewParams.utils';\nimport { PresetContext } from '../../common/context/PresetContext';\nimport { isStringBoolean } from '../common/viewUtils';\n\nexport const getStudioOptions = (timeFormat: string, customFields: CustomFields): ViewOption[] => {\n const mainOptions = makeOptionsFromCustomFields(customFields, [{ value: 'title', label: 'Title' }]);\n\n return [\n { title: OptionTitle.ClockOptions, collapsible: true, options: [getTimeOption(timeFormat)] },\n {\n title: OptionTitle.DataSources,\n collapsible: true,\n options: [\n {\n id: 'main',\n title: 'Main text',\n description: 'Select the data source for the main text',\n type: 'option',\n values: mainOptions,\n defaultValue: 'title',\n },\n ],\n },\n {\n title: OptionTitle.ElementVisibility,\n collapsible: true,\n options: [\n {\n id: 'hideCards',\n title: 'Hide cards section',\n description: 'Hides the card section with the timers',\n type: 'boolean',\n defaultValue: false,\n },\n ],\n },\n ];\n};\n\ntype StudioOptions = {\n mainSource: keyof OntimeEvent | null;\n hideCards: boolean;\n};\n\n/**\n * Utility extract the view options from URL Params\n * the names and fallback are manually matched with timerOptions\n */\nfunction getOptionsFromParams(searchParams: URLSearchParams, defaultValues?: URLSearchParams): StudioOptions {\n // Helper to get value from either source, prioritizing defaultValues\n const getValue = (key: string) => defaultValues?.get(key) ?? searchParams.get(key);\n\n return {\n mainSource: getValue('main') as keyof OntimeEvent | null,\n hideCards: isStringBoolean(getValue('hideCards')),\n };\n}\n\n/**\n * Hook exposes the backstage view options\n */\nexport function useStudioOptions(): StudioOptions {\n const [searchParams] = useSearchParams();\n const maybePreset = use(PresetContext);\n\n const options = useMemo(() => {\n const defaultValues = maybePreset ? new URLSearchParams(maybePreset.search) : undefined;\n return getOptionsFromParams(searchParams, defaultValues);\n }, [maybePreset, searchParams]);\n\n return options;\n}\n","import { secondsInMillis } from 'ontime-utils';\n\nimport { formatTime } from '../../common/utils/time';\n\n/**\n * Gathers display elements for the large studio clock\n */\nexport function getLargeClockData(clock: number) {\n const [display, meridian] = (() => {\n const formatted = formatTime(clock);\n if (formatted.endsWith('AM')) {\n return [formatted.slice(0, -2), 'AM'];\n }\n if (formatted.endsWith('PM')) {\n return [formatted.slice(0, -2), 'PM'];\n }\n return [formatted, undefined];\n })();\n\n return { seconds: secondsInMillis(clock), display, meridian };\n}\n","import { Playback } from 'ontime-types';\n\nimport { useIsSmallScreen } from '../../common/hooks/useIsSmallScreen';\nimport { useStudioClockSocket } from '../../common/hooks/useSocket';\nimport { cx } from '../../common/utils/styleUtils';\nimport { formatTime } from '../../common/utils/time';\nimport SuperscriptTime from '../common/superscript-time/SuperscriptTime';\n\nimport { getLargeClockData } from './studioClock.utils';\n\nimport './StudioClock.scss';\n\nconst activeIndicators = [...Array(12).keys()];\nconst secondsIndicators = [...Array(60).keys()];\n\ninterface StudioClockProps {\n hideCards: boolean;\n}\n\nexport default function StudioClock({ hideCards }: StudioClockProps) {\n const isSmallScreen = useIsSmallScreen();\n const { clock, playback } = useStudioClockSocket();\n const onAir = playback !== Playback.Stop;\n\n // if we are on mobile and have to show the cards\n if (isSmallScreen && !hideCards) {\n return <StudioClockMobile clock={clock} onAir={onAir} />;\n }\n\n const { seconds, display, meridian } = getLargeClockData(clock);\n\n return (\n <div className='studio__clock'>\n <div className='clock-container'>\n {secondsIndicators.map((i) => {\n return (\n <div\n key={i}\n className={cx(['tick', i <= seconds && 'tick--active'])}\n style={{ transform: `rotate(${180 + i * 6}deg) translateY(var(--half-size))` }}\n />\n );\n })}\n {activeIndicators.map((i) => (\n <div\n key={i}\n className='tick tick--active'\n style={{\n transform: `rotate(${180 + i * 30}deg) translateX(var(--smaller-half-size))`,\n }}\n />\n ))}\n <div className={cx(['ampm', Boolean(meridian) && 'ampm--active'])}>{meridian}</div>\n <div className='time time--large'>{display}</div>\n <div className={cx(['on-air', onAir && 'on-air--active'])}>ON AIR</div>\n </div>\n </div>\n );\n}\n\ninterface StudioClockMobileProps {\n clock: number;\n onAir: boolean;\n}\n\nfunction StudioClockMobile({ clock, onAir }: StudioClockMobileProps) {\n const displayClock = formatTime(clock);\n\n return (\n <div className='studio__clock studio__clock--small'>\n <SuperscriptTime className='time time--small' time={displayClock} />\n <div className={cx(['on-air', onAir && 'on-air--active'])}>ON AIR</div>\n </div>\n );\n}\n","import { MaybeNumber, OntimeEvent, TimerState } from 'ontime-types';\nimport { millisToString } from 'ontime-utils';\n\nimport { getOffsetText } from '../../common/utils/offset';\nimport { formatTime } from '../../common/utils/time';\n\nconst timeFormat = { format12: 'h:mm a', format24: 'HH:mm' };\nexport function getFormattedScheduleTimes(data: {\n offset: number;\n actualStart: MaybeNumber;\n expectedEnd: MaybeNumber;\n}) {\n return {\n actualStart: formatTime(data.actualStart, timeFormat),\n expectedEnd: formatTime(data.expectedEnd, timeFormat),\n offset: getOffsetText(data.offset),\n };\n}\n\nexport function getFormattedEventData(\n eventNow: OntimeEvent | null,\n timer: TimerState,\n mainSource: keyof OntimeEvent | null,\n) {\n return {\n title: (eventNow?.[mainSource ?? 'title'] as string) || '-',\n startedAt: formatTime(timer.startedAt, timeFormat),\n expectedEnd: formatTime(timer.expectedFinish, timeFormat),\n timer: millisToString(timer.current),\n };\n}\n","import { Playback, TimerPhase, ViewSettings } from 'ontime-types';\nimport { millisToString } from 'ontime-utils';\n\nimport { useAuxTimersTime, useStudioTimersSocket } from '../../common/hooks/useSocket';\nimport { getOffsetState } from '../../common/utils/offset';\nimport { cx } from '../../common/utils/styleUtils';\nimport { useTranslation } from '../../translation/TranslationProvider';\nimport { getPropertyValue } from '../common/viewUtils';\nimport { getTimerColour } from '../utils/presentation.utils';\n\nimport { useStudioOptions } from './studio.options';\nimport { getFormattedEventData, getFormattedScheduleTimes } from './studioTimers.utils';\n\nimport './StudioTimers.scss';\n\ninterface StudioTimersProps {\n viewSettings: ViewSettings;\n}\n\nexport default function StudioTimers({ viewSettings }: StudioTimersProps) {\n const { getLocalizedString } = useTranslation();\n const { mainSource } = useStudioOptions();\n const { eventNow, eventNext, message, time, offset, rundown, expectedRundownEnd } = useStudioTimersSocket();\n\n const schedule = getFormattedScheduleTimes({\n offset: offset,\n actualStart: rundown.actualStart,\n expectedEnd: expectedRundownEnd,\n });\n const event = getFormattedEventData(eventNow, time, mainSource);\n const eventNextTitle = getPropertyValue(eventNext, mainSource ?? 'title') || '-';\n const formattedTimerMessage = (message.timer.visible && message.timer.text) || '-';\n const formattedSecondaryMessage = message.timer.secondarySource === 'secondary' ? message.secondary || '-' : '-';\n\n // gather presentation styles\n const timerColour = getTimerColour(\n viewSettings,\n undefined,\n time.phase === TimerPhase.Warning,\n time.phase === TimerPhase.Danger,\n );\n\n const offsetState = getOffsetState(offset);\n\n return (\n <div className='studio__timers'>\n <div className='card' id='card-schedule'>\n <div className='card__row'>\n <div>\n <div className='label'>{getLocalizedString('common.started_at')}</div>\n <div className='runtime-timer'>{schedule.actualStart}</div>\n </div>\n <div>\n <div className='label center'>Over / under</div>\n <div className={cx(['runtime-timer', 'center', !eventNow && 'muted', offsetState])}>{schedule.offset}</div>\n </div>\n <div>\n <div className='label right'>{getLocalizedString('common.expected_end')}</div>\n <div className='runtime-timer right'>{schedule.expectedEnd}</div>\n </div>\n </div>\n </div>\n\n <div className='card' id='card-event-now'>\n <div className='card__row'>\n <div>\n <div className='label'>{getLocalizedString('common.now')}</div>\n <div className='title'>{event.title}</div>\n </div>\n <div>\n <div className='label right'>{getLocalizedString('common.next')}</div>\n <div className='title right'>{eventNextTitle}</div>\n </div>\n </div>\n\n <div className='card__row'>\n <div>\n <div className='label'>{getLocalizedString('common.started_at')}</div>\n <div className='runtime-timer'>{event.startedAt}</div>\n </div>\n <div>\n <div className='label' />\n <div\n className={cx([\n 'event-timer',\n time.phase === TimerPhase.Overtime && 'event-timer--finished',\n time.playback === Playback.Pause && 'event-timer--paused',\n ])}\n style={{\n '--phase-color': timerColour,\n }}\n data-phase={time.phase}\n >\n {event.timer}\n </div>\n </div>\n <div>\n <div className='label right'>{getLocalizedString('common.expected_end')}</div>\n <div className='runtime-timer right'>{event.expectedEnd}</div>\n </div>\n </div>\n </div>\n\n <StudioTimersAux />\n\n <div className='card' id='card-timer-message'>\n <div>\n <div className='label'>Timer message</div>\n <div className={cx(['extra', !formattedTimerMessage && 'muted'])}>{formattedTimerMessage}</div>\n </div>\n </div>\n\n <div className='card' id='card-secondary-message'>\n <div>\n <div className='label'>Secondary message</div>\n <div className={cx(['extra', !formattedSecondaryMessage && 'muted'])}>{formattedSecondaryMessage}</div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction StudioTimersAux() {\n const auxTimer = useAuxTimersTime();\n\n return (\n <div className='card' id='card-aux'>\n <div className='card__row'>\n <div>\n <div className='label'>Aux 1</div>\n <div className='extra'>{millisToString(auxTimer.aux1)}</div>\n </div>\n\n <div>\n <div className='label center'>Aux 2</div>\n <div className='extra center'>{millisToString(auxTimer.aux2)}</div>\n </div>\n\n <div>\n <div className='label right'>Aux 3</div>\n <div className='extra right'>{millisToString(auxTimer.aux3)}</div>\n </div>\n </div>\n </div>\n );\n}\n","import { CustomFields, ProjectData, Settings, ViewSettings } from 'ontime-types';\n\nimport useCustomFields from '../../common/hooks-query/useCustomFields';\nimport useProjectData from '../../common/hooks-query/useProjectData';\nimport useSettings from '../../common/hooks-query/useSettings';\nimport useViewSettings from '../../common/hooks-query/useViewSettings';\nimport { useViewOptionsStore } from '../../common/stores/viewOptions';\nimport { aggregateQueryStatus, ViewData } from '../utils/viewLoader.utils';\n\nexport interface StudioData {\n customFields: CustomFields;\n projectData: ProjectData;\n isMirrored: boolean;\n settings: Settings;\n viewSettings: ViewSettings;\n}\n\nexport function useStudioData(): ViewData<StudioData> {\n // persisted app state\n const isMirrored = useViewOptionsStore((state) => state.mirror);\n\n // HTTP API data\n const { data: projectData, status: projectDataStatus } = useProjectData();\n const { data: viewSettings, status: viewSettingsStatus } = useViewSettings();\n const { data: settings, status: settingsStatus } = useSettings();\n const { data: customFields, status: customFieldsStatus } = useCustomFields();\n\n return {\n data: {\n customFields,\n projectData,\n isMirrored,\n settings,\n viewSettings,\n },\n status: aggregateQueryStatus([projectDataStatus, viewSettingsStatus, settingsStatus, customFieldsStatus]),\n };\n}\n","import { useMemo } from 'react';\nimport { OntimeView } from 'ontime-types';\n\nimport EmptyPage from '../../common/components/state/EmptyPage';\nimport ViewLogo from '../../common/components/view-logo/ViewLogo';\nimport ViewParamsEditor from '../../common/components/view-params-editor/ViewParamsEditor';\nimport { useWindowTitle } from '../../common/hooks/useWindowTitle';\nimport { cx } from '../../common/utils/styleUtils';\nimport { getDefaultFormat } from '../../common/utils/time';\nimport Loader from '../common/loader/Loader';\n\nimport { getStudioOptions, useStudioOptions } from './studio.options';\nimport StudioClock from './StudioClock';\nimport StudioTimers from './StudioTimers';\nimport { StudioData, useStudioData } from './useStudioData';\n\nimport './Studio.scss';\n\nexport default function StudioLoader() {\n const { data, status } = useStudioData();\n\n useWindowTitle('Studio Clock');\n\n if (status === 'pending') {\n return <Loader />;\n }\n\n if (status === 'error') {\n return <EmptyPage text='There was an error fetching data, please refresh the page.' />;\n }\n\n return <Studio {...data} />;\n}\n\nfunction Studio({ customFields, projectData, isMirrored, settings, viewSettings }: StudioData) {\n const { hideCards } = useStudioOptions();\n\n // gather option data\n const defaultFormat = getDefaultFormat(settings?.timeFormat);\n const studioOptions = useMemo(() => getStudioOptions(defaultFormat, customFields), [defaultFormat, customFields]);\n\n return (\n <div className={cx(['studio', isMirrored && 'mirror'])} data-testid='studio-view'>\n <ViewParamsEditor target={OntimeView.StudioClock} viewOptions={studioOptions} />\n\n <div className='project-header'>\n {projectData?.logo && <ViewLogo name={projectData.logo} className='logo' />}\n <div className='title'>{projectData.title}</div>\n </div>\n\n <div className={cx(['studio-contents', hideCards && 'studio-contents--onecol'])}>\n <StudioClock hideCards={hideCards} />\n {!hideCards && <StudioTimers viewSettings={viewSettings} />}\n </div>\n </div>\n );\n}\n"],"names":["getStudioOptions","timeFormat","customFields","mainOptions","makeOptionsFromCustomFields","value","label","title","OptionTitle","ClockOptions","collapsible","options","getTimeOption","DataSources","id","description","type","values","defaultValue","ElementVisibility","getOptionsFromParams","searchParams","defaultValues","getValue","key","get","mainSource","hideCards","isStringBoolean","useStudioOptions","useSearchParams","maybePreset","use","PresetContext","useMemo","URLSearchParams","search","undefined","getLargeClockData","clock","display","meridian","formatted","formatTime","endsWith","slice","seconds","secondsInMillis","activeIndicators","Array","keys","secondsIndicators","StudioClock","isSmallScreen","useIsSmallScreen","playback","useStudioClockSocket","onAir","Playback","Stop","jsx","StudioClockMobile","jsxs","map","i","cx","transform","Boolean","displayClock","SuperscriptTime","format12","format24","getFormattedScheduleTimes","data","actualStart","expectedEnd","offset","getOffsetText","getFormattedEventData","eventNow","timer","startedAt","expectedFinish","millisToString","current","StudioTimers","viewSettings","getLocalizedString","useTranslation","eventNext","message","time","rundown","expectedRundownEnd","useStudioTimersSocket","schedule","event","eventNextTitle","getPropertyValue","formattedTimerMessage","visible","text","formattedSecondaryMessage","secondarySource","secondary","timerColour","getTimerColour","phase","TimerPhase","Warning","Danger","offsetState","getOffsetState","Overtime","Pause","StudioTimersAux","auxTimer","useAuxTimersTime","aux1","aux2","aux3","useStudioData","isMirrored","useViewOptionsStore","state","mirror","projectData","status","projectDataStatus","useProjectData","viewSettingsStatus","useViewSettings","settings","settingsStatus","useSettings","customFieldsStatus","useCustomFields","aggregateQueryStatus","StudioLoader","useWindowTitle","Loader","EmptyPage","Studio","defaultFormat","getDefaultFormat","studioOptions","ViewParamsEditor","OntimeView","logo","ViewLogo"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{h as r,j as f,cu as y,cv as u}from"./vendor-BKUJ0_Du.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b7985934-c1b9-4a4f-975c-72414469c03d",e._sentryDebugIdIdentifier="sentry-dbid-b7985934-c1b9-4a4f-975c-72414469c03d")}catch{}})();const h="_wrapper_1l24u_17",b={wrapper:h},g=r.forwardRef((e,n)=>{const{language:i,initialValue:t,isDirty:o,setIsDirty:d}=e,[s,l]=r.useState(t),p=a=>{const c=u.languages[i];return c?u.highlight(a,c,i):a},m=a=>{l(a)};return r.useImperativeHandle(n,()=>({getCss:()=>s})),r.useEffect(()=>{l(t)},[t]),r.useEffect(()=>{t.trim()!==s.trim()&&!o&&s.length!==0&&d(!0),t.trim()===s.trim()&&o&&d(!1)},[t,s,o,d]),f.jsx("div",{className:b.wrapper,children:f.jsx(y,{value:s,padding:15,onValueChange:m,highlight:p,style:{fontFamily:"monospace",fontSize:12,minHeight:500,background:"#2d2d2d"}})})});g.displayName="StyleEditor";const E=r.memo(g);export{E as default};
2
- //# sourceMappingURL=StyleEditor-DIHQ1PUV.js.map
1
+ import{h as r,j as f,cu as y,cv as u}from"./vendor-Dt3_Fdfs.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]="b7985934-c1b9-4a4f-975c-72414469c03d",e._sentryDebugIdIdentifier="sentry-dbid-b7985934-c1b9-4a4f-975c-72414469c03d")}catch{}})();const h="_wrapper_1l24u_17",b={wrapper:h},g=r.forwardRef((e,n)=>{const{language:i,initialValue:t,isDirty:o,setIsDirty:d}=e,[s,l]=r.useState(t),p=a=>{const c=u.languages[i];return c?u.highlight(a,c,i):a},m=a=>{l(a)};return r.useImperativeHandle(n,()=>({getCss:()=>s})),r.useEffect(()=>{l(t)},[t]),r.useEffect(()=>{t.trim()!==s.trim()&&!o&&s.length!==0&&d(!0),t.trim()===s.trim()&&o&&d(!1)},[t,s,o,d]),f.jsx("div",{className:b.wrapper,children:f.jsx(y,{value:s,padding:15,onValueChange:m,highlight:p,style:{fontFamily:"monospace",fontSize:12,minHeight:500,background:"#2d2d2d"}})})});g.displayName="StyleEditor";const E=r.memo(g);export{E as default};
2
+ //# sourceMappingURL=StyleEditor-buc-zQHR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StyleEditor-DIHQ1PUV.js","sources":["../../src/features/app-settings/panel/settings-panel/composite/StyleEditor.tsx"],"sourcesContent":["import { forwardRef, memo, useEffect, useImperativeHandle, useState } from 'react';\nimport Editor from 'react-simple-code-editor';\nimport Prism from 'prismjs/components/prism-core';\n\nimport 'prismjs/components/prism-css';\nimport 'prismjs/themes/prism-tomorrow.min.css';\nimport style from './StyleEditor.module.scss';\n\ninterface CodeEditorProps {\n language: string;\n initialValue: string;\n isDirty: boolean;\n setIsDirty: (value: boolean) => void;\n}\n\nconst CodeEditor = forwardRef((props: CodeEditorProps, cssRef) => {\n const { language, initialValue, isDirty, setIsDirty } = props;\n\n const [code, setCode] = useState(initialValue);\n\n const highlight = (code: string) => {\n const grammar = Prism.languages[language];\n return grammar ? Prism.highlight(code, grammar, language) : code;\n };\n\n const handleChange = (newCode: string) => {\n setCode(newCode);\n };\n\n useImperativeHandle(cssRef, () => {\n return {\n getCss: () => code,\n };\n });\n\n // add contents to editor on mount and any change in initialValue\n useEffect(() => {\n setCode(initialValue);\n }, [initialValue]);\n\n // handle dirty state on change\n useEffect(() => {\n if (initialValue.trim() !== code.trim() && !isDirty && code.length !== 0) {\n setIsDirty(true);\n }\n\n if (initialValue.trim() === code.trim() && isDirty) {\n setIsDirty(false);\n }\n }, [initialValue, code, isDirty, setIsDirty]);\n\n return (\n <div className={style.wrapper}>\n <Editor\n value={code}\n padding={15}\n onValueChange={handleChange}\n highlight={highlight}\n style={{\n fontFamily: 'monospace',\n fontSize: 12,\n minHeight: 500,\n background: '#2d2d2d', // Background of tomorrow theme\n }}\n />\n </div>\n );\n});\n\nCodeEditor.displayName = 'StyleEditor';\n\nexport default memo(CodeEditor);\n"],"names":["CodeEditor","forwardRef","props","cssRef","language","initialValue","isDirty","setIsDirty","code","setCode","useState","highlight","grammar","Prism","languages","handleChange","newCode","useImperativeHandle","getCss","useEffect","trim","length","jsx","style","wrapper","Editor","fontFamily","fontSize","minHeight","background","displayName","memo"],"mappings":"ocAeMA,EAAaC,EAAAA,WAAW,CAACC,EAAwBC,IAAW,CAC1D,KAAA,CAAEC,SAAAA,EAAUC,aAAAA,EAAcC,QAAAA,EAASC,WAAAA,CAAAA,EAAeL,EAElD,CAACM,EAAMC,CAAO,EAAIC,EAAAA,SAASL,CAAY,EAEvCM,EAAaH,GAAiB,CAC5BI,MAAAA,EAAUC,EAAMC,UAAUV,CAAQ,EACxC,OAAOQ,EAAUC,EAAMF,UAAUH,EAAMI,EAASR,CAAQ,EAAII,CAC9D,EAEMO,EAAgBC,GAAoB,CACxCP,EAAQO,CAAO,CACjB,EAEAC,OAAAA,EAAAA,oBAAoBd,EAAQ,KACnB,CACLe,OAAQA,IAAMV,CAChB,EACD,EAGDW,EAAAA,UAAU,IAAM,CACdV,EAAQJ,CAAY,CAAA,EACnB,CAACA,CAAY,CAAC,EAGjBc,EAAAA,UAAU,IAAM,CACVd,EAAae,KAAK,IAAMZ,EAAKY,QAAU,CAACd,GAAWE,EAAKa,SAAW,GACrEd,EAAW,EAAI,EAGbF,EAAae,KAAK,IAAMZ,EAAKY,KAAAA,GAAUd,GACzCC,EAAW,EAAK,GAEjB,CAACF,EAAcG,EAAMF,EAASC,CAAU,CAAC,EAGzCe,EAAAA,IAAA,MAAA,CAAI,UAAWC,EAAMC,QACpB,SAACF,MAAAG,EAAA,CACC,MAAOjB,EACP,QAAS,GACT,cAAeO,EACf,UAAAJ,EACA,MAAO,CACLe,WAAY,YACZC,SAAU,GACVC,UAAW,IACXC,WAAY,WACZ,CAEN,CAAA,CAEJ,CAAC,EAED7B,EAAW8B,YAAc,cAEzB,MAAeC,EAAAA,EAAAA,KAAK/B,CAAU"}
1
+ {"version":3,"file":"StyleEditor-buc-zQHR.js","sources":["../../src/features/app-settings/panel/settings-panel/composite/StyleEditor.tsx"],"sourcesContent":["import { forwardRef, memo, useEffect, useImperativeHandle, useState } from 'react';\nimport Editor from 'react-simple-code-editor';\nimport Prism from 'prismjs/components/prism-core';\n\nimport 'prismjs/components/prism-css';\nimport 'prismjs/themes/prism-tomorrow.min.css';\nimport style from './StyleEditor.module.scss';\n\ninterface CodeEditorProps {\n language: string;\n initialValue: string;\n isDirty: boolean;\n setIsDirty: (value: boolean) => void;\n}\n\nconst CodeEditor = forwardRef((props: CodeEditorProps, cssRef) => {\n const { language, initialValue, isDirty, setIsDirty } = props;\n\n const [code, setCode] = useState(initialValue);\n\n const highlight = (code: string) => {\n const grammar = Prism.languages[language];\n return grammar ? Prism.highlight(code, grammar, language) : code;\n };\n\n const handleChange = (newCode: string) => {\n setCode(newCode);\n };\n\n useImperativeHandle(cssRef, () => {\n return {\n getCss: () => code,\n };\n });\n\n // add contents to editor on mount and any change in initialValue\n useEffect(() => {\n setCode(initialValue);\n }, [initialValue]);\n\n // handle dirty state on change\n useEffect(() => {\n if (initialValue.trim() !== code.trim() && !isDirty && code.length !== 0) {\n setIsDirty(true);\n }\n\n if (initialValue.trim() === code.trim() && isDirty) {\n setIsDirty(false);\n }\n }, [initialValue, code, isDirty, setIsDirty]);\n\n return (\n <div className={style.wrapper}>\n <Editor\n value={code}\n padding={15}\n onValueChange={handleChange}\n highlight={highlight}\n style={{\n fontFamily: 'monospace',\n fontSize: 12,\n minHeight: 500,\n background: '#2d2d2d', // Background of tomorrow theme\n }}\n />\n </div>\n );\n});\n\nCodeEditor.displayName = 'StyleEditor';\n\nexport default memo(CodeEditor);\n"],"names":["CodeEditor","forwardRef","props","cssRef","language","initialValue","isDirty","setIsDirty","code","setCode","useState","highlight","grammar","Prism","languages","handleChange","newCode","useImperativeHandle","getCss","useEffect","trim","length","jsx","style","wrapper","Editor","fontFamily","fontSize","minHeight","background","displayName","memo"],"mappings":"ocAeMA,EAAaC,EAAAA,WAAW,CAACC,EAAwBC,IAAW,CAC1D,KAAA,CAAEC,SAAAA,EAAUC,aAAAA,EAAcC,QAAAA,EAASC,WAAAA,CAAAA,EAAeL,EAElD,CAACM,EAAMC,CAAO,EAAIC,EAAAA,SAASL,CAAY,EAEvCM,EAAaH,GAAiB,CAC5BI,MAAAA,EAAUC,EAAMC,UAAUV,CAAQ,EACxC,OAAOQ,EAAUC,EAAMF,UAAUH,EAAMI,EAASR,CAAQ,EAAII,CAC9D,EAEMO,EAAgBC,GAAoB,CACxCP,EAAQO,CAAO,CACjB,EAEAC,OAAAA,EAAAA,oBAAoBd,EAAQ,KACnB,CACLe,OAAQA,IAAMV,CAChB,EACD,EAGDW,EAAAA,UAAU,IAAM,CACdV,EAAQJ,CAAY,CAAA,EACnB,CAACA,CAAY,CAAC,EAGjBc,EAAAA,UAAU,IAAM,CACVd,EAAae,KAAK,IAAMZ,EAAKY,QAAU,CAACd,GAAWE,EAAKa,SAAW,GACrEd,EAAW,EAAI,EAGbF,EAAae,KAAK,IAAMZ,EAAKY,KAAAA,GAAUd,GACzCC,EAAW,EAAK,GAEjB,CAACF,EAAcG,EAAMF,EAASC,CAAU,CAAC,EAGzCe,EAAAA,IAAA,MAAA,CAAI,UAAWC,EAAMC,QACpB,SAACF,MAAAG,EAAA,CACC,MAAOjB,EACP,QAAS,GACT,cAAeO,EACf,UAAAJ,EACA,MAAO,CACLe,WAAY,YACZC,SAAU,GACVC,UAAW,IACXC,WAAY,WACZ,CAEN,CAAA,CAEJ,CAAC,EAED7B,EAAW8B,YAAc,cAEzB,MAAeC,EAAAA,EAAAA,KAAK/B,CAAU"}
@@ -1,2 +1,2 @@
1
- import{j as r}from"./vendor-BKUJ0_Du.js";/* empty css */(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},d=new e.Error().stack;d&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[d]="00a8c8dc-5631-4773-8d28-638a8f49d145",e._sentryDebugIdIdentifier="sentry-dbid-00a8c8dc-5631-4773-8d28-638a8f49d145")}catch{}})();function o({time:e,className:d}){const[i,n]=e.split(" ");return r.jsxs("div",{className:d,children:[i,n&&r.jsx("sup",{className:"period",children:n})]})}export{o as S};
2
- //# sourceMappingURL=SuperscriptPeriod-EEedc9rG.js.map
1
+ import{j as r}from"./vendor-Dt3_Fdfs.js";/* empty css */(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},d=new e.Error().stack;d&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[d]="00a8c8dc-5631-4773-8d28-638a8f49d145",e._sentryDebugIdIdentifier="sentry-dbid-00a8c8dc-5631-4773-8d28-638a8f49d145")}catch{}})();function o({time:e,className:d}){const[i,n]=e.split(" ");return r.jsxs("div",{className:d,children:[i,n&&r.jsx("sup",{className:"period",children:n})]})}export{o as S};
2
+ //# sourceMappingURL=SuperscriptPeriod-CSX8zFgq.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SuperscriptPeriod-EEedc9rG.js","sources":["../../src/views/common/superscript-time/SuperscriptPeriod.tsx"],"sourcesContent":["import './SuperscriptTime.scss';\n\ninterface SuperscriptPeriodProps {\n time: string;\n className?: string;\n}\n\n/**\n * Receives a time string and formats periods (am/pm) as superscript\n * @example 12:00 AM -> AM becomes a superscript\n * @example 12:00:10 -> no formatting changes applied\n */\nexport default function SuperscriptPeriod({ time, className }: SuperscriptPeriodProps) {\n // we assume anything after space is a period tag\n const [timeString, period] = time.split(' ');\n\n return (\n <div className={className}>\n {timeString}\n {period && <sup className='period'>{period}</sup>}\n </div>\n );\n}\n"],"names":["SuperscriptPeriod","time","className","timeString","period","split","jsxs","jsx"],"mappings":"yaAYA,SAAwBA,EAAkB,CAAEC,KAAAA,EAAMC,UAAAA,CAAkC,EAAG,CAErF,KAAM,CAACC,EAAYC,CAAM,EAAIH,EAAKI,MAAM,GAAG,EAGzC,OAAAC,OAAC,OAAI,UAAAJ,EACFC,SAAAA,CAAAA,EACAC,GAAUG,EAAA,IAAC,MAAI,CAAA,UAAU,SAAUH,SAAOA,CAAA,CAAA,CAAA,EAC7C,CAEJ"}
1
+ {"version":3,"file":"SuperscriptPeriod-CSX8zFgq.js","sources":["../../src/views/common/superscript-time/SuperscriptPeriod.tsx"],"sourcesContent":["import './SuperscriptTime.scss';\n\ninterface SuperscriptPeriodProps {\n time: string;\n className?: string;\n}\n\n/**\n * Receives a time string and formats periods (am/pm) as superscript\n * @example 12:00 AM -> AM becomes a superscript\n * @example 12:00:10 -> no formatting changes applied\n */\nexport default function SuperscriptPeriod({ time, className }: SuperscriptPeriodProps) {\n // we assume anything after space is a period tag\n const [timeString, period] = time.split(' ');\n\n return (\n <div className={className}>\n {timeString}\n {period && <sup className='period'>{period}</sup>}\n </div>\n );\n}\n"],"names":["SuperscriptPeriod","time","className","timeString","period","split","jsxs","jsx"],"mappings":"yaAYA,SAAwBA,EAAkB,CAAEC,KAAAA,EAAMC,UAAAA,CAAkC,EAAG,CAErF,KAAM,CAACC,EAAYC,CAAM,EAAIH,EAAKI,MAAM,GAAG,EAGzC,OAAAC,OAAC,OAAI,UAAAJ,EACFC,SAAAA,CAAAA,EACAC,GAAUG,EAAA,IAAC,MAAI,CAAA,UAAU,SAAUH,SAAOA,CAAA,CAAA,CAAA,EAC7C,CAEJ"}
@@ -1,2 +1,2 @@
1
- import{j as n}from"./vendor-BKUJ0_Du.js";/* empty css */(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},s=new e.Error().stack;s&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[s]="aefb1501-4118-4a11-bc95-53da82643f28",e._sentryDebugIdIdentifier="sentry-dbid-aefb1501-4118-4a11-bc95-53da82643f28")}catch{}})();function a(e){return e.length!==8?[e,""]:[e.slice(0,5),e.slice(5)]}function l({time:e,className:s,style:r}){const[d,i]=e.split(" "),[o,t]=a(d);return n.jsxs("div",{className:s,style:r,children:[o,t&&n.jsx("span",{className:"subscript",children:t}),i&&n.jsx("sup",{className:"period",children:i})]})}export{l as S};
2
- //# sourceMappingURL=SuperscriptTime-BVanhNvd.js.map
1
+ import{j as n}from"./vendor-Dt3_Fdfs.js";/* empty css */(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},s=new e.Error().stack;s&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[s]="aefb1501-4118-4a11-bc95-53da82643f28",e._sentryDebugIdIdentifier="sentry-dbid-aefb1501-4118-4a11-bc95-53da82643f28")}catch{}})();function a(e){return e.length!==8?[e,""]:[e.slice(0,5),e.slice(5)]}function l({time:e,className:s,style:r}){const[d,i]=e.split(" "),[o,t]=a(d);return n.jsxs("div",{className:s,style:r,children:[o,t&&n.jsx("span",{className:"subscript",children:t}),i&&n.jsx("sup",{className:"period",children:i})]})}export{l as S};
2
+ //# sourceMappingURL=SuperscriptTime-retbmT5o.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SuperscriptTime-BVanhNvd.js","sources":["../../src/views/common/superscript-time/SuperscriptTime.tsx"],"sourcesContent":["import { CSSProperties } from 'react';\n\nimport './SuperscriptTime.scss';\n\ninterface SuperscriptTimeProps {\n time: string;\n className?: string;\n style?: CSSProperties;\n}\n\n/**\n * When the timer includes seconds, we want to split it from the rest\n */\nfunction getTimerParts(time: string) {\n if (time.length !== 8) {\n return [time, ''];\n }\n\n return [time.slice(0, 5), time.slice(5)];\n}\n\n/**\n * Receives a time string and formats it with a subscript or superscript\n * @example 12:00 AM -> AM becomes a superscript\n * @example 12:00:10 -> the seconds become a subscript\n */\nexport default function SuperscriptTime({ time, className, style }: SuperscriptTimeProps) {\n // we assume anything after space is a period tag\n const [timeString, period] = time.split(' ');\n const [mainTime, subscript] = getTimerParts(timeString);\n\n return (\n <div className={className} style={style}>\n {mainTime}\n {subscript && <span className='subscript'>{subscript}</span>}\n {period && <sup className='period'>{period}</sup>}\n </div>\n );\n}\n"],"names":["getTimerParts","time","length","slice","SuperscriptTime","className","style","timeString","period","split","mainTime","subscript","jsxs","jsx"],"mappings":"yaAaA,SAASA,EAAcC,EAAc,CAC/BA,OAAAA,EAAKC,SAAW,EACX,CAACD,EAAM,EAAE,EAGX,CAACA,EAAKE,MAAM,EAAG,CAAC,EAAGF,EAAKE,MAAM,CAAC,CAAC,CACzC,CAOA,SAAwBC,EAAgB,CAAEH,KAAAA,EAAMI,UAAAA,EAAWC,MAAAA,CAA4B,EAAG,CAExF,KAAM,CAACC,EAAYC,CAAM,EAAIP,EAAKQ,MAAM,GAAG,EACrC,CAACC,EAAUC,CAAS,EAAIX,EAAcO,CAAU,EAGpD,OAAAK,EAAA,KAAC,MAAI,CAAA,UAAAP,EAAsB,MAAAC,EACxBI,SAAAA,CAAAA,EACAC,GAAaE,EAAA,IAAC,OAAK,CAAA,UAAU,YAAaF,SAAUA,EAAA,EACpDH,GAAUK,EAAA,IAAC,MAAI,CAAA,UAAU,SAAUL,SAAOA,CAAA,CAAA,CAAA,EAC7C,CAEJ"}
1
+ {"version":3,"file":"SuperscriptTime-retbmT5o.js","sources":["../../src/views/common/superscript-time/SuperscriptTime.tsx"],"sourcesContent":["import { CSSProperties } from 'react';\n\nimport './SuperscriptTime.scss';\n\ninterface SuperscriptTimeProps {\n time: string;\n className?: string;\n style?: CSSProperties;\n}\n\n/**\n * When the timer includes seconds, we want to split it from the rest\n */\nfunction getTimerParts(time: string) {\n if (time.length !== 8) {\n return [time, ''];\n }\n\n return [time.slice(0, 5), time.slice(5)];\n}\n\n/**\n * Receives a time string and formats it with a subscript or superscript\n * @example 12:00 AM -> AM becomes a superscript\n * @example 12:00:10 -> the seconds become a subscript\n */\nexport default function SuperscriptTime({ time, className, style }: SuperscriptTimeProps) {\n // we assume anything after space is a period tag\n const [timeString, period] = time.split(' ');\n const [mainTime, subscript] = getTimerParts(timeString);\n\n return (\n <div className={className} style={style}>\n {mainTime}\n {subscript && <span className='subscript'>{subscript}</span>}\n {period && <sup className='period'>{period}</sup>}\n </div>\n );\n}\n"],"names":["getTimerParts","time","length","slice","SuperscriptTime","className","style","timeString","period","split","mainTime","subscript","jsxs","jsx"],"mappings":"yaAaA,SAASA,EAAcC,EAAc,CAC/BA,OAAAA,EAAKC,SAAW,EACX,CAACD,EAAM,EAAE,EAGX,CAACA,EAAKE,MAAM,EAAG,CAAC,EAAGF,EAAKE,MAAM,CAAC,CAAC,CACzC,CAOA,SAAwBC,EAAgB,CAAEH,KAAAA,EAAMI,UAAAA,EAAWC,MAAAA,CAA4B,EAAG,CAExF,KAAM,CAACC,EAAYC,CAAM,EAAIP,EAAKQ,MAAM,GAAG,EACrC,CAACC,EAAUC,CAAS,EAAIX,EAAcO,CAAU,EAGpD,OAAAK,EAAA,KAAC,MAAI,CAAA,UAAAP,EAAsB,MAAAC,EACxBI,SAAAA,CAAAA,EACAC,GAAaE,EAAA,IAAC,OAAK,CAAA,UAAU,YAAaF,SAAUA,EAAA,EACpDH,GAAUK,EAAA,IAAC,MAAI,CAAA,UAAU,SAAUL,SAAOA,CAAA,CAAA,CAAA,EAC7C,CAEJ"}
@@ -0,0 +1,2 @@
1
+ import{j as e,by as y,bT as b,bU as g,bV as w,A as k,bW as v,bX as C,bY as P,bZ as I,b_ as N,b$ as D,c0 as $,bC as S,bD as T,c1 as R,c2 as E,aV as L,c3 as h,c4 as A}from"./vendor-Dt3_Fdfs.js";import{e as a,aE as p}from"./index-3aosT33y.js";(function(){try{var s=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},o=new s.Error().stack;o&&(s._sentryDebugIds=s._sentryDebugIds||{},s._sentryDebugIds[o]="27ff2e5c-d2e5-4069-8e12-04b3e0fb409d",s._sentryDebugIdIdentifier="sentry-dbid-27ff2e5c-d2e5-4069-8e12-04b3e0fb409d")}catch{}})();const O="_blink_177b4_1",V="_fourtyfive_177b4_13",W="_infoLabel_177b4_17",z="_info_177b4_17",F="_warning_177b4_37",H="_error_177b4_41",u={blink:O,fourtyfive:V,infoLabel:W,info:z,warning:F,error:H};function ie({className:s,type:o="info",children:n}){return e.jsxs("div",{className:a([u.infoLabel,u[o],s]),children:[o==="info"&&e.jsx(y,{}),o==="warning"&&e.jsx(b,{}),o==="error"&&e.jsx(b,{}),e.jsx("div",{children:n})]})}const U="_checkbox_175d8_17",X="_indicator_175d8_53",d={checkbox:U,indicator:X};function le(s){return e.jsx(g,{className:d.checkbox,...s,children:e.jsx(w,{className:d.indicator,children:e.jsx(k,{className:d.icon})})})}const Y="_blink_10e6s_1",Z="_fourtyfive_10e6s_13",q="_medium_10e6s_43",B="_large_10e6s_51",G="_thumb_10e6s_59",_={blink:Y,fourtyfive:Z,switch:"_switch_10e6s_17",medium:q,large:B,thumb:G};function ae({size:s="medium",...o}){return e.jsx(v,{className:a([_.switch,_[s]]),...o,children:e.jsx(C,{className:_.thumb})})}const J="_popup_1xpg9_17",K="_title_1xpg9_34",f={popup:J,title:K};function M({title:s,className:o,children:n,...t}){return e.jsx(P,{children:e.jsx(I,{sideOffset:8,...t,children:e.jsxs(N,{className:f.popup,children:[s&&e.jsx(D,{className:f.title,children:s}),e.jsx($,{className:o,render:e.jsx("div",{}),children:n})]})})})}const Q="_input_jz3ye_17",ee={input:Q};function x({color:s,onChange:o,children:n}){return e.jsxs(S,{children:[e.jsx(T,{children:n}),e.jsxs(M,{children:[e.jsx(R,{color:s,onChange:o}),e.jsx(E,{color:s,onChange:o,className:ee.input,prefixed:!0})]})]})}const se="_list_1tpdr_17",oe="_swatch_1tpdr_23",ne="_selected_1tpdr_33",te="_selectable_1tpdr_36",i={list:se,swatch:oe,selected:ne,selectable:te};function de(s){const{color:o,onChange:n,isSelected:t,alwaysDisplayColor:c}=s,l=L(j=>{n(j)},100),r=c||t?o:"",{color:m}=p(r);return e.jsx(x,{color:r,onChange:l,children:e.jsx("div",{className:a([i.swatch,t&&i.selected,i.selectable]),style:{backgroundColor:r},children:e.jsx(h,{color:m})})})}function _e(s){const{name:o,control:n}=s,{field:{onChange:t,value:c}}=A({control:n,name:o}),l=typeof c=="string"?c:"",{color:r}=p(l);return e.jsx(x,{color:c,onChange:t,children:e.jsx("div",{className:a([i.swatch,i.selectable]),style:{backgroundColor:l},children:e.jsx(h,{color:r})})})}export{le as C,ie as I,M as P,ae as S,_e as a,de as b,i as s};
2
+ //# sourceMappingURL=SwatchPicker-DuWAohyD.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SwatchPicker-Ckpchvjo.js","sources":["../../src/common/components/info/Info.tsx","../../src/common/components/checkbox/Checkbox.tsx","../../src/common/components/switch/Switch.tsx","../../src/common/components/popover/Popover.tsx","../../src/common/components/input/popover-picker/PopoverPicker.tsx","../../src/common/components/input/colour-input/SwatchPicker.tsx"],"sourcesContent":["import { PropsWithChildren } from 'react';\nimport { IoAlertCircle, IoWarning } from 'react-icons/io5';\n\nimport { cx } from '../../utils/styleUtils';\n\nimport style from './Info.module.scss';\n\ninterface InfoProps {\n className?: string;\n type?: 'info' | 'warning' | 'error';\n}\n\nexport default function Info({ className, type = 'info', children }: PropsWithChildren<InfoProps>) {\n return (\n <div className={cx([style.infoLabel, style[type], className])}>\n {type === 'info' && <IoAlertCircle />}\n {type === 'warning' && <IoWarning />}\n {type === 'error' && <IoWarning />}\n <div>{children}</div>\n </div>\n );\n}\n","import { IoCheckmark } from 'react-icons/io5';\nimport { Checkbox as BaseCheckbox } from '@base-ui/react/checkbox';\n\nimport style from './Checkbox.module.scss';\n\nexport default function Checkbox(checkboxProps: BaseCheckbox.Root.Props) {\n return (\n <BaseCheckbox.Root className={style.checkbox} {...checkboxProps}>\n <BaseCheckbox.Indicator className={style.indicator}>\n <IoCheckmark className={style.icon} />\n </BaseCheckbox.Indicator>\n </BaseCheckbox.Root>\n );\n}\n","import { Switch as BaseSwitch } from '@base-ui/react/switch';\n\nimport { cx } from '../../utils/styleUtils';\n\nimport style from './Switch.module.scss';\n\ninterface SwitchProps extends BaseSwitch.Root.Props {\n size?: 'medium' | 'large';\n}\n\nexport default function Switch({ size = 'medium', ...switchProps }: SwitchProps) {\n return (\n <BaseSwitch.Root className={cx([style.switch, style[size]])} {...switchProps}>\n <BaseSwitch.Thumb className={style.thumb} />\n </BaseSwitch.Root>\n );\n}\n","import { PropsWithChildren } from 'react';\nimport { Popover } from '@base-ui/react/popover';\n\nimport style from './Popover.module.scss';\n\ninterface PopoverContentsProps extends Popover.Positioner.Props {\n title?: string;\n className?: string;\n}\nexport default function PopoverContents({\n title,\n className,\n children,\n ...popoverProps\n}: PropsWithChildren<PopoverContentsProps>) {\n return (\n <Popover.Portal>\n <Popover.Positioner sideOffset={8} {...popoverProps}>\n <Popover.Popup className={style.popup}>\n {title && <Popover.Title className={style.title}>{title}</Popover.Title>}\n <Popover.Description className={className} render={<div />}>\n {children}\n </Popover.Description>\n </Popover.Popup>\n </Popover.Positioner>\n </Popover.Portal>\n );\n}\n","import { PropsWithChildren } from 'react';\nimport { HexAlphaColorPicker, HexColorInput } from 'react-colorful';\nimport { Popover } from '@base-ui/react/popover';\n\nimport PopoverContents from '../../popover/Popover';\n\nimport style from './PopoverPicker.module.scss';\n\ninterface PopoverPickerProps {\n color: string;\n onChange: (color: string) => void;\n}\n\nexport default function PopoverPicker({ color, onChange, children }: PropsWithChildren<PopoverPickerProps>) {\n return (\n <Popover.Root>\n <Popover.Trigger>{children}</Popover.Trigger>\n <PopoverContents>\n <HexAlphaColorPicker color={color} onChange={onChange} />\n <HexColorInput color={color} onChange={onChange} className={style.input} prefixed />\n </PopoverContents>\n </Popover.Root>\n );\n}\n","import { useController, UseControllerProps } from 'react-hook-form';\nimport { IoEyedrop } from 'react-icons/io5';\nimport { useDebouncedCallback } from '@mantine/hooks';\nimport { ViewSettings } from 'ontime-types';\n\nimport { cx, getAccessibleColour } from '../../../utils/styleUtils';\nimport PopoverPicker from '../popover-picker/PopoverPicker';\n\nimport style from './SwatchSelect.module.scss';\n\ninterface SwatchPickerProps {\n color: string;\n isSelected?: boolean;\n onChange: (name: string) => void;\n alwaysDisplayColor?: boolean;\n}\n\nexport default function SwatchPicker(props: SwatchPickerProps) {\n const { color, onChange, isSelected, alwaysDisplayColor } = props;\n\n const debouncedOnChange = useDebouncedCallback((newValue: string) => {\n onChange(newValue);\n }, 100);\n\n const displayColor = alwaysDisplayColor || isSelected ? color : '';\n const { color: iconColor } = getAccessibleColour(displayColor);\n\n return (\n <PopoverPicker color={displayColor} onChange={debouncedOnChange}>\n <div\n className={cx([style.swatch, isSelected && style.selected, style.selectable])}\n style={{ backgroundColor: displayColor }}\n >\n <IoEyedrop color={iconColor} />\n </div>\n </PopoverPicker>\n );\n}\n\nexport function SwatchPickerRHF(props: UseControllerProps<ViewSettings>) {\n const { name, control } = props;\n const {\n field: { onChange, value },\n } = useController({ control, name });\n\n const displayColor = typeof value === 'string' ? value : '';\n const { color: iconColor } = getAccessibleColour(displayColor);\n\n return (\n <PopoverPicker color={value as string} onChange={onChange}>\n <div className={cx([style.swatch, style.selectable])} style={{ backgroundColor: displayColor }}>\n <IoEyedrop color={iconColor} />\n </div>\n </PopoverPicker>\n );\n}\n"],"names":["Info","className","type","children","jsxs","cx","style","infoLabel","IoAlertCircle","jsx","IoWarning","Checkbox","checkboxProps","BaseCheckbox.Root","checkbox","BaseCheckbox.Indicator","indicator","IoCheckmark","icon","Switch","size","switchProps","BaseSwitch.Root","switch","BaseSwitch.Thumb","thumb","PopoverContents","title","popoverProps","Popover.Portal","Popover.Positioner","Popover.Popup","popup","Popover.Title","Popover.Description","PopoverPicker","color","onChange","Popover.Root","Popover.Trigger","HexAlphaColorPicker","HexColorInput","input","SwatchPicker","props","isSelected","alwaysDisplayColor","debouncedOnChange","useDebouncedCallback","newValue","displayColor","iconColor","getAccessibleColour","swatch","selected","selectable","backgroundColor","IoEyedrop","SwatchPickerRHF","name","control","field","value","useController"],"mappings":"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"}
1
+ {"version":3,"file":"SwatchPicker-DuWAohyD.js","sources":["../../src/common/components/info/Info.tsx","../../src/common/components/checkbox/Checkbox.tsx","../../src/common/components/switch/Switch.tsx","../../src/common/components/popover/Popover.tsx","../../src/common/components/input/popover-picker/PopoverPicker.tsx","../../src/common/components/input/colour-input/SwatchPicker.tsx"],"sourcesContent":["import { PropsWithChildren } from 'react';\nimport { IoAlertCircle, IoWarning } from 'react-icons/io5';\n\nimport { cx } from '../../utils/styleUtils';\n\nimport style from './Info.module.scss';\n\ninterface InfoProps {\n className?: string;\n type?: 'info' | 'warning' | 'error';\n}\n\nexport default function Info({ className, type = 'info', children }: PropsWithChildren<InfoProps>) {\n return (\n <div className={cx([style.infoLabel, style[type], className])}>\n {type === 'info' && <IoAlertCircle />}\n {type === 'warning' && <IoWarning />}\n {type === 'error' && <IoWarning />}\n <div>{children}</div>\n </div>\n );\n}\n","import { IoCheckmark } from 'react-icons/io5';\nimport { Checkbox as BaseCheckbox } from '@base-ui/react/checkbox';\n\nimport style from './Checkbox.module.scss';\n\nexport default function Checkbox(checkboxProps: BaseCheckbox.Root.Props) {\n return (\n <BaseCheckbox.Root className={style.checkbox} {...checkboxProps}>\n <BaseCheckbox.Indicator className={style.indicator}>\n <IoCheckmark className={style.icon} />\n </BaseCheckbox.Indicator>\n </BaseCheckbox.Root>\n );\n}\n","import { Switch as BaseSwitch } from '@base-ui/react/switch';\n\nimport { cx } from '../../utils/styleUtils';\n\nimport style from './Switch.module.scss';\n\ninterface SwitchProps extends BaseSwitch.Root.Props {\n size?: 'medium' | 'large';\n}\n\nexport default function Switch({ size = 'medium', ...switchProps }: SwitchProps) {\n return (\n <BaseSwitch.Root className={cx([style.switch, style[size]])} {...switchProps}>\n <BaseSwitch.Thumb className={style.thumb} />\n </BaseSwitch.Root>\n );\n}\n","import { PropsWithChildren } from 'react';\nimport { Popover } from '@base-ui/react/popover';\n\nimport style from './Popover.module.scss';\n\ninterface PopoverContentsProps extends Popover.Positioner.Props {\n title?: string;\n className?: string;\n}\nexport default function PopoverContents({\n title,\n className,\n children,\n ...popoverProps\n}: PropsWithChildren<PopoverContentsProps>) {\n return (\n <Popover.Portal>\n <Popover.Positioner sideOffset={8} {...popoverProps}>\n <Popover.Popup className={style.popup}>\n {title && <Popover.Title className={style.title}>{title}</Popover.Title>}\n <Popover.Description className={className} render={<div />}>\n {children}\n </Popover.Description>\n </Popover.Popup>\n </Popover.Positioner>\n </Popover.Portal>\n );\n}\n","import { PropsWithChildren } from 'react';\nimport { HexAlphaColorPicker, HexColorInput } from 'react-colorful';\nimport { Popover } from '@base-ui/react/popover';\n\nimport PopoverContents from '../../popover/Popover';\n\nimport style from './PopoverPicker.module.scss';\n\ninterface PopoverPickerProps {\n color: string;\n onChange: (color: string) => void;\n}\n\nexport default function PopoverPicker({ color, onChange, children }: PropsWithChildren<PopoverPickerProps>) {\n return (\n <Popover.Root>\n <Popover.Trigger>{children}</Popover.Trigger>\n <PopoverContents>\n <HexAlphaColorPicker color={color} onChange={onChange} />\n <HexColorInput color={color} onChange={onChange} className={style.input} prefixed />\n </PopoverContents>\n </Popover.Root>\n );\n}\n","import { useController, UseControllerProps } from 'react-hook-form';\nimport { IoEyedrop } from 'react-icons/io5';\nimport { useDebouncedCallback } from '@mantine/hooks';\nimport { ViewSettings } from 'ontime-types';\n\nimport { cx, getAccessibleColour } from '../../../utils/styleUtils';\nimport PopoverPicker from '../popover-picker/PopoverPicker';\n\nimport style from './SwatchSelect.module.scss';\n\ninterface SwatchPickerProps {\n color: string;\n isSelected?: boolean;\n onChange: (name: string) => void;\n alwaysDisplayColor?: boolean;\n}\n\nexport default function SwatchPicker(props: SwatchPickerProps) {\n const { color, onChange, isSelected, alwaysDisplayColor } = props;\n\n const debouncedOnChange = useDebouncedCallback((newValue: string) => {\n onChange(newValue);\n }, 100);\n\n const displayColor = alwaysDisplayColor || isSelected ? color : '';\n const { color: iconColor } = getAccessibleColour(displayColor);\n\n return (\n <PopoverPicker color={displayColor} onChange={debouncedOnChange}>\n <div\n className={cx([style.swatch, isSelected && style.selected, style.selectable])}\n style={{ backgroundColor: displayColor }}\n >\n <IoEyedrop color={iconColor} />\n </div>\n </PopoverPicker>\n );\n}\n\nexport function SwatchPickerRHF(props: UseControllerProps<ViewSettings>) {\n const { name, control } = props;\n const {\n field: { onChange, value },\n } = useController({ control, name });\n\n const displayColor = typeof value === 'string' ? value : '';\n const { color: iconColor } = getAccessibleColour(displayColor);\n\n return (\n <PopoverPicker color={value as string} onChange={onChange}>\n <div className={cx([style.swatch, style.selectable])} style={{ backgroundColor: displayColor }}>\n <IoEyedrop color={iconColor} />\n </div>\n </PopoverPicker>\n );\n}\n"],"names":["Info","className","type","children","jsxs","cx","style","infoLabel","IoAlertCircle","jsx","IoWarning","Checkbox","checkboxProps","BaseCheckbox.Root","checkbox","BaseCheckbox.Indicator","indicator","IoCheckmark","icon","Switch","size","switchProps","BaseSwitch.Root","switch","BaseSwitch.Thumb","thumb","PopoverContents","title","popoverProps","Popover.Portal","Popover.Positioner","Popover.Popup","popup","Popover.Title","Popover.Description","PopoverPicker","color","onChange","Popover.Root","Popover.Trigger","HexAlphaColorPicker","HexColorInput","input","SwatchPicker","props","isSelected","alwaysDisplayColor","debouncedOnChange","useDebouncedCallback","newValue","displayColor","iconColor","getAccessibleColour","swatch","selected","selectable","backgroundColor","IoEyedrop","SwatchPickerRHF","name","control","field","value","useController"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{j as e,h as P,aO as y,aP as A,aQ as z,aR as V,aS as H,aT as W,aU as q}from"./vendor-Dt3_Fdfs.js";import{m as g,bn as h,A as K,s as j,e as d,K as Q,y as B,v as J,f as $,bo as D,bp as M,k as L,x as k,bq as X,br as Y,bs as Z,bt as ee,bu as U,T as E,bv as ae,bw as te}from"./index-3aosT33y.js";import{T as u}from"./Tooltip-C5iPq6NR.js";import{v as F}from"./useRundown-C6stroSA.js";import{a as ne,g as se}from"./offset-yVqq_CB1.js";import{S as f}from"./SuperscriptPeriod-CSX8zFgq.js";import{i as O}from"./playbackstate-BZ9WYn2k.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new t.Error().stack;n&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[n]="6c730a98-5d4c-451a-9804-5b7d402330ab",t._sentryDebugIdIdentifier="sentry-dbid-6c730a98-5d4c-451a-9804-5b7d402330ab")}catch{}})();function S(t,n=3,s,l="due"){return t!==null&&t<=0?l:le(t,n,s)}function le(t,n=3,s){return g(t,{fallback:n===3?h:K,direction:s})}function C(t){return t!==null&&t>j?[t%j,Math.floor(t/j)]:[t,0]}const ce="_label_1ahsu_18",re="_clock_1ahsu_23",de="_column_1ahsu_35",ie="_over_1ahsu_47",oe="_under_1ahsu_48",m={label:ce,clock:re,column:de,over:ie,under:oe};function w({label:t,value:n,state:s="active",className:l,testId:r}){return e.jsxs("div",{className:d([m.column,l]),"data-state":s,children:[e.jsx("span",{className:m.label,children:t}),e.jsx("span",{className:m.clock,"data-testid":r,children:n})]})}function me({label:t,state:n="active",className:s,render:l}){return e.jsxs("div",{className:d([m.column,s]),"data-state":n,children:[e.jsx("span",{className:m.label,children:t}),l(m.clock)]})}function ue({state:t,value:n,testId:s}){return e.jsxs("div",{className:m.column,"data-state":t,children:[e.jsxs("div",{className:m.label,children:[e.jsx("span",{className:m.over,children:"Over"}),e.jsx("span",{children:"/"}),e.jsx("span",{className:m.under,children:"Under"})]}),e.jsx("span",{className:m.clock,"data-testid":s,children:n})]})}const xe="_column_1lv0k_17",pe="_row_1lv0k_26",fe="_row2_1lv0k_33",be="_metadataRow_1lv0k_40",je="_labelledElement_1lv0k_47",ve="_icon_1lv0k_53",Te="_label_1lv0k_47",Ne="_time_1lv0k_65",he="_daySpan_1lv0k_72",_e="_muted_1lv0k_87",ye="_labelTitle_1lv0k_91",Ee="_dueTime_1lv0k_100",a={column:xe,row:pe,row2:fe,metadataRow:be,labelledElement:je,icon:ve,label:Te,time:Ne,daySpan:he,muted:_e,labelTitle:ye,dueTime:Ee},Se={format12:"hh:mm:ss a",format24:"HH:mm:ss"};function v(t,n){return t===null?h:n?$(t,Se):g(t,{fallback:h})}function $e({shouldFormat:t}){const{plannedEnd:n,plannedStart:s,actualStart:l}=D(),r=v(s,t),i=v(l,t),[x,c]=P.useMemo(()=>C(n),[n]),o=v(x,t),p=c>0,b=p?`Planned end time (rundown spans over ${c+1} days)`:"Planned end time";return e.jsxs("div",{className:a.column,children:[e.jsxs("div",{className:a.row,children:[e.jsx("span",{className:a.label,children:"Start"}),e.jsx(u,{text:"Planned start time",render:e.jsxs("div",{className:a.labelledElement,children:[e.jsx(y,{className:a.icon}),e.jsx(f,{className:d([a.time,s===null&&a.muted]),time:r})]})}),e.jsx(u,{text:"Actual start time",render:e.jsxs("div",{className:a.labelledElement,"data-testid":"actual-start-time",children:[e.jsx(A,{className:a.icon}),e.jsx(f,{className:d([a.time,l===null&&a.muted]),time:i})]})})]}),e.jsxs("div",{className:a.row,children:[e.jsx("span",{className:a.label,children:"End"}),e.jsx(u,{text:b,render:e.jsxs("div",{className:a.labelledElement,children:[e.jsx(y,{className:a.icon}),e.jsx(f,{className:d([a.time,n===null&&a.muted]),time:o}),p&&e.jsx("span",{className:d([a.time,a.daySpan]),"data-day-offset":c})]})}),e.jsx(we,{shouldFormat:t})]})]})}function Me({shouldFormat:t}){const{plannedEnd:n,plannedStart:s}=D(),l=v(s,t),[r,i]=P.useMemo(()=>C(n),[n]),x=v(r,t),c=i>0,o=c?`Planned end time (rundown spans over ${i+1} days)`:"Planned end time";return e.jsxs("div",{className:a.column,children:[e.jsxs("div",{className:a.row2,children:[e.jsx("span",{className:a.label,children:"Start"}),e.jsx(u,{text:"Planned start time",render:e.jsxs("div",{className:a.labelledElement,children:[e.jsx(y,{className:a.icon}),e.jsx(f,{className:d([a.time,s===null&&a.muted]),time:l})]})})]}),e.jsxs("div",{className:a.row2,children:[e.jsx("span",{className:a.label,children:"End"}),e.jsx(u,{text:o,render:e.jsxs("div",{className:a.labelledElement,children:[e.jsx(y,{className:a.icon}),e.jsx(f,{className:d([a.time,n===null&&a.muted]),time:x}),c&&e.jsx("span",{className:d([a.time,a.daySpan]),"data-day-offset":i})]})})]})]})}function we({shouldFormat:t}){const n=Y(),[s,l]=P.useMemo(()=>C(n),[n]),r=v(s,t),i=s!==null&&l>0,x=i?`Expected end time (rundown spans over ${l+1} days)`:"Expected end time";return e.jsx(u,{text:x,render:e.jsxs("div",{className:a.labelledElement,children:[e.jsx(z,{className:a.icon}),e.jsx(f,{className:d([a.time,s===null&&a.muted]),time:r}),i&&e.jsx("span",{className:d([a.time,a.daySpan]),"data-day-offset":l})]})})}function Ue(){return e.jsxs("div",{className:a.column,children:[e.jsx(ge,{}),e.jsx(ke,{})]})}function ge(){const{clock:t,mode:n,groupExpectedEnd:s,actualGroupStart:l,currentDay:r,playback:i}=Z(),x=ee(),c=F(x),o=O(i),p=(()=>{if(!o||!c||c.timeStart===null)return null;const N=t+r*j;return n===U.Absolute?c.timeStart+c.duration-N:l+c.duration-N})(),b=S(p,3,E.CountDown),_=s!==null?s-t:null,T=S(_,3,E.CountDown);return e.jsxs("div",{className:a.metadataRow,children:[e.jsx("span",{className:c!=null&&c.title?a.labelTitle:a.label,children:`${(c==null?void 0:c.title)||"Group"} `}),e.jsxs("div",{className:a.labelledElement,children:[e.jsx(u,{text:"Time to planned group end",render:e.jsx(V,{className:a.icon})}),e.jsx("span",{className:d([a.time,(!c||!o)&&a.muted,b==="due"&&a.dueTime]),children:b})]}),e.jsxs("div",{className:a.labelledElement,children:[e.jsx(u,{text:"Time to expected group end",render:e.jsx(H,{className:a.icon})}),e.jsx("span",{className:d([a.time,!s&&a.muted,T==="due"&&a.dueTime]),children:T})]})]})}function ke(){const{clock:t,mode:n,actualStart:s,plannedStart:l,playback:r,currentDay:i}=ae(),{id:x,expectedStart:c}=te(),o=F(x),p=O(r),b=(()=>{if(!p||!o)return null;const R=o.timeStart+o.dayOffset*j,G=t+i*j;return n===U.Absolute?R-G:R+s-l-G})(),_=S(b,3,E.CountDown),T=c!==null?c-t:null,N=S(T,3,E.CountDown),I=(o==null?void 0:o.title)??null;return e.jsxs("div",{className:a.metadataRow,children:[e.jsx("span",{className:I?a.labelTitle:a.label,children:`${I||"Flag"} `}),e.jsxs("div",{className:a.labelledElement,children:[e.jsx(u,{text:"Time to next flag planned start",render:e.jsx(W,{className:a.icon})}),e.jsx("span",{"data-testid":"flag-plannedStart",className:d([a.time,(!o||!p)&&a.muted,_==="due"&&a.dueTime]),children:_})]}),e.jsxs("div",{className:a.labelledElement,children:[e.jsx(u,{text:"Time to next flag expected start",render:e.jsx(q,{className:a.icon})}),e.jsx("span",{"data-testid":"flag-expectedStart",className:d([a.time,T===null&&a.muted,N==="due"&&a.dueTime]),children:N})]})]})}function Fe(){const{numEvents:t,selectedEventIndex:n}=M(),s=n!==null?n+1:k,l=t?`${s} of ${t||k}`:k;return e.jsx(w,{label:"Progress",value:l,state:n===null?"muted":"active"})}function Ae(){const{offset:t,playback:n}=X(),s=O(n),l=se(s?t:null),r=ne(s?t:null);return e.jsx(ue,{state:l,value:r,testId:"offset"})}function ze({shouldFormat:t,className:n}){const s=J(),l=t?$(s):g(s);return e.jsx(me,{label:"Time now",className:n,render:r=>e.jsx(f,{className:r,time:l})})}function Ve({className:t}){const n=Q(),s=n.phase===B.Pending,l=s?"Count to start":"Running timer",r=g(s?n.secondaryTimer:n.current,{fallback:h});function i(){return s?"waiting":n.current===null?"muted":"active"}return e.jsx(w,{label:l,value:r,state:i(),className:t})}function He(){const{numEvents:t}=M(),{plannedEnd:n,plannedStart:s}=D(),r=s!==null&&n!==null?L(n-s):h;return e.jsxs(e.Fragment,{children:[e.jsx(w,{label:"Total duration",value:r}),e.jsx(w,{label:"Events",value:String(t)})]})}export{ze as C,Ue as M,Ae as O,He as P,Me as S,Ve as T,$e as a,Fe as b,le as f};
2
+ //# sourceMappingURL=TimeElements-BfxdLkpO.js.map