@getontime/cli 4.0.0 → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/client/assets/{Backstage-ZSqb8OU6.js → Backstage-CAjkmeJm.js} +2 -2
  2. package/client/assets/Backstage-CAjkmeJm.js.br +0 -0
  3. package/client/assets/Backstage-CAjkmeJm.js.gz +0 -0
  4. package/client/assets/{Backstage-ZSqb8OU6.js.map → Backstage-CAjkmeJm.js.map} +1 -1
  5. package/client/assets/{Countdown-DVRZbeRP.js → Countdown-ChuA9az_.js} +2 -2
  6. package/client/assets/Countdown-ChuA9az_.js.br +0 -0
  7. package/client/assets/Countdown-ChuA9az_.js.gz +0 -0
  8. package/client/assets/{Countdown-DVRZbeRP.js.map → Countdown-ChuA9az_.js.map} +1 -1
  9. package/client/assets/{CustomTranslationModal-D_Cy0d_H.js → CustomTranslationModal-C3R_2T5s.js} +2 -2
  10. package/client/assets/CustomTranslationModal-C3R_2T5s.js.br +0 -0
  11. package/client/assets/CustomTranslationModal-C3R_2T5s.js.gz +0 -0
  12. package/client/assets/{CustomTranslationModal-D_Cy0d_H.js.map → CustomTranslationModal-C3R_2T5s.js.map} +1 -1
  13. package/client/assets/{DelayIndicator-B_JKLKYW.js → DelayIndicator-vT7n8ypf.js} +2 -2
  14. package/client/assets/DelayIndicator-vT7n8ypf.js.br +0 -0
  15. package/client/assets/DelayIndicator-vT7n8ypf.js.gz +0 -0
  16. package/client/assets/{DelayIndicator-B_JKLKYW.js.map → DelayIndicator-vT7n8ypf.js.map} +1 -1
  17. package/client/assets/{EditorFeatureWrapper-DzBxDvRn.js → EditorFeatureWrapper-DHfuO3EA.js} +2 -2
  18. package/client/assets/EditorFeatureWrapper-DHfuO3EA.js.br +0 -0
  19. package/client/assets/EditorFeatureWrapper-DHfuO3EA.js.gz +0 -0
  20. package/client/assets/{EditorFeatureWrapper-DzBxDvRn.js.map → EditorFeatureWrapper-DHfuO3EA.js.map} +1 -1
  21. package/client/assets/{EditorUtils-De0umjb-.js → EditorUtils-Da5ALK1P.js} +2 -2
  22. package/client/assets/EditorUtils-Da5ALK1P.js.br +0 -0
  23. package/client/assets/EditorUtils-Da5ALK1P.js.gz +0 -0
  24. package/client/assets/{EditorUtils-De0umjb-.js.map → EditorUtils-Da5ALK1P.js.map} +1 -1
  25. package/client/assets/{Empty-BYF0tVRk.js → Empty-gWT_HMeu.js} +2 -2
  26. package/client/assets/Empty-gWT_HMeu.js.br +0 -0
  27. package/client/assets/Empty-gWT_HMeu.js.gz +0 -0
  28. package/client/assets/{Empty-BYF0tVRk.js.map → Empty-gWT_HMeu.js.map} +1 -1
  29. package/client/assets/{EmptyPage-DYH2bswA.js → EmptyPage-Dcbg6rmF.js} +2 -2
  30. package/client/assets/EmptyPage-Dcbg6rmF.js.br +0 -0
  31. package/client/assets/EmptyPage-Dcbg6rmF.js.gz +0 -0
  32. package/client/assets/{EmptyPage-DYH2bswA.js.map → EmptyPage-Dcbg6rmF.js.map} +1 -1
  33. package/client/assets/{FollowButton-DyWsvyFF.js → FollowButton-CSqJSvix.js} +2 -2
  34. package/client/assets/FollowButton-CSqJSvix.js.br +0 -0
  35. package/client/assets/FollowButton-CSqJSvix.js.gz +0 -0
  36. package/client/assets/{FollowButton-DyWsvyFF.js.map → FollowButton-CSqJSvix.js.map} +1 -1
  37. package/client/assets/{MessageControlExport-yLGU2dMq.js → MessageControlExport-lXK21piH.js} +2 -2
  38. package/client/assets/MessageControlExport-lXK21piH.js.br +0 -0
  39. package/client/assets/MessageControlExport-lXK21piH.js.gz +0 -0
  40. package/client/assets/{MessageControlExport-yLGU2dMq.js.map → MessageControlExport-lXK21piH.js.map} +1 -1
  41. package/client/assets/{MilestoneEditor-GkzJ-h1C.js → MilestoneEditor-Bge8xLrV.js} +2 -2
  42. package/client/assets/MilestoneEditor-Bge8xLrV.js.br +0 -0
  43. package/client/assets/MilestoneEditor-Bge8xLrV.js.gz +0 -0
  44. package/client/assets/{MilestoneEditor-GkzJ-h1C.js.map → MilestoneEditor-Bge8xLrV.js.map} +1 -1
  45. package/client/assets/{Modal-BKL-5GzU.js → Modal-C2sFA0zf.js} +2 -2
  46. package/client/assets/Modal-C2sFA0zf.js.br +0 -0
  47. package/client/assets/Modal-C2sFA0zf.js.gz +0 -0
  48. package/client/assets/{Modal-BKL-5GzU.js.map → Modal-C2sFA0zf.js.map} +1 -1
  49. package/client/assets/{MultiPartProgressBar-BITERKS0.js → MultiPartProgressBar-D3jJZjb5.js} +2 -2
  50. package/client/assets/MultiPartProgressBar-D3jJZjb5.js.br +0 -0
  51. package/client/assets/MultiPartProgressBar-D3jJZjb5.js.gz +0 -0
  52. package/client/assets/{MultiPartProgressBar-BITERKS0.js.map → MultiPartProgressBar-D3jJZjb5.js.map} +1 -1
  53. package/client/assets/{OperatorExport-DMZ6eQfT.js → OperatorExport-BUhxjLUx.js} +2 -2
  54. package/client/assets/OperatorExport-BUhxjLUx.js.br +0 -0
  55. package/client/assets/OperatorExport-BUhxjLUx.js.gz +0 -0
  56. package/client/assets/{OperatorExport-DMZ6eQfT.js.map → OperatorExport-BUhxjLUx.js.map} +1 -1
  57. package/client/assets/{OverviewWrapper-riM6vPno.js → OverviewWrapper-BveJ6GjK.js} +2 -2
  58. package/client/assets/OverviewWrapper-BveJ6GjK.js.br +0 -0
  59. package/client/assets/OverviewWrapper-BveJ6GjK.js.gz +0 -0
  60. package/client/assets/{OverviewWrapper-riM6vPno.js.map → OverviewWrapper-BveJ6GjK.js.map} +1 -1
  61. package/client/assets/{ProjectInfo-DxtMq70a.js → ProjectInfo-z4k3cipS.js} +2 -2
  62. package/client/assets/ProjectInfo-z4k3cipS.js.br +0 -0
  63. package/client/assets/ProjectInfo-z4k3cipS.js.gz +0 -0
  64. package/client/assets/{ProjectInfo-DxtMq70a.js.map → ProjectInfo-z4k3cipS.js.map} +1 -1
  65. package/client/assets/{ProtectRoute-p1fmtLeu.js → ProtectRoute-CrcWfOlG.js} +2 -2
  66. package/client/assets/ProtectRoute-CrcWfOlG.js.br +0 -0
  67. package/client/assets/ProtectRoute-CrcWfOlG.js.gz +0 -0
  68. package/client/assets/{ProtectRoute-p1fmtLeu.js.map → ProtectRoute-CrcWfOlG.js.map} +1 -1
  69. package/client/assets/{ProtectedCuesheet-CvRnqT0z.js → ProtectedCuesheet-Deo4Aw6f.js} +2 -2
  70. package/client/assets/ProtectedCuesheet-Deo4Aw6f.js.br +0 -0
  71. package/client/assets/ProtectedCuesheet-Deo4Aw6f.js.gz +0 -0
  72. package/client/assets/{ProtectedCuesheet-CvRnqT0z.js.map → ProtectedCuesheet-Deo4Aw6f.js.map} +1 -1
  73. package/client/assets/{ProtectedEditor-D4UXj1xL.js → ProtectedEditor-C_SYWpL2.js} +3 -3
  74. package/client/assets/ProtectedEditor-C_SYWpL2.js.br +0 -0
  75. package/client/assets/ProtectedEditor-C_SYWpL2.js.gz +0 -0
  76. package/client/assets/{ProtectedEditor-D4UXj1xL.js.map → ProtectedEditor-C_SYWpL2.js.map} +1 -1
  77. package/client/assets/{RundownEntry-B1dSz1wu.js → RundownEntry-D61IqkXb.js} +2 -2
  78. package/client/assets/RundownEntry-D61IqkXb.js.br +0 -0
  79. package/client/assets/RundownEntry-D61IqkXb.js.gz +0 -0
  80. package/client/assets/{RundownEntry-B1dSz1wu.js.map → RundownEntry-D61IqkXb.js.map} +1 -1
  81. package/client/assets/RundownExport-1zBZurIG.css +1 -0
  82. package/client/assets/RundownExport-1zBZurIG.css.br +0 -0
  83. package/client/assets/RundownExport-1zBZurIG.css.gz +0 -0
  84. package/client/assets/{RundownExport-WjLpncYT.js → RundownExport-C6YhMGOC.js} +3 -3
  85. package/client/assets/RundownExport-C6YhMGOC.js.br +0 -0
  86. package/client/assets/RundownExport-C6YhMGOC.js.gz +0 -0
  87. package/client/assets/{RundownExport-WjLpncYT.js.map → RundownExport-C6YhMGOC.js.map} +1 -1
  88. package/client/assets/{Select-niU9Razm.js → Select-CedN80WS.js} +2 -2
  89. package/client/assets/Select-CedN80WS.js.br +0 -0
  90. package/client/assets/Select-CedN80WS.js.gz +0 -0
  91. package/client/assets/{Select-niU9Razm.js.map → Select-CedN80WS.js.map} +1 -1
  92. package/client/assets/{Studio-CWdJq4bx.js → Studio-DUzPBS6P.js} +2 -2
  93. package/client/assets/Studio-DUzPBS6P.js.br +0 -0
  94. package/client/assets/Studio-DUzPBS6P.js.gz +0 -0
  95. package/client/assets/{Studio-CWdJq4bx.js.map → Studio-DUzPBS6P.js.map} +1 -1
  96. package/client/assets/{StyleEditor-BIFjHsgD.js → StyleEditor-D2z65PB7.js} +2 -2
  97. package/client/assets/StyleEditor-D2z65PB7.js.br +0 -0
  98. package/client/assets/StyleEditor-D2z65PB7.js.gz +0 -0
  99. package/client/assets/{StyleEditor-BIFjHsgD.js.map → StyleEditor-D2z65PB7.js.map} +1 -1
  100. package/client/assets/{SuperscriptTime-DCTyUARx.js → SuperscriptTime-CIrcMcyg.js} +2 -2
  101. package/client/assets/SuperscriptTime-CIrcMcyg.js.br +0 -0
  102. package/client/assets/SuperscriptTime-CIrcMcyg.js.gz +0 -0
  103. package/client/assets/{SuperscriptTime-DCTyUARx.js.map → SuperscriptTime-CIrcMcyg.js.map} +1 -1
  104. package/client/assets/{TimeElements-DBVGVx71.js → TimeElements-CALNfv6u.js} +2 -2
  105. package/client/assets/TimeElements-CALNfv6u.js.br +0 -0
  106. package/client/assets/TimeElements-CALNfv6u.js.gz +0 -0
  107. package/client/assets/{TimeElements-DBVGVx71.js.map → TimeElements-CALNfv6u.js.map} +1 -1
  108. package/client/assets/{TimeInput-wQ67FbW6.js → TimeInput-Dg1naiy3.js} +2 -2
  109. package/client/assets/TimeInput-Dg1naiy3.js.br +0 -0
  110. package/client/assets/TimeInput-Dg1naiy3.js.gz +0 -0
  111. package/client/assets/{TimeInput-wQ67FbW6.js.map → TimeInput-Dg1naiy3.js.map} +1 -1
  112. package/client/assets/{TimelinePage-DZefE2vQ.js → TimelinePage-Cwm0svjN.js} +2 -2
  113. package/client/assets/TimelinePage-Cwm0svjN.js.br +0 -0
  114. package/client/assets/TimelinePage-Cwm0svjN.js.gz +0 -0
  115. package/client/assets/{TimelinePage-DZefE2vQ.js.map → TimelinePage-Cwm0svjN.js.map} +1 -1
  116. package/client/assets/Timer-BVXskRjc.js +2 -0
  117. package/client/assets/Timer-BVXskRjc.js.br +0 -0
  118. package/client/assets/Timer-BVXskRjc.js.gz +0 -0
  119. package/client/assets/Timer-BVXskRjc.js.map +1 -0
  120. package/client/assets/Timer-BvEmZbmF.css +1 -0
  121. package/client/assets/Timer-BvEmZbmF.css.br +0 -0
  122. package/client/assets/Timer-BvEmZbmF.css.gz +0 -0
  123. package/client/assets/{TimerControlExport-C1C_vBX4.js → TimerControlExport-C8ECtLBd.js} +2 -2
  124. package/client/assets/TimerControlExport-C8ECtLBd.js.br +0 -0
  125. package/client/assets/TimerControlExport-C8ECtLBd.js.gz +0 -0
  126. package/client/assets/{TimerControlExport-C1C_vBX4.js.map → TimerControlExport-C8ECtLBd.js.map} +1 -1
  127. package/client/assets/{TitleCard-B4N-kCM3.js → TitleCard-CZl9wSHS.js} +2 -2
  128. package/client/assets/TitleCard-CZl9wSHS.js.br +0 -0
  129. package/client/assets/TitleCard-CZl9wSHS.js.gz +0 -0
  130. package/client/assets/{TitleCard-B4N-kCM3.js.map → TitleCard-CZl9wSHS.js.map} +1 -1
  131. package/client/assets/{Tooltip-DJ8Y4CO4.js → Tooltip-D9XRnwOW.js} +2 -2
  132. package/client/assets/Tooltip-D9XRnwOW.js.br +4 -0
  133. package/client/assets/Tooltip-D9XRnwOW.js.gz +0 -0
  134. package/client/assets/{Tooltip-DJ8Y4CO4.js.map → Tooltip-D9XRnwOW.js.map} +1 -1
  135. package/client/assets/{ViewLogo-Dd60EREE.js → ViewLogo-_3Z1hIHi.js} +2 -2
  136. package/client/assets/ViewLogo-_3Z1hIHi.js.br +0 -0
  137. package/client/assets/ViewLogo-_3Z1hIHi.js.gz +0 -0
  138. package/client/assets/{ViewLogo-Dd60EREE.js.map → ViewLogo-_3Z1hIHi.js.map} +1 -1
  139. package/client/assets/{ViewParamsEditor-BWEYbq_S.js → ViewParamsEditor-Bca1TIDW.js} +2 -2
  140. package/client/assets/ViewParamsEditor-Bca1TIDW.js.br +0 -0
  141. package/client/assets/ViewParamsEditor-Bca1TIDW.js.gz +0 -0
  142. package/client/assets/{ViewParamsEditor-BWEYbq_S.js.map → ViewParamsEditor-Bca1TIDW.js.map} +1 -1
  143. package/client/assets/{dateConfig-8rhb0Dbh.js → dateConfig-DRQGMWDF.js} +2 -2
  144. package/client/assets/dateConfig-DRQGMWDF.js.br +0 -0
  145. package/client/assets/dateConfig-DRQGMWDF.js.gz +0 -0
  146. package/client/assets/{dateConfig-8rhb0Dbh.js.map → dateConfig-DRQGMWDF.js.map} +1 -1
  147. package/client/assets/{editorSettings-LMnfWux6.js → editorSettings-BU0pTMSY.js} +2 -2
  148. package/client/assets/editorSettings-BU0pTMSY.js.br +0 -0
  149. package/client/assets/editorSettings-BU0pTMSY.js.gz +0 -0
  150. package/client/assets/{editorSettings-LMnfWux6.js.map → editorSettings-BU0pTMSY.js.map} +1 -1
  151. package/client/assets/{getProgress-CyJTu6f5.js → getProgress-Cw79NL_O.js} +2 -2
  152. package/client/assets/getProgress-Cw79NL_O.js.br +0 -0
  153. package/client/assets/getProgress-Cw79NL_O.js.gz +0 -0
  154. package/client/assets/{getProgress-CyJTu6f5.js.map → getProgress-Cw79NL_O.js.map} +1 -1
  155. package/client/assets/{index-5QAOtSTh.js → index-BQEUaoAf.js} +3 -3
  156. package/client/assets/index-BQEUaoAf.js.br +0 -0
  157. package/client/assets/index-BQEUaoAf.js.gz +0 -0
  158. package/client/assets/{index-5QAOtSTh.js.map → index-BQEUaoAf.js.map} +1 -1
  159. package/client/assets/{offset-CLDSqOP5.js → offset-DJAHqjFW.js} +2 -2
  160. package/client/assets/offset-DJAHqjFW.js.br +0 -0
  161. package/client/assets/offset-DJAHqjFW.js.gz +0 -0
  162. package/client/assets/{offset-CLDSqOP5.js.map → offset-DJAHqjFW.js.map} +1 -1
  163. package/client/assets/{parseUserTime-CCDHpp7D.js → parseUserTime-BeTKj08M.js} +2 -2
  164. package/client/assets/parseUserTime-BeTKj08M.js.br +0 -0
  165. package/client/assets/parseUserTime-BeTKj08M.js.gz +0 -0
  166. package/client/assets/{parseUserTime-CCDHpp7D.js.map → parseUserTime-BeTKj08M.js.map} +1 -1
  167. package/client/assets/{playbackstate-6lBh6omZ.js → playbackstate-B_khF6xU.js} +2 -2
  168. package/client/assets/playbackstate-B_khF6xU.js.br +0 -0
  169. package/client/assets/playbackstate-B_khF6xU.js.gz +0 -0
  170. package/client/assets/{playbackstate-6lBh6omZ.js.map → playbackstate-B_khF6xU.js.map} +1 -1
  171. package/client/assets/{presentation.utils-BUIuV_2e.js → presentation.utils-KwY-ACf7.js} +2 -2
  172. package/client/assets/presentation.utils-KwY-ACf7.js.br +0 -0
  173. package/client/assets/presentation.utils-KwY-ACf7.js.gz +0 -0
  174. package/client/assets/{presentation.utils-BUIuV_2e.js.map → presentation.utils-KwY-ACf7.js.map} +1 -1
  175. package/client/assets/{rundownUtils-Cnd2prRX.js → rundownUtils-BZHazkXR.js} +2 -2
  176. package/client/assets/rundownUtils-BZHazkXR.js.br +0 -0
  177. package/client/assets/rundownUtils-BZHazkXR.js.gz +0 -0
  178. package/client/assets/{rundownUtils-Cnd2prRX.js.map → rundownUtils-BZHazkXR.js.map} +1 -1
  179. package/client/assets/{useCustomFields-BuxKsqGS.js → useCustomFields-DqCYz8Kt.js} +2 -2
  180. package/client/assets/useCustomFields-DqCYz8Kt.js.br +0 -0
  181. package/client/assets/useCustomFields-DqCYz8Kt.js.gz +0 -0
  182. package/client/assets/{useCustomFields-BuxKsqGS.js.map → useCustomFields-DqCYz8Kt.js.map} +1 -1
  183. package/client/assets/{useFollowComponent-iGQv4zoS.js → useFollowComponent-Ctfhf2or.js} +2 -2
  184. package/client/assets/useFollowComponent-Ctfhf2or.js.br +0 -0
  185. package/client/assets/useFollowComponent-Ctfhf2or.js.gz +0 -0
  186. package/client/assets/{useFollowComponent-iGQv4zoS.js.map → useFollowComponent-Ctfhf2or.js.map} +1 -1
  187. package/client/assets/{useProjectData-CetvEK9E.js → useProjectData-C1hVamxc.js} +2 -2
  188. package/client/assets/useProjectData-C1hVamxc.js.br +0 -0
  189. package/client/assets/useProjectData-C1hVamxc.js.gz +0 -0
  190. package/client/assets/{useProjectData-CetvEK9E.js.map → useProjectData-C1hVamxc.js.map} +1 -1
  191. package/client/assets/{useReport-PEFRsOhF.js → useReport-B4dMYcNL.js} +2 -2
  192. package/client/assets/useReport-B4dMYcNL.js.br +0 -0
  193. package/client/assets/useReport-B4dMYcNL.js.gz +0 -0
  194. package/client/assets/{useReport-PEFRsOhF.js.map → useReport-B4dMYcNL.js.map} +1 -1
  195. package/client/assets/useRundown-BfpjcCEJ.js +2 -0
  196. package/client/assets/useRundown-BfpjcCEJ.js.br +0 -0
  197. package/client/assets/useRundown-BfpjcCEJ.js.gz +0 -0
  198. package/client/assets/{useRundown-D8CYATNi.js.map → useRundown-BfpjcCEJ.js.map} +1 -1
  199. package/client/assets/{useWindowTitle-b5fN0StF.js → useWindowTitle-DqdFTWns.js} +2 -2
  200. package/client/assets/useWindowTitle-DqdFTWns.js.br +0 -0
  201. package/client/assets/useWindowTitle-DqdFTWns.js.gz +0 -0
  202. package/client/assets/{useWindowTitle-b5fN0StF.js.map → useWindowTitle-DqdFTWns.js.map} +1 -1
  203. package/client/assets/{validateEvent-Bvgk1E-Y.js → validateEvent-P9sf7C10.js} +2 -2
  204. package/client/assets/validateEvent-P9sf7C10.js.br +3 -0
  205. package/client/assets/validateEvent-P9sf7C10.js.gz +0 -0
  206. package/client/assets/{validateEvent-Bvgk1E-Y.js.map → validateEvent-P9sf7C10.js.map} +1 -1
  207. package/client/assets/{vendor-Cu5xgv5K.js → vendor-CCiSQ9k9.js} +2 -2
  208. package/client/assets/vendor-CCiSQ9k9.js.br +0 -0
  209. package/client/assets/vendor-CCiSQ9k9.js.gz +0 -0
  210. package/client/assets/{vendor-Cu5xgv5K.js.map → vendor-CCiSQ9k9.js.map} +1 -1
  211. package/client/assets/{viewLoader.utils-BPhACxyG.js → viewLoader.utils-CmM-4-pk.js} +2 -2
  212. package/client/assets/viewLoader.utils-CmM-4-pk.js.br +0 -0
  213. package/client/assets/viewLoader.utils-CmM-4-pk.js.gz +0 -0
  214. package/client/assets/{viewLoader.utils-BPhACxyG.js.map → viewLoader.utils-CmM-4-pk.js.map} +1 -1
  215. package/client/index.html +2 -2
  216. package/external/demo/app.js +2 -2
  217. package/package.json +1 -1
  218. package/server/index.cjs +66 -57
  219. package/client/assets/Backstage-ZSqb8OU6.js.br +0 -0
  220. package/client/assets/Backstage-ZSqb8OU6.js.gz +0 -0
  221. package/client/assets/Countdown-DVRZbeRP.js.br +0 -0
  222. package/client/assets/Countdown-DVRZbeRP.js.gz +0 -0
  223. package/client/assets/CustomTranslationModal-D_Cy0d_H.js.br +0 -0
  224. package/client/assets/CustomTranslationModal-D_Cy0d_H.js.gz +0 -0
  225. package/client/assets/DelayIndicator-B_JKLKYW.js.br +0 -0
  226. package/client/assets/DelayIndicator-B_JKLKYW.js.gz +0 -0
  227. package/client/assets/EditorFeatureWrapper-DzBxDvRn.js.br +0 -0
  228. package/client/assets/EditorFeatureWrapper-DzBxDvRn.js.gz +0 -0
  229. package/client/assets/EditorUtils-De0umjb-.js.br +0 -0
  230. package/client/assets/EditorUtils-De0umjb-.js.gz +0 -0
  231. package/client/assets/Empty-BYF0tVRk.js.br +0 -2
  232. package/client/assets/Empty-BYF0tVRk.js.gz +0 -0
  233. package/client/assets/EmptyPage-DYH2bswA.js.br +0 -0
  234. package/client/assets/EmptyPage-DYH2bswA.js.gz +0 -0
  235. package/client/assets/FollowButton-DyWsvyFF.js.br +0 -0
  236. package/client/assets/FollowButton-DyWsvyFF.js.gz +0 -0
  237. package/client/assets/MessageControlExport-yLGU2dMq.js.br +0 -0
  238. package/client/assets/MessageControlExport-yLGU2dMq.js.gz +0 -0
  239. package/client/assets/MilestoneEditor-GkzJ-h1C.js.br +0 -0
  240. package/client/assets/MilestoneEditor-GkzJ-h1C.js.gz +0 -0
  241. package/client/assets/Modal-BKL-5GzU.js.br +0 -0
  242. package/client/assets/Modal-BKL-5GzU.js.gz +0 -0
  243. package/client/assets/MultiPartProgressBar-BITERKS0.js.br +0 -0
  244. package/client/assets/MultiPartProgressBar-BITERKS0.js.gz +0 -0
  245. package/client/assets/OperatorExport-DMZ6eQfT.js.br +0 -0
  246. package/client/assets/OperatorExport-DMZ6eQfT.js.gz +0 -0
  247. package/client/assets/OverviewWrapper-riM6vPno.js.br +0 -0
  248. package/client/assets/OverviewWrapper-riM6vPno.js.gz +0 -0
  249. package/client/assets/ProjectInfo-DxtMq70a.js.br +0 -0
  250. package/client/assets/ProjectInfo-DxtMq70a.js.gz +0 -0
  251. package/client/assets/ProtectRoute-p1fmtLeu.js.br +0 -0
  252. package/client/assets/ProtectRoute-p1fmtLeu.js.gz +0 -0
  253. package/client/assets/ProtectedCuesheet-CvRnqT0z.js.br +0 -0
  254. package/client/assets/ProtectedCuesheet-CvRnqT0z.js.gz +0 -0
  255. package/client/assets/ProtectedEditor-D4UXj1xL.js.br +0 -0
  256. package/client/assets/ProtectedEditor-D4UXj1xL.js.gz +0 -0
  257. package/client/assets/RundownEntry-B1dSz1wu.js.br +0 -0
  258. package/client/assets/RundownEntry-B1dSz1wu.js.gz +0 -0
  259. package/client/assets/RundownExport-CUtaG16H.css +0 -1
  260. package/client/assets/RundownExport-CUtaG16H.css.br +0 -0
  261. package/client/assets/RundownExport-CUtaG16H.css.gz +0 -0
  262. package/client/assets/RundownExport-WjLpncYT.js.br +0 -0
  263. package/client/assets/RundownExport-WjLpncYT.js.gz +0 -0
  264. package/client/assets/Select-niU9Razm.js.br +0 -0
  265. package/client/assets/Select-niU9Razm.js.gz +0 -0
  266. package/client/assets/Studio-CWdJq4bx.js.br +0 -0
  267. package/client/assets/Studio-CWdJq4bx.js.gz +0 -0
  268. package/client/assets/StyleEditor-BIFjHsgD.js.br +0 -0
  269. package/client/assets/StyleEditor-BIFjHsgD.js.gz +0 -0
  270. package/client/assets/SuperscriptTime-DCTyUARx.js.br +0 -0
  271. package/client/assets/SuperscriptTime-DCTyUARx.js.gz +0 -0
  272. package/client/assets/TimeElements-DBVGVx71.js.br +0 -0
  273. package/client/assets/TimeElements-DBVGVx71.js.gz +0 -0
  274. package/client/assets/TimeInput-wQ67FbW6.js.br +0 -0
  275. package/client/assets/TimeInput-wQ67FbW6.js.gz +0 -0
  276. package/client/assets/TimelinePage-DZefE2vQ.js.br +0 -0
  277. package/client/assets/TimelinePage-DZefE2vQ.js.gz +0 -0
  278. package/client/assets/Timer-Bs450x86.js +0 -2
  279. package/client/assets/Timer-Bs450x86.js.br +0 -0
  280. package/client/assets/Timer-Bs450x86.js.gz +0 -0
  281. package/client/assets/Timer-Bs450x86.js.map +0 -1
  282. package/client/assets/Timer-DGNfbBKM.css +0 -1
  283. package/client/assets/Timer-DGNfbBKM.css.br +0 -0
  284. package/client/assets/Timer-DGNfbBKM.css.gz +0 -0
  285. package/client/assets/TimerControlExport-C1C_vBX4.js.br +0 -0
  286. package/client/assets/TimerControlExport-C1C_vBX4.js.gz +0 -0
  287. package/client/assets/TitleCard-B4N-kCM3.js.br +0 -0
  288. package/client/assets/TitleCard-B4N-kCM3.js.gz +0 -0
  289. package/client/assets/Tooltip-DJ8Y4CO4.js.br +0 -0
  290. package/client/assets/Tooltip-DJ8Y4CO4.js.gz +0 -0
  291. package/client/assets/ViewLogo-Dd60EREE.js.br +0 -0
  292. package/client/assets/ViewLogo-Dd60EREE.js.gz +0 -0
  293. package/client/assets/ViewParamsEditor-BWEYbq_S.js.br +0 -0
  294. package/client/assets/ViewParamsEditor-BWEYbq_S.js.gz +0 -0
  295. package/client/assets/dateConfig-8rhb0Dbh.js.br +0 -0
  296. package/client/assets/dateConfig-8rhb0Dbh.js.gz +0 -0
  297. package/client/assets/editorSettings-LMnfWux6.js.br +0 -0
  298. package/client/assets/editorSettings-LMnfWux6.js.gz +0 -0
  299. package/client/assets/getProgress-CyJTu6f5.js.br +0 -0
  300. package/client/assets/getProgress-CyJTu6f5.js.gz +0 -0
  301. package/client/assets/index-5QAOtSTh.js.br +0 -0
  302. package/client/assets/index-5QAOtSTh.js.gz +0 -0
  303. package/client/assets/offset-CLDSqOP5.js.br +0 -0
  304. package/client/assets/offset-CLDSqOP5.js.gz +0 -0
  305. package/client/assets/parseUserTime-CCDHpp7D.js.br +0 -0
  306. package/client/assets/parseUserTime-CCDHpp7D.js.gz +0 -0
  307. package/client/assets/playbackstate-6lBh6omZ.js.br +0 -0
  308. package/client/assets/playbackstate-6lBh6omZ.js.gz +0 -0
  309. package/client/assets/presentation.utils-BUIuV_2e.js.br +0 -0
  310. package/client/assets/presentation.utils-BUIuV_2e.js.gz +0 -0
  311. package/client/assets/rundownUtils-Cnd2prRX.js.br +0 -0
  312. package/client/assets/rundownUtils-Cnd2prRX.js.gz +0 -0
  313. package/client/assets/useCustomFields-BuxKsqGS.js.br +0 -0
  314. package/client/assets/useCustomFields-BuxKsqGS.js.gz +0 -0
  315. package/client/assets/useFollowComponent-iGQv4zoS.js.br +0 -0
  316. package/client/assets/useFollowComponent-iGQv4zoS.js.gz +0 -0
  317. package/client/assets/useProjectData-CetvEK9E.js.br +0 -0
  318. package/client/assets/useProjectData-CetvEK9E.js.gz +0 -0
  319. package/client/assets/useReport-PEFRsOhF.js.br +0 -0
  320. package/client/assets/useReport-PEFRsOhF.js.gz +0 -0
  321. package/client/assets/useRundown-D8CYATNi.js +0 -2
  322. package/client/assets/useRundown-D8CYATNi.js.br +0 -0
  323. package/client/assets/useRundown-D8CYATNi.js.gz +0 -0
  324. package/client/assets/useWindowTitle-b5fN0StF.js.br +0 -0
  325. package/client/assets/useWindowTitle-b5fN0StF.js.gz +0 -0
  326. package/client/assets/validateEvent-Bvgk1E-Y.js.br +0 -0
  327. package/client/assets/validateEvent-Bvgk1E-Y.js.gz +0 -0
  328. package/client/assets/vendor-Cu5xgv5K.js.br +0 -0
  329. package/client/assets/vendor-Cu5xgv5K.js.gz +0 -0
  330. package/client/assets/viewLoader.utils-BPhACxyG.js.br +0 -0
  331. package/client/assets/viewLoader.utils-BPhACxyG.js.gz +0 -0
@@ -1,2 +0,0 @@
1
- % �i���;Əл��߻LyT� �_\"W3h�z�K)*�����F�wn��0K�0������#x�H�~���eID��Ħ��B*݀0.�mJ�f�5w�XW�H��#H̦��������|����1���fX-�Yx�g7Ȍ�]I�Gv&ӆ��B�|�B���Hp��Y�Q w��А���UV�i/��Rٟ�
2
- "����b�H}��v`��/��C��K'�)f�K�зi�&�]�� �l/%�/ơ�4;8�!��4K:5hT�����^�#m�C�0�t��[vf�������dd�#�ʘ��;+���� ��R��AeS(��:�.�3���e��!능���3'�Q;2�| v�ȟ* 5�������Tb}� T�T��N���JQU΁�%����DE9�o�P��/�w��^�ÏSC�걮`�x�
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- ._blink_44w0f_1{animation:_blink_44w0f_1 1s step-start infinite}@keyframes _blink_44w0f_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_44w0f_13{transform:rotate(45deg)}._footer_44w0f_17{border-top:1px solid rgba(255,255,255,.1);padding-top:1rem;display:flex;flex-wrap:wrap;gap:.5rem}._blink_103di_1{animation:_blink_103di_1 1s step-start infinite}@keyframes _blink_103di_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_103di_13{transform:rotate(45deg)}._entryEditor_103di_17{color:#b1b1b1;height:100%;max-height:100%;overflow-y:auto;padding:.5rem;display:flex;flex-direction:column;overflow-x:auto}._shortcutSection_103di_28{flex:1;display:grid;place-content:center;gap:1rem}._shortcuts_103di_35{font-size:calc(1rem - 3px);border-collapse:separate;border-spacing:4rem 0}._shortcuts_103di_35 tr td:nth-child(odd){text-align:left}._shortcuts_103di_35 tr td:nth-child(2n){text-align:right;white-space:nowrap}._spacer_103di_48{height:1rem}._prompt_103di_52{margin-left:4rem}._divider_103di_56{display:inline-block;text-align:center;width:1em}._kbd_103di_62{font-family:monospace;white-space:nowrap;font-size:calc(1rem - 2px);padding:.125rem .5rem;background-color:#262626;color:#f6f6f6;border-radius:2px;font-weight:400;box-shadow:0 0 3px #0006}._blink_15pki_1{animation:_blink_15pki_1 1s step-start infinite}@keyframes _blink_15pki_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_15pki_13{transform:rotate(45deg)}._entry_15pki_17,._empty_15pki_18,._error_15pki_19{padding-inline:.5rem;font-size:1rem;height:3rem;display:flex;align-items:center;justify-content:space-between}._entry_15pki_17[data-selected=true]{background-color:#2b5abc}._empty_15pki_18{color:#b1b1b1}._error_15pki_19{color:#fa5656}._data_15pki_40{display:grid;grid-template-areas:"index cue" "index title";column-gap:1rem;grid-template-rows:min-content 1fr}._data_15pki_40 ._index_15pki_46{grid-area:index;background-color:var(--color, #404040);border-radius:2px;padding-block:.25rem;width:3.5rem;align-self:center;text-align:center}._data_15pki_40 ._title_15pki_55{grid-area:title}._data_15pki_40 ._cue_15pki_58{grid-area:cue;font-size:calc(1rem - 2px);color:#b1b1b1;max-height:1em;min-height:0}._footer_15pki_66{font-size:calc(1rem - 2px);color:#b1b1b1}._em_15pki_18{color:#f6f6f6;margin-inline:.25rem}._scrollContainer_15pki_76{max-height:70vh;overflow:auto;padding-top:1rem}._blink_156wk_1{animation:_blink_156wk_1 1s step-start infinite}@keyframes _blink_156wk_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_156wk_13{transform:rotate(45deg)}._header_156wk_17{padding-inline:1rem 2rem;display:flex;align-items:center}:is([data-target=small-device]) ._header_156wk_17{padding-inline:0;overflow-x:auto}._group_156wk_28{display:flex;align-items:center;gap:2px;padding-inline:2px;background:#2d2d2d;border-radius:3px;height:2rem}._radioButton_156wk_39{box-sizing:border-box;display:flex;align-items:center;justify-content:center;height:calc(2rem - 4px);padding-inline:1em;border:1px solid transparent;border-radius:3px;color:#b1b1b1;font-size:calc(1rem - 2px);font-weight:600}._radioButton_156wk_39:focus-visible{background:transparent;outline:1px solid #578AF4}._radioButton_156wk_39:hover:not(:disabled):not(:active){background:#404040}._radioButton_156wk_39:active{background:#2d2d2d}._radioButton_156wk_39[data-pressed]{background:#2b5abc;color:#f6f6f6}._radioButton_156wk_39[data-pressed]:hover:not(:disabled):not(:active){background:#3e75e8}._apart_156wk_70{margin-left:auto}._separator_156wk_74{margin-inline:1rem}._blink_96pwt_1{animation:_blink_96pwt_1 1s step-start infinite}@keyframes _blink_96pwt_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_96pwt_13{transform:rotate(45deg)}._quickAdd_96pwt_17{display:flex;align-items:center;gap:1rem;padding-block:.5rem;background:color-mix(in srgb,transparent 90%,var(--user-bg, transparent) 10%)}._quickAdd_96pwt_17._indent_96pwt_24{padding-left:calc(2em + .5rem)}._blink_fgq5o_1{animation:_blink_fgq5o_1 1s step-start infinite}@keyframes _blink_fgq5o_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_fgq5o_13{transform:rotate(45deg)}._quickAdd_fgq5o_17{display:flex;align-items:center;gap:1rem;position:relative;height:1px;background:#578af4;z-index:100}._addButton_fgq5o_27{position:absolute;top:0;left:0;transform:translateY(-50%)}._blink_zrdm3_1{animation:_blink_zrdm3_1 1s step-start infinite}@keyframes _blink_zrdm3_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_zrdm3_13{transform:rotate(45deg)}._titleEditor_zrdm3_17{display:block;font-size:calc(1rem + 2px);max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._noTitle_zrdm3_26 ._preview_zrdm3_26{opacity:.4}._blink_6ndm2_1{animation:_blink_6ndm2_1 1s step-start infinite}@keyframes _blink_6ndm2_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_6ndm2_13{transform:rotate(45deg)}._group_6ndm2_17{box-sizing:content-box;border:1px solid rgba(255,255,255,.07);border-radius:3px;position:relative;color:#f6f6f6;overflow:hidden;min-width:32rem;margin-block:.5rem;display:grid;grid-template-columns:2rem 1fr;grid-template-areas:"binder header";align-items:center}._group_6ndm2_17._hasCursor_6ndm2_31{outline:1px solid #FFCC78}._group_6ndm2_17._expanded_6ndm2_34{margin-block:.5rem 0;border-radius:3px 3px 0 0;border-bottom:.25rem solid color-mix(in srgb,transparent 90%,var(--user-bg, transparent) 10%)}._group_6ndm2_17 ._binder_6ndm2_39{grid-area:binder;height:100%;background-color:var(--user-bg, #303030);color:#f6f6f6;font-size:1rem;display:grid;place-content:center;position:relative;cursor:pointer}._group_6ndm2_17 ._binder_6ndm2_39:focus{outline:1px solid #578AF4;outline-offset:-1px}._group_6ndm2_17 ._header_6ndm2_54{grid-area:header;padding-inline:.5rem;background-color:#303030;display:flex;flex-direction:column;gap:.5rem}._group_6ndm2_17 ._titleRow_6ndm2_62{display:flex;align-items:center;gap:.5rem}._group_6ndm2_17 ._metaRow_6ndm2_67{display:flex;gap:3rem;margin-bottom:.25rem;white-space:nowrap}._group_6ndm2_17 ._metaEntry_6ndm2_73{width:4.5em}._group_6ndm2_17 ._metaEntry_6ndm2_73 :first-child{font-size:calc(1rem - 3px);color:#b1b1b1}._strike_6ndm2_81{text-decoration:line-through}._over_6ndm2_85{color:#f57c13}._under_6ndm2_89{color:#55b469}._drag_6ndm2_93{font-size:20px;justify-self:center;opacity:.3;cursor:grab;transition:opacity .3s}._drag_6ndm2_93:hover{opacity:1}._drag_6ndm2_93:focus{box-shadow:none;outline:none}._drag_6ndm2_93{position:absolute;margin-top:.25rem}._drag_6ndm2_93._isDragging_6ndm2_111{cursor:grabbing}._drag_6ndm2_93._notAllowed_6ndm2_114{cursor:not-allowed}._blink_1mlc9_1{animation:_blink_1mlc9_1 1s step-start infinite}@keyframes _blink_1mlc9_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_1mlc9_13{transform:rotate(45deg)}._groupEnd_1mlc9_17{cursor:default;height:1rem;background-color:var(--user-bg, #303030);border-radius:0 0 3px 3px;margin-bottom:.5rem}._blink_pqnxu_1{animation:_blink_pqnxu_1 1s step-start infinite}@keyframes _blink_pqnxu_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_pqnxu_13{transform:rotate(45deg)}._empty_pqnxu_17{padding-block:1.5rem;text-align:center}._inline_pqnxu_22{display:flex;align-items:center;justify-content:center;gap:1rem}._blink_qmpnm_1{animation:_blink_qmpnm_1 1s step-start infinite}@keyframes _blink_qmpnm_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_qmpnm_13{transform:rotate(45deg)}._rundownWrapper_qmpnm_17{height:calc(100% - 1.5rem);width:100%}._rundownContainer_qmpnm_22{margin-top:1rem;overflow-y:scroll;height:100%}._list_qmpnm_28{overflow-x:clip;display:flex;flex-direction:column;padding-inline:1rem}:is([data-target=small-device]) ._list_qmpnm_28{padding-inline:0;overflow-x:auto}._empty_qmpnm_39{opacity:.3;align-self:center}._spacer_qmpnm_44{min-height:50vh}._entryWrapper_qmpnm_48{display:flex;gap:.5rem;align-items:center;background:color-mix(in srgb,transparent 90%,var(--user-bg, transparent) 10%)}._entryIndex_qmpnm_55{padding-block:.25rem;display:grid;grid-template-rows:1fr 1fr 1fr;justify-items:end;min-width:2em;color:#b1b1b1;font-size:calc(1rem - 3px);height:6.5rem}._flag_qmpnm_66{grid-row:1;color:#8bb33d;font-size:1rem}._index_qmpnm_72{grid-row:2;align-content:center}._entry_qmpnm_48{flex:1}._blink_h38r0_1{animation:_blink_h38r0_1 1s step-start infinite}@keyframes _blink_h38r0_1{0%{opacity:100%}50%{opacity:20%}}._fourtyfive_h38r0_13{transform:rotate(45deg)}:root{--editor--panel__br: 8px}._rundownExport_h38r0_21{height:100%;flex:1 1 auto}._rundownExport_h38r0_21._extracted_h38r0_25 ._list_h38r0_25,._rundownExport_h38r0_21._extracted_h38r0_25 ._side_h38r0_29{flex:1;max-width:none}._rundown_h38r0_21{display:flex;max-height:100%;height:100%}._list_h38r0_25{display:flex;position:relative;border-radius:var(--editor--panel__br);height:100%;background-color:#1a1a1a;padding:1rem;height:inherit;padding-inline:0;box-shadow:#00000026 3px 0 3px;flex:1 1 0;min-width:38rem;max-width:none;width:0}._side_h38r0_29{max-height:100%;margin:.5rem 0;padding:1rem;padding-right:0;background-color:#151515;border-radius:0 8px 8px 0;flex:1 1 0;min-width:36.5rem;width:0}
Binary file
Binary file
Binary file
Binary file
@@ -1,2 +0,0 @@
1
- import{h as p,j as r,l as be}from"./vendor-Cu5xgv5K.js";import{P as xe,T as m,a as w,b as C,u as Se,c as Te,d as Ce,L as ke,e as Me,f as Pe,g as Oe,h as Ne,i as h,O as ze}from"./index-5QAOtSTh.js";import{M as Fe}from"./MultiPartProgressBar-BITERKS0.js";import{E as je}from"./EmptyPage-DYH2bswA.js";import{T as W}from"./TitleCard-B4N-kCM3.js";import{V as Ve}from"./ViewLogo-Dd60EREE.js";import{m as I,O as y,a as A,i as u,g,b as _,c as De,V as Le}from"./ViewParamsEditor-BWEYbq_S.js";import{u as Ee}from"./useWindowTitle-b5fN0StF.js";import{S as He}from"./SuperscriptTime-DCTyUARx.js";import{g as Be}from"./presentation.utils-BUIuV_2e.js";import{g as We,h as Ie,s as Ae,a as Re}from"./viewLoader.utils-BPhACxyG.js";import{v as Ze}from"./validateEvent-Bvgk1E-Y.js";import{i as _e}from"./playbackstate-6lBh6omZ.js";import{u as $e}from"./useCustomFields-BuxKsqGS.js";import{u as Ue}from"./useProjectData-CetvEK9E.js";import"./getProgress-CyJTu6f5.js";import"./Empty-BYF0tVRk.js";import"./Select-niU9Razm.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},o=new e.Error().stack;o&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[o]="b9313b80-0af8-4ae6-9609-ab6eceb02d77",e._sentryDebugIdIdentifier="sentry-dbid-b9313b80-0af8-4ae6-9609-ab6eceb02d77")}catch{}})();const Ke=(e,o,t)=>{for(;e<o;){const i=Math.floor((e+o)/2);if(i===e)break;t(i)?e=i:o=i}return e};function R({children:e,mode:o="multi",min:t=16,max:i=256,...n}){const d=p.useRef(null),a=p.useCallback(()=>{const s=d.current;return s?s.scrollHeight>s.clientHeight||s.scrollWidth>s.clientWidth:!1},[]),l=p.useCallback(()=>{const s=d.current;if(!s)return;const c=s.style.visibility;s.style.visibility="hidden";const f=Ke(t,i+1,v=>(s.style.fontSize=`${v}px`,!a()));s.style.fontSize=`${f}px`,s.style.visibility=c},[a,t,i]);return p.useEffect(()=>{const s=d.current;if(!s)return;l();const c=new ResizeObserver(l);return c.observe(s),()=>c.disconnect()},[e,o,l]),r.jsx("div",{ref:d,style:{whiteSpace:o==="single"?"nowrap":"normal"},...n,children:e})}const Qe=[{value:"no-overrides",label:"No Overrides"},{value:m.CountUp,label:"Count Up"},{value:m.CountDown,label:"Count Down"},{value:m.Clock,label:"Clock"}],qe=(e,o)=>{const t=I(o,[{value:"none",label:"None"},{value:"title",label:"Title"},{value:"note",label:"Note"}]),i=I(o,[{value:"none",label:"None"},{value:"title",label:"Title"},{value:"note",label:"Note"}]);return[{title:y.ClockOptions,collapsible:!0,options:[We(e)]},{title:y.TimerOptions,collapsible:!0,options:[Ie,Ae,{id:"timerType",title:"Timer type",description:"Override the timer type",type:"option",values:Qe,defaultValue:"no-overrides"},{id:"freezeOvertime",title:"Freeze Overtime",description:"If active, the timer will not count into negative numbers",type:"boolean",defaultValue:!1},{id:"freezeMessage",title:"Freeze Message",description:"An optional message to show when the timer is in overtime (must be set in combination with Freeze Overtime)",type:"string",defaultValue:"",placeholder:"e.g. Time is up!"},{id:"hidePhase",title:"Hide progress styles",description:"Whether to suppress the progress styles (warning, danger and overtime)",type:"boolean",defaultValue:!1}]},{title:y.DataSources,collapsible:!0,options:[{id:"main",title:"Main text",description:"Select the data source for the main text",type:"option",values:t,defaultValue:"title"},{id:"secondary-src",title:"Secondary text",description:"Select the data source for the secondary text",type:"option",values:i,defaultValue:"none"}]},{title:y.ElementVisibility,collapsible:!0,options:[{id:"hideClock",title:"Hide Time Now",description:"Hides the Time Now field",type:"boolean",defaultValue:!1},{id:"hideCards",title:"Hide Cards",description:"Hides the Now and Next cards",type:"boolean",defaultValue:!1},{id:"hideProgress",title:"Hide progress bar",description:"Hides the progress bar",type:"boolean",defaultValue:!1},{id:"hideMessage",title:"Hide Timer Message",description:"Prevents displaying fullscreen messages in the timer",type:"boolean",defaultValue:!1},{id:"hideSecondary",title:"Hide Auxiliary timer / Secondary message",description:"Prevents the screen from displaying the secondary timer field",type:"boolean",defaultValue:!1},{id:"hideLogo",title:"Hide the project logo",description:"Prevents the screen from displaying the given project logo",type:"boolean",defaultValue:!1}]},{title:y.StyleOverride,collapsible:!0,options:[{id:"font",title:"Font",description:"Font family, will use the fonts available in the system",type:"string",placeholder:"Open Sans (default)"},{id:"keyColour",title:"Key Colour",description:"Background or key colour for entire view. Default: #101010",type:"colour",defaultValue:"101010"},{id:"timerColour",title:"Timer Colour",description:"Timer colour. Default: #f6f6f6",type:"colour",defaultValue:"f6f6f6"}]}]};function Ge(e,o){const t=n=>(o==null?void 0:o.get(n))??e.get(n),i=Ze(t("timerType"),m.None);return{hideClock:u(t("hideClock")),hideCards:u(t("hideCards")),hideProgress:u(t("hideProgress")),hideMessage:u(t("hideMessage")),hideSecondary:u(t("hideSecondary")),hideLogo:u(t("hideLogo")),hideTimerSeconds:u(t("hideTimerSeconds")),removeLeadingZeros:!u(t("showLeadingZeros")),mainSource:t("main"),secondarySource:t("secondary-src"),timerType:i===m.None?void 0:i,freezeOvertime:u(t("freezeOvertime")),freezeMessage:t("freezeMessage")??"",hidePhase:u(t("hidePhase")),font:t("font")??void 0,keyColour:A(t("keyColour")),timerColour:A(t("timerColour"))}}function Je(){const[e]=be(),o=p.use(xe);return p.useMemo(()=>{const i=o?new URLSearchParams(o.search):void 0;return Ge(e,i)},[o,e])}function Xe(e){return e.text!==""&&e.visible}function Ye(e){return e===C.Play||e===C.Roll}function et(e,o){return(e??0)+(o??0)}function tt(e){return e!==m.None&&e!==m.Clock}function ot(e){return e!==m.Clock}const Z={4:28,5:28,6:25,8:18,9:18};function it(e,o){const t=e.length;let i=100/(t-1)*1.25;Z[t]&&(i=Z[t]);let n=i*.325;return o&&(i*=.6,o.length>25&&(n=100/(o.length-1)*1.8)),{timerFontSize:i,externalFontSize:n}}function st(e,o,t,i,n,d){return d?{showEndMessage:!1,showFinished:!1,showWarning:!1,showDanger:!1}:e===m.CountDown||o?{showEndMessage:i&&n!=="",showFinished:t===w.Overtime,showWarning:t===w.Warning,showDanger:t===w.Danger}:{showEndMessage:!1,showFinished:!1,showWarning:!1,showDanger:!1}}function rt(e,o,t,i,n,d){if(!d){if(e.timer.secondarySource==="aux1"||e.timer.secondarySource==="aux2"||e.timer.secondarySource==="aux3")return _(o,m.CountDown,t,{removeSeconds:i,removeLeadingZero:n});if(e.timer.secondarySource==="secondary"&&e.secondary)return e.secondary}}function nt(e,o,t,i,n,d){if(n===C.Stop)return{showNow:!1,nowMain:void 0,nowSecondary:void 0,showNext:!1,nextMain:void 0,nextSecondary:void 0};const a=_e(n)&&d!==w.Pending,l=a?g(e,t??"title"):void 0,s=a?g(e,i):void 0,c=a?g(o,t??"title"):g(e,t??"title"),f=a?g(o,i):g(e,i);return{showNow:!!l||!!s,nowMain:l,nowSecondary:s,showNext:!!c||!!f,nextMain:c,nextSecondary:f}}function at(){const e=Se(c=>c.mirror),{data:o,status:t}=Ue(),{data:i,status:n}=Te(),{data:d,status:a}=Ce(),{data:l,status:s}=$e();return{data:{customFields:l,projectData:o,isMirrored:e,settings:d,viewSettings:i},status:Re([t,n,a,s])}}function Pt(){const{data:e,status:o}=at();return Ee("Timer"),o==="pending"?r.jsx(ke,{}):o==="error"?r.jsx(je,{text:"There was an error fetching data, please refresh the page."}):r.jsx(lt,{...e})}function lt({customFields:e,projectData:o,isMirrored:t,settings:i,viewSettings:n}){const{eventNext:d,eventNow:a,message:l,time:s,clock:c,timerTypeNow:f,countToEndNow:v,auxTimer:b}=Me(),{hideClock:$,hideCards:U,hideProgress:K,hideMessage:Q,hideSecondary:q,hideLogo:G,hideTimerSeconds:k,removeLeadingZeros:M,mainSource:J,secondarySource:X,timerType:P,freezeOvertime:O,freezeMessage:N,hidePhase:Y,font:z,keyColour:F,timerColour:ee}=Je(),{getLocalizedString:j}=Pe(),V=j("common.minutes"),x=P??f,D=Xe(l.timer),{showEndMessage:te,showFinished:S,showWarning:oe,showDanger:ie}=st(f,v,s.phase,O,N,Y),L=Ye(s.playback),se=!$&&ot(x),re=!K&&tt(x),{showNow:ne,nowMain:ae,nowSecondary:le,showNext:de,nextMain:ce,nextSecondary:ue}=nt(a,d,J,X,s.playback,s.phase),me=et(s.duration,s.addedTime),fe=Oe(c),he=De(O,f,v,c,s,P),E=_(he,x,V,{removeSeconds:k,removeLeadingZero:M}),pe=l.timer.secondarySource==="aux1"?b.aux1:l.timer.secondarySource==="aux2"?b.aux2:l.timer.secondarySource==="aux3"?b.aux3:null,T=rt(l,pe,V,k,M,q),H=Be(n,ee,oe,ie),{timerFontSize:ge,externalFontSize:ye}=it(E,T),ve={...F&&{"--timer-bg":F},...H&&{"--timer-colour":H},...z&&{"--timer-font":z}},B=Ne(i==null?void 0:i.timeFormat),we=p.useMemo(()=>qe(B,e),[e,B]);return r.jsxs("div",{"data-testid":"timer-view",className:h(["stage-timer",t&&"mirror",S&&"stage-timer--finished"]),style:ve,children:[!G&&(o==null?void 0:o.logo)&&r.jsx(Ve,{name:o.logo,className:"logo"}),r.jsx(Le,{target:ze.Timer,viewOptions:we}),r.jsx("div",{className:h(["blackout",l.timer.blackout&&"blackout--active"])}),!Q&&r.jsx("div",{className:h(["message-overlay",D&&"message-overlay--active"]),children:r.jsx(R,{mode:"multi",min:32,max:256,className:h(["message",l.timer.blink&&"blink"]),children:l.timer.text})}),se&&r.jsxs("div",{className:"clock-container",children:[r.jsx("div",{className:"label",children:j("common.time_now")}),r.jsx(He,{time:fe,className:"clock"})]}),r.jsxs("div",{className:h(["timer-container",l.timer.blink&&!D&&"blink"]),children:[te?r.jsx(R,{mode:"multi",min:64,max:256,className:"end-message",children:N}):r.jsx("div",{className:h(["timer",!L&&"timer--paused",S&&"timer--finished"]),style:{fontSize:`${ge}vw`},"data-phase":s.phase,children:E}),r.jsx("div",{className:h(["secondary",!T&&"secondary--hidden"]),style:{fontSize:`${ye}vw`},children:T})]}),re&&r.jsx(Fe,{className:h(["progress-container",!L&&"progress-container--paused"]),now:s.current,complete:me,normalColor:n.normalColor,warning:a==null?void 0:a.timeWarning,warningColor:n.warningColor,danger:a==null?void 0:a.timeDanger,dangerColor:n.dangerColor,hideOvertime:!S}),!U&&r.jsxs(r.Fragment,{children:[ne&&r.jsx(W,{className:"event now",label:"now",title:ae,secondary:le}),de&&r.jsx(W,{className:"event next",label:"next",title:ce,secondary:ue})]})]})}export{Pt as default};
2
- //# sourceMappingURL=Timer-Bs450x86.js.map
Binary file
Binary file
@@ -1 +0,0 @@
1
- {"version":3,"file":"Timer-Bs450x86.js","sources":["../../src/common/components/fit-text/fitText.utils.ts","../../src/common/components/fit-text/FitText.tsx","../../src/views/timer/timer.options.ts","../../src/views/timer/timer.utils.ts","../../src/views/timer/useTimerData.ts","../../src/views/timer/Timer.tsx"],"sourcesContent":["/**\n * @param low inclusive, must be true on predicate function\n * @param high exclusive,\n * @param predicate predicate function\n */\nexport const bsearch = (low: number, high: number, predicate: (mid: number) => boolean): number => {\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n if (mid === low) break;\n\n if (predicate(mid)) {\n low = mid;\n } else {\n high = mid;\n }\n }\n return low;\n};\n","/**\n * Copied from\n * https://github.com/namhong2001/react-textfit/blob/master/index.tsx\n */\n\nimport { HTMLAttributes, PropsWithChildren, useCallback, useEffect, useRef } from 'react';\n\nimport { bsearch } from './fitText.utils';\n\ninterface FitTextProps extends HTMLAttributes<HTMLDivElement> {\n mode?: 'single' | 'multi';\n min?: number; // inclusive\n max?: number; // inclusive\n}\n\nexport function FitText({\n children,\n mode = 'multi',\n min = 16,\n max = 256,\n ...elementProps\n}: PropsWithChildren<FitTextProps>) {\n const ref = useRef<HTMLDivElement>(null);\n\n const isOverflown = useCallback(() => {\n const el = ref.current;\n if (!el) return false;\n return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;\n }, []);\n\n const setFontSize = useCallback(() => {\n const el = ref.current;\n if (!el) return;\n\n const originVisibility = el.style.visibility;\n\n el.style.visibility = 'hidden';\n const fontSize = bsearch(min, max + 1, (mid) => {\n el.style.fontSize = `${mid}px`;\n return !isOverflown();\n });\n el.style.fontSize = `${fontSize}px`;\n el.style.visibility = originVisibility;\n }, [isOverflown, min, max]);\n\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n setFontSize();\n const observer = new ResizeObserver(setFontSize);\n observer.observe(el);\n\n return () => observer.disconnect();\n }, [children, mode, setFontSize]);\n\n return (\n <div\n ref={ref}\n style={{\n whiteSpace: mode === 'single' ? 'nowrap' : 'normal',\n }}\n {...elementProps}\n >\n {children}\n </div>\n );\n}\n","import { use, useMemo } from 'react';\nimport { useSearchParams } from 'react-router';\nimport { CustomFields, OntimeEvent, TimerType } from 'ontime-types';\nimport { validateTimerType } from 'ontime-utils';\n\nimport type { SelectOption } from '../../common/components/select/Select';\nimport {\n getTimeOption,\n hideTimerSeconds,\n showLeadingZeros,\n} 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, makeColourString } from '../../features/viewers/common/viewUtils';\n\n// manually match the properties of TimerType excluding the None\nconst timerDisplayOptions: SelectOption[] = [\n { value: 'no-overrides', label: 'No Overrides' },\n { value: TimerType.CountUp, label: 'Count Up' },\n { value: TimerType.CountDown, label: 'Count Down' },\n { value: TimerType.Clock, label: 'Clock' },\n];\n\nexport const getTimerOptions = (timeFormat: string, customFields: CustomFields): ViewOption[] => {\n const mainOptions = makeOptionsFromCustomFields(customFields, [\n { value: 'none', label: 'None' },\n { value: 'title', label: 'Title' },\n { value: 'note', label: 'Note' },\n ]);\n const secondaryOptions = makeOptionsFromCustomFields(customFields, [\n { value: 'none', label: 'None' },\n { value: 'title', label: 'Title' },\n { value: 'note', label: 'Note' },\n ]);\n\n return [\n { title: OptionTitle.ClockOptions, collapsible: true, options: [getTimeOption(timeFormat)] },\n {\n title: OptionTitle.TimerOptions,\n collapsible: true,\n options: [\n hideTimerSeconds,\n showLeadingZeros,\n {\n id: 'timerType',\n title: 'Timer type',\n description: 'Override the timer type',\n type: 'option',\n values: timerDisplayOptions,\n defaultValue: 'no-overrides',\n },\n {\n id: 'freezeOvertime',\n title: 'Freeze Overtime',\n description: 'If active, the timer will not count into negative numbers',\n type: 'boolean',\n defaultValue: false,\n },\n {\n id: 'freezeMessage',\n title: 'Freeze Message',\n description:\n 'An optional message to show when the timer is in overtime (must be set in combination with Freeze Overtime)',\n type: 'string',\n defaultValue: '',\n placeholder: 'e.g. Time is up!',\n },\n {\n id: 'hidePhase',\n title: 'Hide progress styles',\n description: 'Whether to suppress the progress styles (warning, danger and overtime)',\n type: 'boolean',\n defaultValue: false,\n },\n ],\n },\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 id: 'secondary-src',\n title: 'Secondary text',\n description: 'Select the data source for the secondary text',\n type: 'option',\n values: secondaryOptions,\n defaultValue: 'none',\n },\n ],\n },\n {\n title: OptionTitle.ElementVisibility,\n collapsible: true,\n options: [\n {\n id: 'hideClock',\n title: 'Hide Time Now',\n description: 'Hides the Time Now field',\n type: 'boolean',\n defaultValue: false,\n },\n {\n id: 'hideCards',\n title: 'Hide Cards',\n description: 'Hides the Now and Next cards',\n type: 'boolean',\n defaultValue: false,\n },\n {\n id: 'hideProgress',\n title: 'Hide progress bar',\n description: 'Hides the progress bar',\n type: 'boolean',\n defaultValue: false,\n },\n {\n id: 'hideMessage',\n title: 'Hide Timer Message',\n description: 'Prevents displaying fullscreen messages in the timer',\n type: 'boolean',\n defaultValue: false,\n },\n {\n id: 'hideSecondary',\n title: 'Hide Auxiliary timer / Secondary message',\n description: 'Prevents the screen from displaying the secondary timer field',\n type: 'boolean',\n defaultValue: false,\n },\n {\n id: 'hideLogo',\n title: 'Hide the project logo',\n description: 'Prevents the screen from displaying the given project logo',\n type: 'boolean',\n defaultValue: false,\n },\n ],\n },\n {\n title: OptionTitle.StyleOverride,\n collapsible: true,\n options: [\n {\n id: 'font',\n title: 'Font',\n description: 'Font family, will use the fonts available in the system',\n type: 'string',\n placeholder: 'Open Sans (default)',\n },\n {\n id: 'keyColour',\n title: 'Key Colour',\n description: 'Background or key colour for entire view. Default: #101010',\n type: 'colour',\n defaultValue: '101010',\n },\n {\n id: 'timerColour',\n title: 'Timer Colour',\n description: 'Timer colour. Default: #f6f6f6',\n type: 'colour',\n defaultValue: 'f6f6f6',\n },\n ],\n },\n ];\n};\n\ntype TimerOptions = {\n hideClock: boolean;\n hideCards: boolean;\n hideProgress: boolean;\n hideMessage: boolean;\n hideSecondary: boolean;\n hideLogo: boolean;\n hideTimerSeconds: boolean;\n removeLeadingZeros: boolean;\n mainSource: keyof OntimeEvent | null;\n secondarySource: keyof OntimeEvent | null;\n timerType?: TimerType;\n freezeOvertime: boolean;\n freezeMessage: string;\n hidePhase: boolean;\n font?: string;\n keyColour?: string;\n timerColour?: string;\n};\n\n/**\n * Utility extract the view options from URL Params\n * the names and fallbacks are manually matched with timerOptions\n */\nfunction getOptionsFromParams(searchParams: URLSearchParams, defaultValues?: URLSearchParams): TimerOptions {\n // Helper to get value from either source, prioritizing defaultValues\n const getValue = (key: string) => defaultValues?.get(key) ?? searchParams.get(key);\n\n // Get timerType from either source\n const timerType = validateTimerType(getValue('timerType'), TimerType.None);\n\n return {\n hideClock: isStringBoolean(getValue('hideClock')),\n hideCards: isStringBoolean(getValue('hideCards')),\n hideProgress: isStringBoolean(getValue('hideProgress')),\n hideMessage: isStringBoolean(getValue('hideMessage')),\n hideSecondary: isStringBoolean(getValue('hideSecondary')),\n hideLogo: isStringBoolean(getValue('hideLogo')),\n hideTimerSeconds: isStringBoolean(getValue('hideTimerSeconds')),\n removeLeadingZeros: !isStringBoolean(getValue('showLeadingZeros')),\n\n mainSource: getValue('main') as keyof OntimeEvent | null,\n secondarySource: getValue('secondary-src') as keyof OntimeEvent | null,\n\n // none doesnt make sense as a configuration of the view\n timerType: timerType === TimerType.None ? undefined : timerType,\n freezeOvertime: isStringBoolean(getValue('freezeOvertime')),\n freezeMessage: getValue('freezeMessage') ?? '',\n hidePhase: isStringBoolean(getValue('hidePhase')),\n\n font: getValue('font') ?? undefined,\n keyColour: makeColourString(getValue('keyColour')),\n timerColour: makeColourString(getValue('timerColour')),\n };\n}\n\n/**\n * Hook exposes the timer view options\n */\nexport function useTimerOptions(): TimerOptions {\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 { MaybeNumber, MessageState, OntimeEvent, Playback, TimerMessage, TimerPhase, TimerType } from 'ontime-types';\nimport { isPlaybackActive } from 'ontime-utils';\n\nimport { getFormattedTimer, getPropertyValue } from '../../features/viewers/common/viewUtils';\n\n/**\n * Whether a message should be shown\n */\nexport function getShowMessage(message: TimerMessage): boolean {\n return message.text !== '' && message.visible;\n}\n\n/**\n * Whether the playback is playing\n */\nexport function getIsPlaying(playback: Playback): boolean {\n return playback === Playback.Play || playback === Playback.Roll;\n}\n\n/**\n * Gets the total time from the duration and added time of an event\n */\nexport function getTotalTime(duration: MaybeNumber, addedTime: MaybeNumber): number {\n return (duration ?? 0) + (addedTime ?? 0);\n}\n\n/**\n * Whether the progress bar should be shown for this timer type\n */\nexport function getShowProgressBar(timerType: TimerType) {\n return timerType !== TimerType.None && timerType !== TimerType.Clock;\n}\n\n/**\n * Whether the clock should be shown with this timer type\n */\nexport function getShowClock(timerType: TimerType) {\n return timerType !== TimerType.Clock;\n}\n\nconst fontSizeMap: { [key: number]: number } = {\n 4: 28, // 9:01\n 5: 28, // -9:01, 10:01, 9 min\n 6: 25, // -10:01, 10 min\n 8: 18, // 23:01:01\n 9: 18, // -23:01:01\n};\n\n/**\n * Finds a font size that fits the timer in the screen\n * Unfortunately hand tweaked\n */\nexport function getEstimatedFontSize(stageTimer: string, secondaryContent?: string) {\n const stageTimerCharacters = stageTimer.length;\n let timerFontSize = (100 / (stageTimerCharacters - 1)) * 1.25;\n\n if (fontSizeMap[stageTimerCharacters]) {\n timerFontSize = fontSizeMap[stageTimerCharacters];\n }\n\n let externalFontSize = timerFontSize * 0.325;\n if (secondaryContent) {\n // we need to shrink the timer if the external is going to be there\n // this number has been tweaked to fit in a landscape mobile screen\n timerFontSize *= 0.6;\n if (secondaryContent.length > 25) {\n externalFontSize = (100 / (secondaryContent.length - 1)) * 1.8;\n }\n }\n\n return {\n timerFontSize,\n externalFontSize,\n };\n}\n\n/**\n * which, if any, modifier should be shown at any time\n */\nexport function getShowModifiers(\n timerType: TimerType,\n countToEnd: boolean,\n phase: TimerPhase,\n freezeOvertime: boolean,\n freezeMessage: string,\n hidePhase: boolean,\n) {\n if (hidePhase) {\n return {\n showEndMessage: false,\n showFinished: false,\n showWarning: false,\n showDanger: false,\n };\n }\n\n const showModifiers = timerType === TimerType.CountDown || countToEnd;\n if (!showModifiers) {\n return {\n showEndMessage: false,\n showFinished: false,\n showWarning: false,\n showDanger: false,\n };\n }\n\n return {\n showEndMessage: freezeOvertime && freezeMessage !== '',\n showFinished: phase === TimerPhase.Overtime,\n showWarning: phase === TimerPhase.Warning,\n showDanger: phase === TimerPhase.Danger,\n };\n}\n\n/**\n * What, if anything, should be displayed in the secondary field\n */\nexport function getSecondaryDisplay(\n message: MessageState,\n currentAux: MaybeNumber,\n localisedMinutes: string,\n removeSeconds: boolean,\n removeLeadingZero: boolean,\n hideSecondary: boolean,\n): string | undefined {\n if (hideSecondary) {\n return;\n }\n if (\n message.timer.secondarySource === 'aux1' ||\n message.timer.secondarySource === 'aux2' ||\n message.timer.secondarySource === 'aux3'\n ) {\n return getFormattedTimer(currentAux, TimerType.CountDown, localisedMinutes, {\n removeSeconds,\n removeLeadingZero,\n });\n }\n if (message.timer.secondarySource === 'secondary' && message.secondary) {\n return message.secondary;\n }\n return;\n}\n\n/**\n * What should we be showing in the cards?\n */\nexport function getCardData(\n eventNow: OntimeEvent | null,\n eventNext: OntimeEvent | null,\n mainSource: keyof OntimeEvent | null,\n secondarySource: keyof OntimeEvent | null,\n playback: Playback,\n phase: TimerPhase,\n) {\n if (playback === Playback.Stop) {\n return {\n showNow: false,\n nowMain: undefined,\n nowSecondary: undefined,\n showNext: false,\n nextMain: undefined,\n nextSecondary: undefined,\n };\n }\n\n // pending roll timers would be classified as active\n const hasActiveTimer = isPlaybackActive(playback) && phase !== TimerPhase.Pending;\n\n // if we are loaded, we show the upcoming event as next\n const nowMain = hasActiveTimer ? getPropertyValue(eventNow, mainSource ?? 'title') : undefined;\n const nowSecondary = hasActiveTimer ? getPropertyValue(eventNow, secondarySource) : undefined;\n const nextMain = hasActiveTimer\n ? getPropertyValue(eventNext, mainSource ?? 'title')\n : getPropertyValue(eventNow, mainSource ?? 'title');\n const nextSecondary = hasActiveTimer\n ? getPropertyValue(eventNext, secondarySource)\n : getPropertyValue(eventNow, secondarySource);\n\n return {\n showNow: Boolean(nowMain) || Boolean(nowSecondary),\n nowMain,\n nowSecondary,\n showNext: Boolean(nextMain) || Boolean(nextSecondary),\n nextMain,\n nextSecondary,\n };\n}\n","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 TimerData {\n customFields: CustomFields;\n projectData: ProjectData;\n isMirrored: boolean;\n settings: Settings;\n viewSettings: ViewSettings;\n}\n\nexport function useTimerData(): ViewData<TimerData> {\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 { FitText } from '../../common/components/fit-text/FitText';\nimport MultiPartProgressBar from '../../common/components/multi-part-progress-bar/MultiPartProgressBar';\nimport EmptyPage from '../../common/components/state/EmptyPage';\nimport TitleCard from '../../common/components/title-card/TitleCard';\nimport ViewLogo from '../../common/components/view-logo/ViewLogo';\nimport ViewParamsEditor from '../../common/components/view-params-editor/ViewParamsEditor';\nimport { useTimerSocket } from '../../common/hooks/useSocket';\nimport { useWindowTitle } from '../../common/hooks/useWindowTitle';\nimport { cx } from '../../common/utils/styleUtils';\nimport { formatTime, getDefaultFormat } from '../../common/utils/time';\nimport SuperscriptTime from '../../features/viewers/common/superscript-time/SuperscriptTime';\nimport { getFormattedTimer, getTimerByType } from '../../features/viewers/common/viewUtils';\nimport { useTranslation } from '../../translation/TranslationProvider';\nimport Loader from '../common/loader/Loader';\nimport { getTimerColour } from '../utils/presentation.utils';\n\nimport { getTimerOptions, useTimerOptions } from './timer.options';\nimport {\n getCardData,\n getEstimatedFontSize,\n getIsPlaying,\n getSecondaryDisplay,\n getShowClock,\n getShowMessage,\n getShowModifiers,\n getShowProgressBar,\n getTotalTime,\n} from './timer.utils';\nimport { TimerData, useTimerData } from './useTimerData';\n\nimport './Timer.scss';\n\nexport default function TimerLoader() {\n const { data, status } = useTimerData();\n\n useWindowTitle('Timer');\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 <Timer {...data} />;\n}\n\nfunction Timer({ customFields, projectData, isMirrored, settings, viewSettings }: TimerData) {\n const { eventNext, eventNow, message, time, clock, timerTypeNow, countToEndNow, auxTimer } = useTimerSocket();\n const {\n hideClock,\n hideCards,\n hideProgress,\n hideMessage,\n hideSecondary,\n hideLogo,\n hideTimerSeconds,\n removeLeadingZeros,\n mainSource,\n secondarySource,\n timerType,\n freezeOvertime,\n freezeMessage,\n hidePhase,\n font,\n keyColour,\n timerColour,\n } = useTimerOptions();\n\n const { getLocalizedString } = useTranslation();\n const localisedMinutes = getLocalizedString('common.minutes');\n\n // gather modifiers\n const viewTimerType = timerType ?? timerTypeNow;\n const showOverlay = getShowMessage(message.timer);\n const { showEndMessage, showFinished, showWarning, showDanger } = getShowModifiers(\n timerTypeNow,\n countToEndNow,\n time.phase,\n freezeOvertime,\n freezeMessage,\n hidePhase,\n );\n const isPlaying = getIsPlaying(time.playback);\n const showClock = !hideClock && getShowClock(viewTimerType);\n const showProgressBar = !hideProgress && getShowProgressBar(viewTimerType);\n\n // gather card data\n const { showNow, nowMain, nowSecondary, showNext, nextMain, nextSecondary } = getCardData(\n eventNow,\n eventNext,\n mainSource,\n secondarySource,\n time.playback,\n time.phase,\n );\n\n // gather timer data\n const totalTime = getTotalTime(time.duration, time.addedTime);\n const formattedClock = formatTime(clock);\n const stageTimer = getTimerByType(freezeOvertime, timerTypeNow, countToEndNow, clock, time, timerType);\n const display = getFormattedTimer(stageTimer, viewTimerType, localisedMinutes, {\n removeSeconds: hideTimerSeconds,\n removeLeadingZero: removeLeadingZeros,\n });\n\n const currentAux = (() => {\n if (message.timer.secondarySource === 'aux1') {\n return auxTimer.aux1;\n }\n if (message.timer.secondarySource === 'aux2') {\n return auxTimer.aux2;\n }\n if (message.timer.secondarySource === 'aux3') {\n return auxTimer.aux3;\n }\n return null;\n })();\n\n const secondaryContent = getSecondaryDisplay(\n message,\n currentAux,\n localisedMinutes,\n hideTimerSeconds,\n removeLeadingZeros,\n hideSecondary,\n );\n\n // gather presentation styles\n const resolvedTimerColour = getTimerColour(viewSettings, timerColour, showWarning, showDanger);\n const { timerFontSize, externalFontSize } = getEstimatedFontSize(display, secondaryContent);\n const userStyles = {\n ...(keyColour && { '--timer-bg': keyColour }),\n ...(resolvedTimerColour && { '--timer-colour': resolvedTimerColour }),\n ...(font && { '--timer-font': font }),\n };\n\n // gather option data\n const defaultFormat = getDefaultFormat(settings?.timeFormat);\n const timerOptions = useMemo(() => getTimerOptions(defaultFormat, customFields), [customFields, defaultFormat]);\n\n return (\n <div\n data-testid='timer-view'\n className={cx(['stage-timer', isMirrored && 'mirror', showFinished && 'stage-timer--finished'])}\n style={userStyles}\n >\n {!hideLogo && projectData?.logo && <ViewLogo name={projectData.logo} className='logo' />}\n\n <ViewParamsEditor target={OntimeView.Timer} viewOptions={timerOptions} />\n\n <div className={cx(['blackout', message.timer.blackout && 'blackout--active'])} />\n\n {!hideMessage && (\n <div className={cx(['message-overlay', showOverlay && 'message-overlay--active'])}>\n <FitText mode='multi' min={32} max={256} className={cx(['message', message.timer.blink && 'blink'])}>\n {message.timer.text}\n </FitText>\n </div>\n )}\n\n {showClock && (\n <div className='clock-container'>\n <div className='label'>{getLocalizedString('common.time_now')}</div>\n <SuperscriptTime time={formattedClock} className='clock' />\n </div>\n )}\n\n <div className={cx(['timer-container', message.timer.blink && !showOverlay && 'blink'])}>\n {showEndMessage ? (\n <FitText mode='multi' min={64} max={256} className='end-message'>\n {freezeMessage}\n </FitText>\n ) : (\n <div\n className={cx(['timer', !isPlaying && 'timer--paused', showFinished && 'timer--finished'])}\n style={{ fontSize: `${timerFontSize}vw` }}\n data-phase={time.phase}\n >\n {display}\n </div>\n )}\n <div\n className={cx(['secondary', !secondaryContent && 'secondary--hidden'])}\n style={{ fontSize: `${externalFontSize}vw` }}\n >\n {secondaryContent}\n </div>\n </div>\n\n {showProgressBar && (\n <MultiPartProgressBar\n className={cx(['progress-container', !isPlaying && 'progress-container--paused'])}\n now={time.current}\n complete={totalTime}\n normalColor={viewSettings.normalColor}\n warning={eventNow?.timeWarning}\n warningColor={viewSettings.warningColor}\n danger={eventNow?.timeDanger}\n dangerColor={viewSettings.dangerColor}\n hideOvertime={!showFinished}\n />\n )}\n\n {!hideCards && (\n <>\n {showNow && <TitleCard className='event now' label='now' title={nowMain} secondary={nowSecondary} />}\n {showNext && <TitleCard className='event next' label='next' title={nextMain} secondary={nextSecondary} />}\n </>\n )}\n </div>\n );\n}\n"],"names":["bsearch","low","high","predicate","mid","FitText","children","mode","min","max","elementProps","ref","useRef","isOverflown","useCallback","el","setFontSize","originVisibility","fontSize","useEffect","observer","jsx","timerDisplayOptions","TimerType","getTimerOptions","timeFormat","customFields","mainOptions","makeOptionsFromCustomFields","secondaryOptions","OptionTitle","getTimeOption","hideTimerSeconds","showLeadingZeros","getOptionsFromParams","searchParams","defaultValues","getValue","key","timerType","validateTimerType","isStringBoolean","makeColourString","useTimerOptions","useSearchParams","maybePreset","use","PresetContext","useMemo","getShowMessage","message","getIsPlaying","playback","Playback","getTotalTime","duration","addedTime","getShowProgressBar","getShowClock","fontSizeMap","getEstimatedFontSize","stageTimer","secondaryContent","stageTimerCharacters","timerFontSize","externalFontSize","getShowModifiers","countToEnd","phase","freezeOvertime","freezeMessage","hidePhase","TimerPhase","getSecondaryDisplay","currentAux","localisedMinutes","removeSeconds","removeLeadingZero","hideSecondary","getFormattedTimer","getCardData","eventNow","eventNext","mainSource","secondarySource","hasActiveTimer","isPlaybackActive","nowMain","getPropertyValue","nowSecondary","nextMain","nextSecondary","useTimerData","isMirrored","useViewOptionsStore","state","projectData","projectDataStatus","useProjectData","viewSettings","viewSettingsStatus","useViewSettings","settings","settingsStatus","useSettings","customFieldsStatus","useCustomFields","aggregateQueryStatus","TimerLoader","data","status","useWindowTitle","Loader","EmptyPage","Timer","time","clock","timerTypeNow","countToEndNow","auxTimer","useTimerSocket","hideClock","hideCards","hideProgress","hideMessage","hideLogo","removeLeadingZeros","font","keyColour","timerColour","getLocalizedString","useTranslation","viewTimerType","showOverlay","showEndMessage","showFinished","showWarning","showDanger","isPlaying","showClock","showProgressBar","showNow","showNext","totalTime","formattedClock","formatTime","getTimerByType","display","resolvedTimerColour","getTimerColour","userStyles","defaultFormat","getDefaultFormat","timerOptions","jsxs","cx","ViewLogo","ViewParamsEditor","OntimeView","SuperscriptTime","MultiPartProgressBar","Fragment","TitleCard"],"mappings":"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"}
@@ -1 +0,0 @@
1
- .blink{animation:blink 1s step-start infinite}@keyframes blink{0%{opacity:100%}50%{opacity:20%}}.fourtyfive{transform:rotate(45deg)}.mirror{transform:rotate(180deg)}.stage-timer{margin:0;box-sizing:border-box;overflow:hidden;width:100%;height:100vh;transition:opacity .5s ease-in-out;font-family:var(--font-family-override, "Open Sans", "Segoe UI", sans-serif);background:var(--timer-bg, var(--background-color-override, #101010));color:var(--color-override, rgba(255, 255, 255, .8));gap:min(2vh,16px);padding:min(2vh,16px) clamp(16px,2vw,24px);display:flex;flex-direction:column}.stage-timer--finished{outline:clamp(4px,1vw,16px) solid var(--timer-overtime-color-override, #FA5656);outline-offset:calc(clamp(4px,1vw,16px)*-1);transition:.5s}.stage-timer .blackout{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background-color:#000;opacity:0;transition:opacity .5s}.stage-timer .blackout--active{z-index:101;opacity:1}.stage-timer .clock-container{margin-left:auto;font-weight:600;transition:opacity .5s}.stage-timer .clock-container .label{font-size:clamp(12px,1.25vw,20px);color:var(--label-color-override, rgba(255, 255, 255, .25));text-transform:uppercase}.stage-timer .clock-container .clock{font-size:clamp(24px,2.5vw,48px);color:var(--secondary-color-override, rgba(255, 255, 255, .45));letter-spacing:.05em;line-height:.95em}.stage-timer .clock-container--hidden{opacity:0}.stage-timer .event{background-color:var(--card-background-color-override, rgba(255, 255, 255, .05));padding:min(2vh,8px) clamp(16px,2vw,24px);border-radius:4px}.stage-timer .event.now{grid-area:now}.stage-timer .event.next{grid-area:next}.stage-timer .timer-container{flex:1;align-content:center;justify-self:center;align-self:center;width:100%;overflow:hidden}.stage-timer .timer-container .end-message{text-align:center;font-size:11.5vw;line-height:.9em;font-weight:600;color:var(--timer-overtime-color-override, #FA5656);padding:0}.stage-timer .timer-container .timer{opacity:1;font-family:var(--timer-font, var(--font-family-override, "Open Sans", "Segoe UI", sans-serif));color:var(--timer-colour, var(--timer-color-override, #f6f6f6));line-height:.9em;text-align:center;letter-spacing:.05em;font-weight:600;transition-property:font-size;transition-duration:.5s}.stage-timer .timer-container .timer--paused{opacity:.6;transition:.5s}.stage-timer .timer-container .timer--finished{color:var(--timer-colour, var(--timer-overtime-color-override, #FA5656))}.stage-timer .timer-container .timer[data-phase=warning]{color:var(--timer-colour, var(--timer-warning-color-override))}.stage-timer .timer-container .timer[data-phase=danger]{color:var(--timer-colour, var(--timer-danger-color-override))}.stage-timer .secondary{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:.125em;padding-block:.125em;font-weight:600;text-align:center;color:var(--external-color-override, rgba(255, 255, 255, .85));letter-spacing:.5px;line-height:1em;transition-property:opacity,height;transition-duration:.5s;border-top:1px solid color-mix(in srgb,var(--external-color-override, rgba(255, 255, 255, .85)) 10%,transparent)}.stage-timer .secondary--hidden{opacity:0;height:0}.stage-timer .progress-container{width:100%;margin:0 auto;opacity:1;transition:.5s}.stage-timer .progress-container--paused{opacity:.6;transition:.5s}.stage-timer .message-overlay{position:fixed;top:0;right:0;bottom:0;left:0;padding:2vw;background:var(--background-color-override, #101010);opacity:0;transition:opacity .5s}.stage-timer .message-overlay--active{z-index:100;opacity:1}.stage-timer .message{display:grid;place-content:center;height:100%;width:100%;color:var(--color-override, rgba(255, 255, 255, .8));text-align:center;font-weight:600}.stage-timer .logo{position:absolute;top:min(2vh,16px);left:clamp(16px,2vw,24px);max-width:min(200px,20vw)}@media screen and (max-width: 768px){.stage-timer .logo img{height:min(50px,10vh)}}
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,2 +0,0 @@
1
- import{e as a,k as $,h as i}from"./vendor-Cu5xgv5K.js";import{r as p,aw as g,o as y,aE as m,ax as R}from"./index-5QAOtSTh.js";import{u as I}from"./useProjectData-CetvEK9E.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]="0f7e61a8-bf75-49b8-b046-7e30c2f14635",t._sentryDebugIdIdentifier="sentry-dbid-0f7e61a8-bf75-49b8-b046-7e30c2f14635")}catch{}})();var c=(t=>(t.Event="event",t.Delay="delay",t.Group="group",t.Milestone="milestone",t))(c||{});function M(t){return(t==null?void 0:t.type)===c.Event}function v(t){return!t.skip}function G(t){return(t==null?void 0:t.type)===c.Delay}function O(t){return(t==null?void 0:t.type)===c.Group}function N(t){return(t==null?void 0:t.type)===c.Milestone}function W(t,n){return t in n}function _(t){return t.type==="osc"}function B(t){return t.type==="http"}function K(t){return t.type==="ontime"}function b(t,n){return!(!n||t.dayOffset<=n.dayOffset||n.timeStart+n.duration>p)}function D(t,n){if(!n)return!0;const s=t.timeStart+t.duration+t.dayOffset*p,e=n.timeStart+n.duration+n.dayOffset*p;return s>=e}const r=`${g}/rundowns`;async function U(){return(await a.get(r)).data}async function L(){return(await a.get(`${r}/current`)).data}async function Q(t){return a.post(`${r}/${t}/load`)}async function j(t){return a.post(r,{title:t})}async function z(t){return a.delete(`${r}/${t}`)}async function H(t,n){return a.post(`${r}/${t}/entry`,n)}async function J(t,n){return a.put(`${r}/${t}/entry`,n)}async function V(t,n){return a.put(`${r}/${t}/batch`,n)}async function X(t,n){return a.patch(`${r}/${t}/reorder`,n)}async function Y(t,n,s){return a.patch(`${r}/${t}/swap`,{from:n,to:s})}async function Z(t,n){return a.patch(`${r}/${t}/applydelay/${n}`)}async function tt(t,n){return a.post(`${r}/${t}/clone/${n}`)}async function nt(t,n){return a.post(`${r}/${t}/group`,{ids:n})}async function et(t,n){return a.post(`${r}/${t}/ungroup/${n}`)}async function st(t,n){return a.delete(`${r}/${t}/entries`,{data:{ids:n}})}async function at(t){return a.delete(`${r}/${t}/all`)}const P="LAST";function x(t,n){const{metadata:s,process:e}=w(n);let o=s;const u={};for(const d of t.flatOrder){const l=t.entries[d];o=e(l),u[d]=o}return u[P]=o,u}function T(t,n){const{process:s}=w(n),e=[];for(const o of t.flatOrder){const u=t.entries[o],d={...u,...s(u)};e.push(d)}return e}function w(t){let n={previousEvent:null,latestEvent:null,previousEntryId:null,thisId:null,eventIndex:0,isPast:!!t,isNextDay:!1,totalGap:0,isLinkedToLoaded:!1,isLoaded:!1,groupId:null,groupColour:void 0,groupEntries:void 0,isFirstAfterGroup:!1};function s(e){return n=k(n,t,e),n}return{metadata:n,process:s}}function k(t,n,s){var o,u;const e={...t};return e.isNextDay=!1,e.isLoaded=!1,e.previousEntryId=e.thisId,e.thisId=s.id,e.previousEvent=e.latestEvent,s.id===n&&(e.isLoaded=!0,e.isPast=!1,e.isLinkedToLoaded=!0),O(s)?(e.groupId=s.id,e.groupColour=s.colour,e.groupEntries=s.entries.length):(s.parent!==e.groupId&&(e.groupId=s.parent,e.groupEntries=void 0,s.parent===null&&(e.groupColour=void 0)),M(s)&&(e.eventIndex+=1,e.isFirstAfterGroup=!!((o=e.previousEvent)!=null&&o.parent)&&s.parent===null,v(s)&&(e.isNextDay=b(s,e.previousEvent),e.totalGap+=s.gap,!e.isPast&&!e.isLoaded&&(e.isLinkedToLoaded=s.linkStart&&!((u=e.previousEvent)!=null&&u.countToEnd)&&e.isLinkedToLoaded),D(s,e.latestEvent)&&(e.latestEvent=s)))),e}const S={id:"default",title:"",order:[],flatOrder:[],entries:{},revision:-1};function f(){const{data:t,status:n,isError:s,refetch:e,isFetching:o}=$({queryKey:R,queryFn:L,placeholderData:(u,d)=>u,refetchInterval:m});return{data:t??S,status:n,isError:s,refetch:e,isFetching:o}}function rt(){const{data:t,status:n}=f(),{selectedEventId:s}=y(),e=i.useMemo(()=>x(t,s),[t,s]);return{data:t,status:n,rundownMetadata:e}}function ot(){const{data:t,status:n}=f(),{data:s}=I(),e=i.useRef(""),[o,u]=i.useState(-1),[d,l]=i.useState([]);return i.useEffect(()=>{if(t.revision!==-1||t.revision!==o){const E=t.order.map(h=>t.entries[h]);l(E),u(t.revision)}},[t.entries,t.flatOrder,t.revision,o]),i.useEffect(()=>{(s==null?void 0:s.title)!==e.current&&(u(-1),e.current=(s==null?void 0:s.title)??"")},[s]),{data:d,rundownId:t.id,status:n}}function q(){const{data:t,status:n}=f(),{selectedEventId:s}=y();return{data:i.useMemo(()=>T(t,s),[t,s]),status:n}}function ut(t){const{data:n,status:s}=q();return{data:i.useMemo(()=>n.filter(t),[n,t]),status:s}}function it(t){const{data:n}=f();return i.useMemo(()=>t===null?null:n.entries[t],[t,n.entries])}export{at as A,Z as B,et as C,nt as D,X as E,Y as F,c as S,v as a,ut as b,ot as c,D as d,_ as e,B as f,K as g,f as h,M as i,O as j,N as k,j as l,z as m,Q as n,U as o,W as p,G as q,rt as r,it as s,P as t,q as u,H as v,tt as w,J as x,V as y,st as z};
2
- //# sourceMappingURL=useRundown-D8CYATNi.js.map
Binary file
Binary file