@getontime/cli 4.2.0 → 4.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/assets/Backstage-WSlbFC9X.js +2 -0
- package/client/assets/Backstage-WSlbFC9X.js.br +0 -0
- package/client/assets/Backstage-WSlbFC9X.js.gz +0 -0
- package/client/assets/{Backstage-DG-hwPI3.js.map → Backstage-WSlbFC9X.js.map} +1 -1
- package/client/assets/{Countdown-C8LGl1pp.js → Countdown-B32qlxYT.js} +2 -2
- package/client/assets/Countdown-B32qlxYT.js.br +0 -0
- package/client/assets/Countdown-B32qlxYT.js.gz +0 -0
- package/client/assets/{Countdown-C8LGl1pp.js.map → Countdown-B32qlxYT.js.map} +1 -1
- package/client/assets/{CustomTranslationModal-CJ9-aDjl.js → CustomTranslationModal-CtBvokyt.js} +2 -2
- package/client/assets/CustomTranslationModal-CtBvokyt.js.br +0 -0
- package/client/assets/CustomTranslationModal-CtBvokyt.js.gz +0 -0
- package/client/assets/{CustomTranslationModal-CJ9-aDjl.js.map → CustomTranslationModal-CtBvokyt.js.map} +1 -1
- package/client/assets/DelayIndicator-BFZFpsY5.js +2 -0
- package/client/assets/DelayIndicator-BFZFpsY5.js.br +0 -0
- package/client/assets/DelayIndicator-BFZFpsY5.js.gz +0 -0
- package/client/assets/{DelayIndicator-F4GdgsGh.js.map → DelayIndicator-BFZFpsY5.js.map} +1 -1
- package/client/assets/EditorFeatureWrapper-DaMxgBMP.js +2 -0
- package/client/assets/EditorFeatureWrapper-DaMxgBMP.js.br +0 -0
- package/client/assets/EditorFeatureWrapper-DaMxgBMP.js.gz +0 -0
- package/client/assets/{EditorFeatureWrapper-eIpSr_UK.js.map → EditorFeatureWrapper-DaMxgBMP.js.map} +1 -1
- package/client/assets/EditorUtils-DoaSwWiz.js +2 -0
- package/client/assets/EditorUtils-DoaSwWiz.js.br +0 -0
- package/client/assets/EditorUtils-DoaSwWiz.js.gz +0 -0
- package/client/assets/{EditorUtils-Bd3J5Dvf.js.map → EditorUtils-DoaSwWiz.js.map} +1 -1
- package/client/assets/Empty-D1UteOYj.js +2 -0
- package/client/assets/Empty-D1UteOYj.js.br +0 -0
- package/client/assets/Empty-D1UteOYj.js.gz +0 -0
- package/client/assets/{Empty-C0IdV_kI.js.map → Empty-D1UteOYj.js.map} +1 -1
- package/client/assets/EmptyPage-DeRjpRKZ.js +2 -0
- package/client/assets/EmptyPage-DeRjpRKZ.js.br +0 -0
- package/client/assets/EmptyPage-DeRjpRKZ.js.gz +0 -0
- package/client/assets/{EmptyPage-Ct3d0DqJ.js.map → EmptyPage-DeRjpRKZ.js.map} +1 -1
- package/client/assets/FollowButton-FodezDem.js +2 -0
- package/client/assets/FollowButton-FodezDem.js.br +0 -0
- package/client/assets/FollowButton-FodezDem.js.gz +0 -0
- package/client/assets/{FollowButton-BG-ycRWu.js.map → FollowButton-FodezDem.js.map} +1 -1
- package/client/assets/{MessageControlExport-X-4dl9QT.js → MessageControlExport-CFGgiwk_.js} +3 -3
- package/client/assets/MessageControlExport-CFGgiwk_.js.br +0 -0
- package/client/assets/MessageControlExport-CFGgiwk_.js.gz +0 -0
- package/client/assets/MessageControlExport-CFGgiwk_.js.map +1 -0
- package/client/assets/{MilestoneEditor-rgBQSXVU.js → MilestoneEditor-B5BdJ5ju.js} +2 -2
- package/client/assets/MilestoneEditor-B5BdJ5ju.js.br +0 -0
- package/client/assets/MilestoneEditor-B5BdJ5ju.js.gz +0 -0
- package/client/assets/{MilestoneEditor-rgBQSXVU.js.map → MilestoneEditor-B5BdJ5ju.js.map} +1 -1
- package/client/assets/Modal-B8ZZbVMg.js +2 -0
- package/client/assets/Modal-B8ZZbVMg.js.br +0 -0
- package/client/assets/Modal-B8ZZbVMg.js.gz +0 -0
- package/client/assets/{Modal-Bn1bZkwb.js.map → Modal-B8ZZbVMg.js.map} +1 -1
- package/client/assets/{MultiPartProgressBar-Cmw-gisu.js → MultiPartProgressBar-BKHk19Hb.js} +2 -2
- package/client/assets/MultiPartProgressBar-BKHk19Hb.js.br +0 -0
- package/client/assets/MultiPartProgressBar-BKHk19Hb.js.gz +0 -0
- package/client/assets/{MultiPartProgressBar-Cmw-gisu.js.map → MultiPartProgressBar-BKHk19Hb.js.map} +1 -1
- package/client/assets/{OperatorExport-CJd8jmY4.js → OperatorExport-DQM14DsN.js} +2 -2
- package/client/assets/OperatorExport-DQM14DsN.js.br +0 -0
- package/client/assets/OperatorExport-DQM14DsN.js.gz +0 -0
- package/client/assets/{OperatorExport-CJd8jmY4.js.map → OperatorExport-DQM14DsN.js.map} +1 -1
- package/client/assets/{OverviewWrapper-1Vj3_ojX.js → OverviewWrapper-D1hUkrRi.js} +2 -2
- package/client/assets/OverviewWrapper-D1hUkrRi.js.br +0 -0
- package/client/assets/OverviewWrapper-D1hUkrRi.js.gz +0 -0
- package/client/assets/{OverviewWrapper-1Vj3_ojX.js.map → OverviewWrapper-D1hUkrRi.js.map} +1 -1
- package/client/assets/PipHost-B9-cZ8Lm.js +2 -0
- package/client/assets/PipHost-B9-cZ8Lm.js.br +0 -0
- package/client/assets/PipHost-B9-cZ8Lm.js.gz +0 -0
- package/client/assets/PipHost-B9-cZ8Lm.js.map +1 -0
- package/client/assets/PipHost-DEhjTbGT.css +1 -0
- package/client/assets/PipHost-DEhjTbGT.css.br +0 -0
- package/client/assets/PipHost-DEhjTbGT.css.gz +0 -0
- package/client/assets/{ProjectInfo-BduQgjcz.js → ProjectInfo-Dp1TZyBd.js} +2 -2
- package/client/assets/ProjectInfo-Dp1TZyBd.js.br +0 -0
- package/client/assets/ProjectInfo-Dp1TZyBd.js.gz +0 -0
- package/client/assets/{ProjectInfo-BduQgjcz.js.map → ProjectInfo-Dp1TZyBd.js.map} +1 -1
- package/client/assets/ProtectRoute-EejQ5o_H.js +2 -0
- package/client/assets/ProtectRoute-EejQ5o_H.js.br +0 -0
- package/client/assets/ProtectRoute-EejQ5o_H.js.gz +0 -0
- package/client/assets/{ProtectRoute-Ci_AIozP.js.map → ProtectRoute-EejQ5o_H.js.map} +1 -1
- package/client/assets/{ProtectedCuesheet-D_zdkwM-.js → ProtectedCuesheet-DvYSgueA.js} +2 -2
- package/client/assets/ProtectedCuesheet-DvYSgueA.js.br +0 -0
- package/client/assets/ProtectedCuesheet-DvYSgueA.js.gz +0 -0
- package/client/assets/{ProtectedCuesheet-D_zdkwM-.js.map → ProtectedCuesheet-DvYSgueA.js.map} +1 -1
- package/client/assets/{ProtectedEditor-CNL2ig79.js → ProtectedEditor-B0l0X3QP.js} +3 -3
- package/client/assets/ProtectedEditor-B0l0X3QP.js.br +0 -0
- package/client/assets/ProtectedEditor-B0l0X3QP.js.gz +0 -0
- package/client/assets/ProtectedEditor-B0l0X3QP.js.map +1 -0
- package/client/assets/RundownEntry-CwiStTnR.js +2 -0
- package/client/assets/RundownEntry-CwiStTnR.js.br +0 -0
- package/client/assets/RundownEntry-CwiStTnR.js.gz +0 -0
- package/client/assets/RundownEntry-CwiStTnR.js.map +1 -0
- package/client/assets/RundownExport-CCaOfHIr.js +3 -0
- package/client/assets/RundownExport-CCaOfHIr.js.br +0 -0
- package/client/assets/RundownExport-CCaOfHIr.js.gz +0 -0
- package/client/assets/RundownExport-CCaOfHIr.js.map +1 -0
- package/client/assets/Select-cHK8JrMG.js +2 -0
- package/client/assets/Select-cHK8JrMG.js.br +0 -0
- package/client/assets/Select-cHK8JrMG.js.gz +0 -0
- package/client/assets/{Select-B5xNi_tM.js.map → Select-cHK8JrMG.js.map} +1 -1
- package/client/assets/{Studio-D4hRKhJ1.js → Studio-BzwFDYzk.js} +2 -2
- package/client/assets/Studio-BzwFDYzk.js.br +0 -0
- package/client/assets/Studio-BzwFDYzk.js.gz +0 -0
- package/client/assets/{Studio-D4hRKhJ1.js.map → Studio-BzwFDYzk.js.map} +1 -1
- package/client/assets/StyleEditor-RZvkKHdf.js +2 -0
- package/client/assets/StyleEditor-RZvkKHdf.js.br +0 -0
- package/client/assets/StyleEditor-RZvkKHdf.js.gz +0 -0
- package/client/assets/{StyleEditor-BvcE8dkA.js.map → StyleEditor-RZvkKHdf.js.map} +1 -1
- package/client/assets/SuperscriptPeriod-DaZq1rr6.js +2 -0
- package/client/assets/SuperscriptPeriod-DaZq1rr6.js.br +0 -0
- package/client/assets/SuperscriptPeriod-DaZq1rr6.js.gz +0 -0
- package/client/assets/{SuperscriptPeriod-BmHAoSBy.js.map → SuperscriptPeriod-DaZq1rr6.js.map} +1 -1
- package/client/assets/SuperscriptTime-Mc0ZGBMo.js +2 -0
- package/client/assets/SuperscriptTime-Mc0ZGBMo.js.br +0 -0
- package/client/assets/SuperscriptTime-Mc0ZGBMo.js.gz +0 -0
- package/client/assets/{SuperscriptTime-Nou92D8X.js.map → SuperscriptTime-Mc0ZGBMo.js.map} +1 -1
- package/client/assets/{TimeElements-XpRwBsaa.js → TimeElements-dIvFHgcd.js} +2 -2
- package/client/assets/TimeElements-dIvFHgcd.js.br +0 -0
- package/client/assets/TimeElements-dIvFHgcd.js.gz +0 -0
- package/client/assets/{TimeElements-XpRwBsaa.js.map → TimeElements-dIvFHgcd.js.map} +1 -1
- package/client/assets/TimeInput-Duzx40TC.js +2 -0
- package/client/assets/TimeInput-Duzx40TC.js.br +0 -0
- package/client/assets/TimeInput-Duzx40TC.js.gz +0 -0
- package/client/assets/{TimeInput-Bu_5GlHP.js.map → TimeInput-Duzx40TC.js.map} +1 -1
- package/client/assets/{TimelinePage-CQqUB1KT.js → TimelinePage-C-OHrCR8.js} +2 -2
- package/client/assets/TimelinePage-C-OHrCR8.js.br +0 -0
- package/client/assets/TimelinePage-C-OHrCR8.js.gz +0 -0
- package/client/assets/{TimelinePage-CQqUB1KT.js.map → TimelinePage-C-OHrCR8.js.map} +1 -1
- package/client/assets/Timer-CGqVtVEC.js +2 -0
- package/client/assets/Timer-CGqVtVEC.js.br +0 -0
- package/client/assets/Timer-CGqVtVEC.js.gz +0 -0
- package/client/assets/{Timer-CIr2L3gJ.js.map → Timer-CGqVtVEC.js.map} +1 -1
- package/client/assets/{Timer-B7nk3TMf.css → Timer-Jjolf5Ra.css} +1 -1
- package/client/assets/Timer-Jjolf5Ra.css.br +0 -0
- package/client/assets/Timer-Jjolf5Ra.css.gz +0 -0
- package/client/assets/{TimerControlExport-4a3Cd9x8.js → TimerControlExport-GJn4WWdH.js} +2 -2
- package/client/assets/TimerControlExport-GJn4WWdH.js.br +0 -0
- package/client/assets/TimerControlExport-GJn4WWdH.js.gz +0 -0
- package/client/assets/{TimerControlExport-4a3Cd9x8.js.map → TimerControlExport-GJn4WWdH.js.map} +1 -1
- package/client/assets/TitleCard-BqbrUnHO.js +2 -0
- package/client/assets/TitleCard-BqbrUnHO.js.br +0 -0
- package/client/assets/TitleCard-BqbrUnHO.js.gz +0 -0
- package/client/assets/{TitleCard-1U35ek0D.js.map → TitleCard-BqbrUnHO.js.map} +1 -1
- package/client/assets/Tooltip-BQBvaIZx.js +2 -0
- package/client/assets/Tooltip-BQBvaIZx.js.br +0 -0
- package/client/assets/Tooltip-BQBvaIZx.js.gz +0 -0
- package/client/assets/{Tooltip-B8y25e3n.js.map → Tooltip-BQBvaIZx.js.map} +1 -1
- package/client/assets/ViewLogo-BdL1hUV1.js +2 -0
- package/client/assets/ViewLogo-BdL1hUV1.js.br +0 -0
- package/client/assets/ViewLogo-BdL1hUV1.js.gz +0 -0
- package/client/assets/{ViewLogo-BHsV7Faa.js.map → ViewLogo-BdL1hUV1.js.map} +1 -1
- package/client/assets/{ViewParamsEditor-BMHXOv-K.js → ViewParamsEditor-CFedpp6w.js} +2 -2
- package/client/assets/ViewParamsEditor-CFedpp6w.js.br +0 -0
- package/client/assets/ViewParamsEditor-CFedpp6w.js.gz +0 -0
- package/client/assets/{ViewParamsEditor-BMHXOv-K.js.map → ViewParamsEditor-CFedpp6w.js.map} +1 -1
- package/client/assets/dateConfig-BU1RZfIK.js +2 -0
- package/client/assets/dateConfig-BU1RZfIK.js.br +0 -0
- package/client/assets/dateConfig-BU1RZfIK.js.gz +0 -0
- package/client/assets/dateConfig-BU1RZfIK.js.map +1 -0
- package/client/assets/editorSettings-BMt-7s8I.js +2 -0
- package/client/assets/editorSettings-BMt-7s8I.js.br +0 -0
- package/client/assets/editorSettings-BMt-7s8I.js.gz +0 -0
- package/client/assets/{editorSettings-DH9ca-nB.js.map → editorSettings-BMt-7s8I.js.map} +1 -1
- package/client/assets/{getProgress-DlrSzpnf.js → getProgress-sdxPEEPi.js} +2 -2
- package/client/assets/getProgress-sdxPEEPi.js.br +0 -0
- package/client/assets/getProgress-sdxPEEPi.js.gz +0 -0
- package/client/assets/{getProgress-DlrSzpnf.js.map → getProgress-sdxPEEPi.js.map} +1 -1
- package/client/assets/index-CoGiopcb.js +3 -0
- package/client/assets/index-CoGiopcb.js.br +0 -0
- package/client/assets/index-CoGiopcb.js.gz +0 -0
- package/client/assets/index-CoGiopcb.js.map +1 -0
- package/client/assets/{offset-CLG4o744.js → offset-BS90Rks2.js} +2 -2
- package/client/assets/offset-BS90Rks2.js.br +0 -0
- package/client/assets/offset-BS90Rks2.js.gz +0 -0
- package/client/assets/{offset-CLG4o744.js.map → offset-BS90Rks2.js.map} +1 -1
- package/client/assets/parseUserTime-DZJMcfuJ.js +2 -0
- package/client/assets/parseUserTime-DZJMcfuJ.js.br +0 -0
- package/client/assets/parseUserTime-DZJMcfuJ.js.gz +0 -0
- package/client/assets/{parseUserTime-Cp5iWS7y.js.map → parseUserTime-DZJMcfuJ.js.map} +1 -1
- package/client/assets/{playbackstate-B3BKJ8cT.js → playbackstate-CWexoP3a.js} +2 -2
- package/client/assets/playbackstate-CWexoP3a.js.br +0 -0
- package/client/assets/playbackstate-CWexoP3a.js.gz +0 -0
- package/client/assets/{playbackstate-B3BKJ8cT.js.map → playbackstate-CWexoP3a.js.map} +1 -1
- package/client/assets/{presentation.utils-B-wIv_a5.js → presentation.utils-Zo5hNQje.js} +2 -2
- package/client/assets/presentation.utils-Zo5hNQje.js.br +0 -0
- package/client/assets/presentation.utils-Zo5hNQje.js.gz +0 -0
- package/client/assets/{presentation.utils-B-wIv_a5.js.map → presentation.utils-Zo5hNQje.js.map} +1 -1
- package/client/assets/rundownUtils-Dl1x6NDv.js +2 -0
- package/client/assets/rundownUtils-Dl1x6NDv.js.br +0 -0
- package/client/assets/rundownUtils-Dl1x6NDv.js.gz +0 -0
- package/client/assets/{rundownUtils-DJKMt8Ih.js.map → rundownUtils-Dl1x6NDv.js.map} +1 -1
- package/client/assets/timer.utils-BnMyVO6Z.js +2 -0
- package/client/assets/timer.utils-BnMyVO6Z.js.br +0 -0
- package/client/assets/timer.utils-BnMyVO6Z.js.gz +0 -0
- package/client/assets/timer.utils-BnMyVO6Z.js.map +1 -0
- package/client/assets/useCustomFields-CcTb-GQM.js +2 -0
- package/client/assets/useCustomFields-CcTb-GQM.js.br +0 -0
- package/client/assets/useCustomFields-CcTb-GQM.js.gz +0 -0
- package/client/assets/{useCustomFields-BUJkzZvM.js.map → useCustomFields-CcTb-GQM.js.map} +1 -1
- package/client/assets/useFollowComponent-BjhV6Uv8.js +2 -0
- package/client/assets/useFollowComponent-BjhV6Uv8.js.br +0 -0
- package/client/assets/useFollowComponent-BjhV6Uv8.js.gz +0 -0
- package/client/assets/{useFollowComponent-Eyo4hWVG.js.map → useFollowComponent-BjhV6Uv8.js.map} +1 -1
- package/client/assets/{useProjectData-DGA6K2Zs.js → useProjectData-B5mjXsMj.js} +2 -2
- package/client/assets/useProjectData-B5mjXsMj.js.br +0 -0
- package/client/assets/useProjectData-B5mjXsMj.js.gz +0 -0
- package/client/assets/{useProjectData-DGA6K2Zs.js.map → useProjectData-B5mjXsMj.js.map} +1 -1
- package/client/assets/useReport-zMbyWwpn.js +2 -0
- package/client/assets/useReport-zMbyWwpn.js.br +0 -0
- package/client/assets/useReport-zMbyWwpn.js.gz +0 -0
- package/client/assets/{useReport-BUCsRa2T.js.map → useReport-zMbyWwpn.js.map} +1 -1
- package/client/assets/useRundown-CHsh5rnl.js +2 -0
- package/client/assets/useRundown-CHsh5rnl.js.br +0 -0
- package/client/assets/useRundown-CHsh5rnl.js.gz +0 -0
- package/client/assets/useRundown-CHsh5rnl.js.map +1 -0
- package/client/assets/useWindowTitle-mLKt65i7.js +2 -0
- package/client/assets/useWindowTitle-mLKt65i7.js.br +0 -0
- package/client/assets/useWindowTitle-mLKt65i7.js.gz +0 -0
- package/client/assets/{useWindowTitle-DU8NlxIu.js.map → useWindowTitle-mLKt65i7.js.map} +1 -1
- package/client/assets/{validateEvent-3adKsP1N.js → validateEvent-CUmvjN95.js} +2 -2
- package/client/assets/validateEvent-CUmvjN95.js.br +0 -0
- package/client/assets/validateEvent-CUmvjN95.js.gz +0 -0
- package/client/assets/{validateEvent-3adKsP1N.js.map → validateEvent-CUmvjN95.js.map} +1 -1
- package/client/assets/{vendor-BoH5HFNN.js → vendor-Cdwxo8bP.js} +21 -21
- package/client/assets/vendor-Cdwxo8bP.js.br +0 -0
- package/client/assets/vendor-Cdwxo8bP.js.gz +0 -0
- package/client/assets/{vendor-BoH5HFNN.js.map → vendor-Cdwxo8bP.js.map} +1 -1
- package/client/assets/{viewLoader.utils-BPOG1xso.js → viewLoader.utils-DuXjY5zb.js} +2 -2
- package/client/assets/viewLoader.utils-DuXjY5zb.js.br +0 -0
- package/client/assets/viewLoader.utils-DuXjY5zb.js.gz +0 -0
- package/client/assets/{viewLoader.utils-BPOG1xso.js.map → viewLoader.utils-DuXjY5zb.js.map} +1 -1
- package/client/assets/viewUtils-dKRKkb_F.js +2 -0
- package/client/assets/viewUtils-dKRKkb_F.js.br +0 -0
- package/client/assets/viewUtils-dKRKkb_F.js.gz +0 -0
- package/client/assets/viewUtils-dKRKkb_F.js.map +1 -0
- package/client/index.html +2 -2
- package/package.json +1 -1
- package/server/index.cjs +89 -89
- package/client/assets/Backstage-DG-hwPI3.js +0 -2
- package/client/assets/Backstage-DG-hwPI3.js.br +0 -0
- package/client/assets/Backstage-DG-hwPI3.js.gz +0 -0
- package/client/assets/Countdown-C8LGl1pp.js.br +0 -0
- package/client/assets/Countdown-C8LGl1pp.js.gz +0 -0
- package/client/assets/CustomTranslationModal-CJ9-aDjl.js.br +0 -0
- package/client/assets/CustomTranslationModal-CJ9-aDjl.js.gz +0 -0
- package/client/assets/DelayIndicator-F4GdgsGh.js +0 -2
- package/client/assets/DelayIndicator-F4GdgsGh.js.br +0 -0
- package/client/assets/DelayIndicator-F4GdgsGh.js.gz +0 -0
- package/client/assets/EditorFeatureWrapper-eIpSr_UK.js +0 -2
- package/client/assets/EditorFeatureWrapper-eIpSr_UK.js.br +0 -0
- package/client/assets/EditorFeatureWrapper-eIpSr_UK.js.gz +0 -0
- package/client/assets/EditorUtils-Bd3J5Dvf.js +0 -2
- package/client/assets/EditorUtils-Bd3J5Dvf.js.br +0 -0
- package/client/assets/EditorUtils-Bd3J5Dvf.js.gz +0 -0
- package/client/assets/Empty-C0IdV_kI.js +0 -2
- package/client/assets/Empty-C0IdV_kI.js.br +0 -0
- package/client/assets/Empty-C0IdV_kI.js.gz +0 -0
- package/client/assets/EmptyPage-Ct3d0DqJ.js +0 -2
- package/client/assets/EmptyPage-Ct3d0DqJ.js.br +0 -0
- package/client/assets/EmptyPage-Ct3d0DqJ.js.gz +0 -0
- package/client/assets/FollowButton-BG-ycRWu.js +0 -2
- package/client/assets/FollowButton-BG-ycRWu.js.br +0 -0
- package/client/assets/FollowButton-BG-ycRWu.js.gz +0 -0
- package/client/assets/MessageControlExport-X-4dl9QT.js.br +0 -0
- package/client/assets/MessageControlExport-X-4dl9QT.js.gz +0 -0
- package/client/assets/MessageControlExport-X-4dl9QT.js.map +0 -1
- package/client/assets/MilestoneEditor-rgBQSXVU.js.br +0 -0
- package/client/assets/MilestoneEditor-rgBQSXVU.js.gz +0 -0
- package/client/assets/Modal-Bn1bZkwb.js +0 -2
- package/client/assets/Modal-Bn1bZkwb.js.br +0 -0
- package/client/assets/Modal-Bn1bZkwb.js.gz +0 -0
- package/client/assets/MultiPartProgressBar-Cmw-gisu.js.br +0 -0
- package/client/assets/MultiPartProgressBar-Cmw-gisu.js.gz +0 -0
- package/client/assets/OperatorExport-CJd8jmY4.js.br +0 -0
- package/client/assets/OperatorExport-CJd8jmY4.js.gz +0 -0
- package/client/assets/OverviewWrapper-1Vj3_ojX.js.br +0 -0
- package/client/assets/OverviewWrapper-1Vj3_ojX.js.gz +0 -0
- package/client/assets/PipHost-BUF7n-lT.css +0 -1
- package/client/assets/PipHost-BUF7n-lT.css.br +0 -0
- package/client/assets/PipHost-BUF7n-lT.css.gz +0 -0
- package/client/assets/PipHost-D7liNR4M.js +0 -2
- package/client/assets/PipHost-D7liNR4M.js.br +0 -0
- package/client/assets/PipHost-D7liNR4M.js.gz +0 -0
- package/client/assets/PipHost-D7liNR4M.js.map +0 -1
- package/client/assets/ProjectInfo-BduQgjcz.js.br +0 -0
- package/client/assets/ProjectInfo-BduQgjcz.js.gz +0 -0
- package/client/assets/ProtectRoute-Ci_AIozP.js +0 -2
- package/client/assets/ProtectRoute-Ci_AIozP.js.br +0 -0
- package/client/assets/ProtectRoute-Ci_AIozP.js.gz +0 -0
- package/client/assets/ProtectedCuesheet-D_zdkwM-.js.br +0 -0
- package/client/assets/ProtectedCuesheet-D_zdkwM-.js.gz +0 -0
- package/client/assets/ProtectedEditor-CNL2ig79.js.br +0 -0
- package/client/assets/ProtectedEditor-CNL2ig79.js.gz +0 -0
- package/client/assets/ProtectedEditor-CNL2ig79.js.map +0 -1
- package/client/assets/RundownEntry-Bs1ombtH.js +0 -2
- package/client/assets/RundownEntry-Bs1ombtH.js.br +0 -0
- package/client/assets/RundownEntry-Bs1ombtH.js.gz +0 -0
- package/client/assets/RundownEntry-Bs1ombtH.js.map +0 -1
- package/client/assets/RundownExport-BCT0ybxy.js +0 -3
- package/client/assets/RundownExport-BCT0ybxy.js.br +0 -0
- package/client/assets/RundownExport-BCT0ybxy.js.gz +0 -0
- package/client/assets/RundownExport-BCT0ybxy.js.map +0 -1
- package/client/assets/Select-B5xNi_tM.js +0 -2
- package/client/assets/Select-B5xNi_tM.js.br +0 -0
- package/client/assets/Select-B5xNi_tM.js.gz +0 -0
- package/client/assets/Studio-D4hRKhJ1.js.br +0 -0
- package/client/assets/Studio-D4hRKhJ1.js.gz +0 -0
- package/client/assets/StyleEditor-BvcE8dkA.js +0 -2
- package/client/assets/StyleEditor-BvcE8dkA.js.br +0 -3
- package/client/assets/StyleEditor-BvcE8dkA.js.gz +0 -0
- package/client/assets/SuperscriptPeriod-BmHAoSBy.js +0 -2
- package/client/assets/SuperscriptPeriod-BmHAoSBy.js.br +0 -0
- package/client/assets/SuperscriptPeriod-BmHAoSBy.js.gz +0 -0
- package/client/assets/SuperscriptTime-Nou92D8X.js +0 -2
- package/client/assets/SuperscriptTime-Nou92D8X.js.br +0 -0
- package/client/assets/SuperscriptTime-Nou92D8X.js.gz +0 -0
- package/client/assets/TimeElements-XpRwBsaa.js.br +0 -0
- package/client/assets/TimeElements-XpRwBsaa.js.gz +0 -0
- package/client/assets/TimeInput-Bu_5GlHP.js +0 -2
- package/client/assets/TimeInput-Bu_5GlHP.js.br +0 -0
- package/client/assets/TimeInput-Bu_5GlHP.js.gz +0 -0
- package/client/assets/TimelinePage-CQqUB1KT.js.br +0 -0
- package/client/assets/TimelinePage-CQqUB1KT.js.gz +0 -0
- package/client/assets/Timer-B7nk3TMf.css.br +0 -0
- package/client/assets/Timer-B7nk3TMf.css.gz +0 -0
- package/client/assets/Timer-CIr2L3gJ.js +0 -2
- package/client/assets/Timer-CIr2L3gJ.js.br +0 -0
- package/client/assets/Timer-CIr2L3gJ.js.gz +0 -0
- package/client/assets/TimerControlExport-4a3Cd9x8.js.br +0 -0
- package/client/assets/TimerControlExport-4a3Cd9x8.js.gz +0 -0
- package/client/assets/TitleCard-1U35ek0D.js +0 -2
- package/client/assets/TitleCard-1U35ek0D.js.br +0 -0
- package/client/assets/TitleCard-1U35ek0D.js.gz +0 -0
- package/client/assets/Tooltip-B8y25e3n.js +0 -2
- package/client/assets/Tooltip-B8y25e3n.js.br +0 -0
- package/client/assets/Tooltip-B8y25e3n.js.gz +0 -0
- package/client/assets/ViewLogo-BHsV7Faa.js +0 -2
- package/client/assets/ViewLogo-BHsV7Faa.js.br +0 -0
- package/client/assets/ViewLogo-BHsV7Faa.js.gz +0 -0
- package/client/assets/ViewParamsEditor-BMHXOv-K.js.br +0 -0
- package/client/assets/ViewParamsEditor-BMHXOv-K.js.gz +0 -0
- package/client/assets/dateConfig-_BhycZza.js +0 -2
- package/client/assets/dateConfig-_BhycZza.js.br +0 -0
- package/client/assets/dateConfig-_BhycZza.js.gz +0 -0
- package/client/assets/dateConfig-_BhycZza.js.map +0 -1
- package/client/assets/editorSettings-DH9ca-nB.js +0 -2
- package/client/assets/editorSettings-DH9ca-nB.js.br +0 -0
- package/client/assets/editorSettings-DH9ca-nB.js.gz +0 -0
- package/client/assets/getProgress-DlrSzpnf.js.br +0 -0
- package/client/assets/getProgress-DlrSzpnf.js.gz +0 -0
- package/client/assets/index-CDBQg2fh.js +0 -3
- package/client/assets/index-CDBQg2fh.js.br +0 -0
- package/client/assets/index-CDBQg2fh.js.gz +0 -0
- package/client/assets/index-CDBQg2fh.js.map +0 -1
- package/client/assets/offset-CLG4o744.js.br +0 -0
- package/client/assets/offset-CLG4o744.js.gz +0 -0
- package/client/assets/parseUserTime-Cp5iWS7y.js +0 -2
- package/client/assets/parseUserTime-Cp5iWS7y.js.br +0 -0
- package/client/assets/parseUserTime-Cp5iWS7y.js.gz +0 -0
- package/client/assets/playbackstate-B3BKJ8cT.js.br +0 -0
- package/client/assets/playbackstate-B3BKJ8cT.js.gz +0 -0
- package/client/assets/presentation.utils-B-wIv_a5.js.br +0 -0
- package/client/assets/presentation.utils-B-wIv_a5.js.gz +0 -0
- package/client/assets/rundownUtils-DJKMt8Ih.js +0 -2
- package/client/assets/rundownUtils-DJKMt8Ih.js.br +0 -0
- package/client/assets/rundownUtils-DJKMt8Ih.js.gz +0 -0
- package/client/assets/timer.utils-ByC_bcT9.js +0 -2
- package/client/assets/timer.utils-ByC_bcT9.js.br +0 -0
- package/client/assets/timer.utils-ByC_bcT9.js.gz +0 -0
- package/client/assets/timer.utils-ByC_bcT9.js.map +0 -1
- package/client/assets/useCustomFields-BUJkzZvM.js +0 -2
- package/client/assets/useCustomFields-BUJkzZvM.js.br +0 -2
- package/client/assets/useCustomFields-BUJkzZvM.js.gz +0 -0
- package/client/assets/useFollowComponent-Eyo4hWVG.js +0 -2
- package/client/assets/useFollowComponent-Eyo4hWVG.js.br +0 -0
- package/client/assets/useFollowComponent-Eyo4hWVG.js.gz +0 -0
- package/client/assets/useProjectData-DGA6K2Zs.js.br +0 -0
- package/client/assets/useProjectData-DGA6K2Zs.js.gz +0 -0
- package/client/assets/useReport-BUCsRa2T.js +0 -2
- package/client/assets/useReport-BUCsRa2T.js.br +0 -0
- package/client/assets/useReport-BUCsRa2T.js.gz +0 -0
- package/client/assets/useRundown-BFae0_bU.js +0 -2
- package/client/assets/useRundown-BFae0_bU.js.br +0 -0
- package/client/assets/useRundown-BFae0_bU.js.gz +0 -0
- package/client/assets/useRundown-BFae0_bU.js.map +0 -1
- package/client/assets/useWindowTitle-DU8NlxIu.js +0 -2
- package/client/assets/useWindowTitle-DU8NlxIu.js.br +0 -0
- package/client/assets/useWindowTitle-DU8NlxIu.js.gz +0 -0
- package/client/assets/validateEvent-3adKsP1N.js.br +0 -0
- package/client/assets/validateEvent-3adKsP1N.js.gz +0 -0
- package/client/assets/vendor-BoH5HFNN.js.br +0 -0
- package/client/assets/vendor-BoH5HFNN.js.gz +0 -0
- package/client/assets/viewLoader.utils-BPOG1xso.js.br +0 -0
- package/client/assets/viewLoader.utils-BPOG1xso.js.gz +0 -0
- package/client/assets/viewUtils-DI8_kmUZ.js +0 -2
- package/client/assets/viewUtils-DI8_kmUZ.js.br +0 -0
- package/client/assets/viewUtils-DI8_kmUZ.js.gz +0 -0
- package/client/assets/viewUtils-DI8_kmUZ.js.map +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{h as _,j as e,aY as ze,aZ as Ge,a_ as qe,aG as Q,aH as X,bf as Y,cg as He,v as Ke,f as Ve,bp as We,ch as Ze,ci as Qe,bP as Xe,bL as ce,bM as Ye,aN as Je,bR as et,cj as tt,y as nt,bQ as st,bq as ot,av as rt,bO as it,ck as at,am as ct,bk as lt,cl as ut,ah as Z,aF as dt,T as pt,K as ft,ar as mt}from"./vendor-BoH5HFNN.js";import{m as D,ah as le,e as N,B as se,n as _t,bg as ue,k as J,M as de,bf as bt,ak as q,bT as M,K as ht,b2 as oe,b6 as vt,h as re,T as H,bU as yt,aC as pe}from"./index-CDBQg2fh.js";import{i as gt,s as xt,k as jt}from"./useRundown-BFae0_bU.js";import{u as $}from"./dateConfig-_BhycZza.js";import{T as Et,u as fe,a as me,g as kt,c as It}from"./RundownExport-BCT0ybxy.js";import{p as St}from"./parseUserTime-Cp5iWS7y.js";import{E as K}from"./validateEvent-3adKsP1N.js";import{T as E}from"./Tooltip-B8y25e3n.js";import{a as Ct,u as Nt}from"./MilestoneEditor-rgBQSXVU.js";import{u as wt}from"./useReport-BUCsRa2T.js";import{i as _e}from"./playbackstate-B3BKJ8cT.js";import{g as Tt}from"./getProgress-DlrSzpnf.js";import"./useProjectData-DGA6K2Zs.js";import"./editorSettings-DH9ca-nB.js";import"./rundownUtils-DJKMt8Ih.js";import"./EditorUtils-Bd3J5Dvf.js";import"./ProtectRoute-Ci_AIozP.js";import"./Modal-Bn1bZkwb.js";import"./Empty-C0IdV_kI.js";import"./useFollowComponent-Eyo4hWVG.js";import"./offset-CLG4o744.js";import"./TimeInput-Bu_5GlHP.js";import"./useCustomFields-BUJkzZvM.js";import"./Select-B5xNi_tM.js";(function(){try{var n=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new n.Error().stack;t&&(n._sentryDebugIds=n._sentryDebugIds||{},n._sentryDebugIds[t]="dd8f073a-7bc5-429e-860c-a50ea9e1f839",n._sentryDebugIdIdentifier="sentry-dbid-dd8f073a-7bc5-429e-860c-a50ea9e1f839")}catch{}})();function Rt(n){const t=_.useRef(n);t.current=_.useMemo(()=>n,[n]);const s=_.useRef(void 0);return s.current||(s.current=function(...o){return t.current.apply(this,o)}),s.current}const $t="_radioGroup_sxz6b_17",At="_item_sxz6b_23",Dt="_radio_sxz6b_17",Mt="_indicator_sxz6b_55",P={radioGroup:$t,item:At,radio:Dt,indicator:Mt};function Pt({items:n,onValueChange:t,...s}){return e.jsx(ze,{onValueChange:o=>t==null?void 0:t(o),className:P.radioGroup,...s,children:n.map(o=>e.jsxs("label",{className:P.item,children:[e.jsx(Ge,{value:o.value.toString(),className:P.radio,children:e.jsx(qe,{className:P.indicator})}),o.label]},o.value.toString()))})}const Lt="_delayInput_ksn92_17",Ft="_inputField_ksn92_23",ie={delayInput:Lt,inputField:Ft};function Bt(n){const{eventId:t,duration:s}=n,{updateEntry:o}=$(),[c,i]=_.useState(""),l=_.useRef(null),u=_.useRef(!1);_.useEffect(()=>{typeof s>"u"||i(D(s))},[s]);const d=r=>{if(u.current){u.current=!1;return}const y=r.startsWith("-");let h=St(r);y&&(h=h*-1),h!==s&&(p(h),i(D(h)))},p=r=>{o({id:t,duration:r})},m=()=>{var r;return(r=l.current)==null?void 0:r.select()},f=r=>{var y,h;r.key==="Enter"?((y=l.current)==null||y.blur(),d(r.target.value)):r.key==="Tab"?d(r.target.value):r.key==="Escape"&&(u.current=!0,i(D(s)),(h=l.current)==null||h.blur())},v=r=>{r==="add"?s<0&&p(s*-1):r==="subtract"&&s>0&&p(s*-1)},b=c.startsWith("-")?"subtract":"add";return e.jsxs("div",{className:ie.delayInput,children:[e.jsx(le,{ref:l,"data-testid":"delay-input",className:ie.inputField,placeholder:"-",onFocus:m,onChange:r=>i(r.target.value),onBlur:r=>d(r.target.value),onKeyDown:f,value:c,maxLength:9}),e.jsx(Pt,{onValueChange:v,value:b,items:[{value:"add",label:"Add time"},{value:"subtract",label:"Subtract time"}]})]})}const Ut="_delay_tel5v_17",Ot="_hasCursor_tel5v_34",zt="_drag_tel5v_38",V={delay:Ut,hasCursor:Ot,drag:zt};function Gt({data:n,hasCursor:t}){const{applyDelay:s,deleteEntry:o}=$(),c=_.useRef(null),{attributes:i,listeners:l,setNodeRef:u,isDragging:d,transform:p,transition:m}=Q({id:n.id,data:{type:"delay"},animateLayoutChanges:()=>!1}),f={zIndex:d?2:"inherit",transform:X.Translate.toString(p),transition:m};_.useEffect(()=>{var r;t&&((r=c==null?void 0:c.current)==null||r.focus())},[t]);const v=()=>{s(n.id)},b=()=>{o([n.id])};return e.jsxs("div",{className:N([V.delay,t?V.hasCursor:null]),ref:u,style:f,"data-testid":"rundown-delay",children:[e.jsx("span",{className:V.drag,ref:c,...i,...l,children:e.jsx(Y,{})}),e.jsx(Bt,{eventId:n.id,duration:n.duration}),e.jsxs(se,{onClick:v,variant:"ghosted-white",children:[e.jsx(He,{})," Make permanent"]}),e.jsxs(se,{onClick:b,variant:"ghosted-white",children:[e.jsx(Ke,{}),"Cancel"]})]})}const qt=Ve(n=>({selectedEventId:null,setSelectedEventId:t=>n(()=>({selectedEventId:t})),clearSelectedEventId:()=>n(()=>({selectedEventId:null}))})),Ht="_blink_1uqu6_1",Kt="_fourtyfive_1uqu6_13",Vt="_chip_1uqu6_17",Wt="_over_1uqu6_23",Zt="_under_1uqu6_26",Qt="_due_1uqu6_29",F={blink:Ht,fourtyfive:Kt,chip:Vt,over:Wt,under:Zt,due:Qt};function Xt({timeStart:n,delay:t,dayOffset:s,isPast:o,isLoaded:c,className:i,totalGap:l,id:u,duration:d,isLinkedToLoaded:p}){const{playback:m}=_t();if(c)return null;const f=_e(m);return!f||o?e.jsx(Jt,{className:i,id:u,duration:d}):f?e.jsx(E,{text:"Expected time until start",render:e.jsx("span",{}),className:i,children:e.jsx(Yt,{timeStart:n,delay:t,dayOffset:s,totalGap:l,isLinkedToLoaded:p})}):null}function Yt({timeStart:n,delay:t,dayOffset:s,totalGap:o,isLinkedToLoaded:c}){const i=bt({timeStart:n,delay:t,dayOffset:s},{totalGap:o,isLinkedToLoaded:c}),l=i<ue,u=l?"DUE":`${J(Math.abs(i),i>2*de)}`;return e.jsx("div",{className:N([F.chip,l&&F.due]),children:u})}function Jt(n){const{className:t,id:s,duration:o}=n,{data:c}=wt(),i=c[s],[l,u,d]=_.useMemo(()=>{if(!i)return[null,"none",""];const{startedAt:p,endedAt:m}=i;if(!p||!m)return[null,"none",""];const v=m-p-o,b=Math.abs(v);if(b<ue)return["ontime","under","Event finished on time"];const r=v>0,y=D(b),h=`Event ran ${r?"over":"under"} time by ${y}`;return[`${r?"+":"-"}${J(b,b>2*de)}`,r?"over":"under",h]},[i,o]);return l?e.jsx(E,{text:d,render:e.jsx("span",{}),className:N([F.chip,F[u],t]),children:l==="ontime"?e.jsx(We,{size:"1.1rem"}):l}):null}const en="_blink_bc2h9_1",tn="_fourtyfive_bc2h9_13",nn="_rundownEvent_bc2h9_17",sn="_loaded_bc2h9_39",on="_play_bc2h9_42",rn="_roll_bc2h9_47",an="_pause_bc2h9_52",cn="_selected_bc2h9_57",ln="_hasCursor_bc2h9_60",un="_past_bc2h9_63",dn="_skip_bc2h9_63",pn="_timerNote_bc2h9_63",fn="_statusElements_bc2h9_64",mn="_eventTitle_bc2h9_65",_n="_eventNote_bc2h9_66",bn="_eventTimers_bc2h9_67",hn="_eventStatus_bc2h9_68",vn="_playbackActions_bc2h9_69",yn="_binder_bc2h9_70",gn="_drag_bc2h9_97",xn="_cue_bc2h9_115",jn="_editMode_bc2h9_143",En="_chipSection_bc2h9_148",kn="_titleSection_bc2h9_152",In="_nextTag_bc2h9_158",Sn="_progressBg_bc2h9_171",Cn="_hidden_bc2h9_180",Nn="_flip_bc2h9_184",wn="_statusIcon_bc2h9_218",Tn="_active_bc2h9_222",Rn="_disabled_bc2h9_225",a={blink:en,fourtyfive:tn,rundownEvent:nn,loaded:sn,play:on,roll:rn,pause:an,selected:cn,hasCursor:ln,past:un,skip:dn,timerNote:pn,statusElements:fn,eventTitle:mn,eventNote:_n,eventTimers:bn,eventStatus:hn,playbackActions:vn,binder:yn,drag:gn,cue:xn,editMode:jn,chipSection:En,titleSection:kn,nextTag:In,progressBg:Sn,hidden:Cn,flip:Nn,statusIcon:wn,active:Tn,disabled:Rn},$n=_.memo(An);function An({eventId:n,skip:t,isPlaying:s,isPaused:o,loaded:c,disablePlayback:i}){const{updateEntry:l}=$(),u=f=>{f.stopPropagation(),l({id:n,skip:!t})},d=f=>{f.stopPropagation(),s?M.pause():o?M.start():M.startEvent(n)},p=f=>{f.stopPropagation(),M.loadEvent(n)},m=o?{tooltip:"Continue event",backgroundColor:"#339E4E"}:s?{tooltip:"Pause event",backgroundColor:"#c05621"}:{tooltip:"Start event",backgroundColor:void 0};return e.jsxs("div",{className:a.playbackActions,children:[e.jsx(E,{text:"Skip event",render:e.jsx(q,{variant:"subtle-white"}),onClick:u,tabIndex:-1,disabled:c,style:{background:t?"#9A0000":void 0},"aria-label":"Skip event",children:t?e.jsx(Ze,{}):e.jsx(Qe,{})}),e.jsx(E,{text:"Load event",render:e.jsx(q,{variant:"subtle-white"}),onClick:p,tabIndex:-1,disabled:i,"aria-label":"Load event",children:e.jsx(Xe,{className:a.flip})}),e.jsx(E,{text:m.tooltip,render:e.jsx(q,{variant:"subtle-white"}),onClick:d,tabIndex:-1,disabled:i,style:{backgroundColor:m.backgroundColor},"aria-label":s?"Pause event":"Start event",children:s?e.jsx(Ye,{}):e.jsx(ce,{})})]})}const Dn="_progressBar_1glmb_17",Mn={progressBar:Dn};function Pn(){const n=ht(),t=Tt(n.current,n.duration);return e.jsx("div",{className:Mn.progressBar,style:{width:`${t}%`}})}const Ln=_.memo(Fn);function Fn({eventId:n,timeStart:t,timeEnd:s,duration:o,timeStrategy:c,linkStart:i,countToEnd:l,endAction:u,timerType:d,title:p,note:m,delay:f,isNext:v,skip:b=!1,loaded:r,playback:y,isRolling:h,dayOffset:w,isPast:S,totalGap:T,isLinkedToLoaded:R,hasTriggers:g}){const[x,B]=_.useState(!1),[U]=Je({key:vt.editorMode,defaultValue:oe.Edit});_.useEffect(()=>{B(!0)},[]);const O=y===re.Play,z=y===re.Pause;return x?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:N([a.eventTimers,U===oe.Edit&&a.editMode]),children:e.jsx(Ct,{eventId:n,timeStart:t,timeEnd:s,duration:o,delay:f,timeStrategy:c,linkStart:i,countToEnd:l})}),e.jsxs("div",{className:a.titleSection,children:[e.jsx(Et,{title:p,entryId:n,placeholder:"Event title",className:a.eventTitle}),v&&e.jsx("span",{className:a.nextTag,children:"UP NEXT"})]}),e.jsx($n,{eventId:n,skip:b,isPlaying:O,isPaused:z,loaded:r,disablePlayback:b||h}),!b&&e.jsx(Xt,{className:a.chipSection,id:n,timeStart:t,delay:f,dayOffset:w,isLinkedToLoaded:R,isPast:S,isLoaded:r,totalGap:T,duration:o}),e.jsxs("div",{className:a.statusElements,id:"entry-status","data-timertype":d,children:[e.jsx("span",{className:a.eventNote,children:m}),e.jsx("div",{className:r?a.progressBg:`${a.progressBg} ${a.hidden}`,children:r&&e.jsx(Pn,{})}),e.jsxs("div",{className:a.eventStatus,tabIndex:-1,children:[e.jsx(E,{text:`Time type: ${d}`,render:e.jsx("span",{}),children:e.jsx(Un,{type:d,className:a.statusIcon})}),e.jsx(E,{text:`End action: ${u}`,render:e.jsx("span",{}),children:e.jsx(Bn,{action:u,className:a.statusIcon})}),e.jsx(E,{text:`${l?"Count to End":"Count duration"}`,render:e.jsx("span",{}),children:e.jsx(et,{className:`${a.statusIcon} ${l?a.active:a.disabled}`})}),e.jsx(E,{text:"Event has Triggers",render:e.jsx("span",{}),children:e.jsx(tt,{className:`${a.statusIcon} ${g?a.active:a.disabled}`})})]})]})]}):null}function Bn(n){const{action:t,className:s}=n,o=N([t!==K.None&&a.active,s]);return t===K.LoadNext?e.jsx(it,{className:o}):t===K.PlayNext?e.jsx(at,{className:o}):e.jsx(ce,{className:s})}function Un(n){const{type:t,className:s}=n;return t===H.CountUp?e.jsx(nt,{className:s}):t===H.Clock?e.jsx(st,{className:s}):t===H.None?e.jsx(ot,{className:s}):e.jsx(rt,{className:s})}function On(n,t){if(!t)return;const s=Math.max(0,n+t);return`New start ${yt(D(s))}`}function zn(n,t){if(n===0)return t?"(next day)":void 0;const s=J(Math.abs(n),!1);return`${n<0?"Overlap":"Gap"} ${s}${t?" (next day)":""}`}const Gn="_indicators_duajo_18",qn="_delay_duajo_29",Hn="_gap_duajo_36",W={indicators:Gn,delay:qn,gap:Hn};function Kn({timeStart:n,delay:t,gap:s,isNextDay:o}){const c=zn(s,o),i=On(n,t);return e.jsxs("div",{className:W.indicators,children:[i&&e.jsx("div",{className:W.delay,children:i}),c&&e.jsx("div",{className:W.gap,children:c})]})}function Vn({eventId:n,cue:t,timeStart:s,timeEnd:o,duration:c,timeStrategy:i,linkStart:l,flag:u,countToEnd:d,eventIndex:p,endAction:m,timerType:f,title:v,note:b,delay:r,colour:y,isPast:h,isNext:w,skip:S=!1,parent:T,loaded:R,hasCursor:g,playback:x,isRolling:B,gap:U,isNextDay:O,dayOffset:z,totalGap:be,isLinkedToLoaded:he,hasTriggers:ve,createCloneEvent:ye}){const{selectedEventId:A,setSelectedEventId:ge,clearSelectedEventId:xe}=qt(),{updateEntry:je,batchUpdateEvents:ee,deleteEntry:te,groupEntries:Ee,swapEvents:ke}=$(),{selectedEvents:C,unselect:Ie,setSelectedEvents:Se,clearSelectedEvents:ne}=fe(),k=_.useRef(null),[Ce,Ne]=_.useState(!1),[we]=me(C.size>1?[{type:"item",label:"Link to previous",icon:ct,onClick:()=>{ee({linkStart:!0},Array.from(C))}},{type:"item",label:"Unlink from previous",icon:lt,onClick:()=>{ee({linkStart:!1},Array.from(C))}},{type:"divider"},{type:"item",label:"Group",icon:ut,onClick:()=>{Ee(Array.from(C)),ne()},disabled:T!==null},{type:"divider"},{type:"item",label:"Delete",icon:Z,onClick:()=>{ne(),te(Array.from(C))}}]:[{type:"item",label:u?"Remove flag":"Add flag",icon:dt,onClick:()=>{je({id:n,flag:!u})}},{type:"divider"},{type:"item",label:"Add to swap",icon:pt,onClick:()=>ge(n)},{type:"item",label:`Swap this event with ${A??""}`,icon:ft,onClick:()=>{A&&(ke(A,n),xe())},disabled:A==null||A===n},{type:"item",label:"Clone",icon:mt,onClick:ye},{type:"divider"},{type:"item",label:"Delete",icon:Z,onClick:()=>{te([n]),Ie(n)}}]),{isDragging:Te,attributes:Re,listeners:$e,setNodeRef:Ae,transform:De,transition:Me}=Q({id:n,data:{type:"event",parent:T},animateLayoutChanges:()=>!1}),Pe={zIndex:Te?2:"inherit",transform:X.Translate.toString(De),transition:Me},Le=y&&pe(y);_.useEffect(()=>{if(!g||(k==null?void 0:k.current)==null)return;const I=document.activeElement,j=k.current.closest("#event-group");j&&!j.contains(I)&&k.current.focus()},[g]),_.useLayoutEffect(()=>{const I=new IntersectionObserver(([G])=>{G.isIntersecting&&Ne(!0)},{root:null,threshold:1}),j=k.current;return j&&I.observe(j),()=>{j&&I.unobserve(j)}},[k]);const Fe=C.has(n),Be=N([a.rundownEvent,S?a.skip:null,h?a.past:null,R?a.loaded:null,x?a[x]:null,Fe?a.selected:null,g?a.hasCursor:null]),Ue=I=>{if(I.stopPropagation(),C.size>1&&I.button===2)return;const j=p-1,G=kt(I);Se({id:n,index:j,selectMode:G})},Oe=x?_e(x):!1;return e.jsxs("div",{className:Be,ref:Ae,style:Pe,onClick:Ue,onContextMenu:we,"data-testid":"rundown-event",...Oe?{"data-running":!0}:{},children:[e.jsx(Kn,{timeStart:s,delay:r,gap:U,isNextDay:O}),e.jsxs("div",{className:a.binder,style:{...Le},tabIndex:-1,children:[e.jsx("span",{className:a.drag,ref:k,...Re,...$e,children:e.jsx(Y,{})}),e.jsx("span",{className:a.cue,children:t})]}),Ce&&e.jsx(Ln,{timeStart:s,timeEnd:o,duration:c,linkStart:l,countToEnd:d,timeStrategy:i,eventId:n,eventIndex:p,endAction:m,timerType:f,title:v,note:b,delay:r,isNext:w,skip:S,loaded:R,playback:x,isRolling:B,dayOffset:z,isPast:h,totalGap:be,isLinkedToLoaded:he,hasTriggers:ve})]})}const Wn="_milestone_102sw_17",Zn="_hasCursor_102sw_35",Qn="_binder_102sw_39",Xn="_drag_102sw_47",L={milestone:Wn,hasCursor:Zn,binder:Qn,drag:Xn};function Yn({colour:n,cue:t,entryId:s,hasCursor:o,title:c}){const i=_.useRef(null),{updateEntry:l,deleteEntry:u}=$(),{selectedEvents:d,setSingleEntrySelection:p}=fe(),[m]=me([{type:"item",label:"Delete",icon:Z,onClick:()=>u([s])}]),{attributes:f,listeners:v,setNodeRef:b,isDragging:r,transform:y,transition:h}=Q({id:s,data:{type:"milestone"},animateLayoutChanges:()=>!1}),w=g=>{g.stopPropagation(),!(d.size>1&&g.button===2)&&p({id:s})},S=(g,x)=>{l({id:s,[g]:x})},T={zIndex:r?2:"inherit",transform:X.Translate.toString(y),transition:h},R=n&&pe(n);return e.jsxs("div",{className:N([L.milestone,o?L.hasCursor:null]),ref:b,onClick:w,onContextMenu:m,style:T,"data-testid":"rundown-milestone",children:[e.jsx("div",{className:L.binder,style:{...R},children:e.jsx("span",{className:L.drag,ref:i,...f,...v,children:e.jsx(Y,{})})}),e.jsx(ae,{field:"cue",initialValue:t,placeholder:"Cue",submitHandler:S}),e.jsx(ae,{field:"title",initialValue:c,placeholder:"Title",submitHandler:S})]})}function ae({field:n,initialValue:t,placeholder:s,submitHandler:o}){const c=_.useRef(null),i=_.useCallback(m=>o(n,m),[n,o]),{value:l,onChange:u,onBlur:d,onKeyDown:p}=Nt(t,i,c,{submitOnEnter:!0});return e.jsx(le,{id:n,ref:c,fluid:!0,value:l,placeholder:s,onChange:u,onBlur:d,onKeyDown:p})}function Es({isPast:n,data:t,loaded:s,hasCursor:o,isNext:c,playback:i,isRolling:l,eventIndex:u,isNextDay:d,totalGap:p,isLinkedToLoaded:m}){const{addEntry:f}=$(),v=Rt(()=>{const b=It(t);f(b,{after:t.id})});return gt(t)?e.jsx(Vn,{eventId:t.id,eventIndex:u,cue:t.cue,timeStart:t.timeStart,timeEnd:t.timeEnd,duration:t.duration,timeStrategy:t.timeStrategy,linkStart:t.linkStart,flag:t.flag,countToEnd:t.countToEnd,endAction:t.endAction,timerType:t.timerType,title:t.title,note:t.note,delay:t.delay,colour:t.colour,isPast:n,isNext:c,skip:t.skip,parent:t.parent,loaded:s,hasCursor:o,playback:i,isRolling:l,gap:t.gap,isNextDay:d,dayOffset:t.dayOffset,totalGap:p,isLinkedToLoaded:m,createCloneEvent:v,hasTriggers:t.triggers.length>0}):xt(t)?e.jsx(Gt,{data:t,hasCursor:o}):jt(t)?e.jsx(Yn,{colour:t.colour,cue:t.cue,entryId:t.id,hasCursor:o,title:t.title}):null}export{Es as default};
|
|
2
|
-
//# sourceMappingURL=RundownEntry-Bs1ombtH.js.map
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RundownEntry-Bs1ombtH.js","sources":["../../src/common/hooks/useMemoisedFn.ts","../../src/common/components/input/delay-input/BlockRadio.tsx","../../src/common/components/input/delay-input/DelayInput.tsx","../../src/features/rundown/rundown-delay/RundownDelay.tsx","../../src/features/rundown/useEventIdSwapping.ts","../../src/features/rundown/rundown-event/composite/RundownEventChip.tsx","../../src/features/rundown/rundown-event/composite/RundownEventPlayback.tsx","../../src/features/rundown/rundown-event/composite/RundownEventProgressBar.tsx","../../src/features/rundown/rundown-event/RundownEventInner.tsx","../../src/features/rundown/rundown-event/rundownEvent.utils.ts","../../src/features/rundown/rundown-event/RundownIndicators.tsx","../../src/features/rundown/rundown-event/RundownEvent.tsx","../../src/features/rundown/rundown-milestone/RundownMilestone.tsx","../../src/features/rundown/RundownEntry.tsx"],"sourcesContent":["/**\n * Shamelessly from https://ahooks.js.org/hooks/use-memoized-fn/\n * Interesting technique discussed by Dan Abramov\n * https://overreacted.io/making-setinterval-declarative-with-react-hooks/\n */\n\nimport { useMemo, useRef } from 'react';\n\nimport { isDev } from '../../externals';\n\ntype noop = (this: any, ...args: any[]) => any;\n\ntype PickFunction<T extends noop> = (this: ThisParameterType<T>, ...args: Parameters<T>) => ReturnType<T>;\n\nconst isFunction = (value: unknown): value is (...args: any) => any => typeof value === 'function';\n\nexport default function useMemoisedFn<T extends noop>(fn: T) {\n if (isDev) {\n if (!isFunction(fn)) {\n console.error(`useMemoisedFn expected function as parameter, got ${typeof fn}`);\n }\n }\n\n const fnRef = useRef<T>(fn);\n\n // why not write `fnRef.current = fn`?\n // https://github.com/alibaba/hooks/issues/728\n fnRef.current = useMemo(() => fn, [fn]);\n\n const memoizedFn = useRef<PickFunction<T>>(undefined);\n if (!memoizedFn.current) {\n memoizedFn.current = function (this, ...args) {\n return fnRef.current.apply(this, args);\n };\n }\n\n return memoizedFn.current as T;\n}\n","import { Radio } from '@base-ui-components/react/radio';\nimport { RadioGroup as BaseRadioGroup } from '@base-ui-components/react/radio-group';\n\nimport style from './BlockRadio.module.scss';\n\ninterface BlockRadioProps<T extends string | number | boolean> extends Omit<BaseRadioGroup.Props, 'onValueChange'> {\n items: {\n value: T;\n label: string;\n }[];\n onValueChange?: (value: T) => void;\n}\n\nexport default function BlockRadio<T extends string | number | boolean>({\n items,\n onValueChange,\n ...elementProps\n}: BlockRadioProps<T>) {\n return (\n <BaseRadioGroup\n onValueChange={(value) => onValueChange?.(value as T)}\n className={style.radioGroup}\n {...elementProps}\n >\n {items.map((item) => (\n <label className={style.item} key={item.value.toString()}>\n <Radio.Root value={item.value.toString()} className={style.radio}>\n <Radio.Indicator className={style.indicator} />\n </Radio.Root>\n {item.label}\n </label>\n ))}\n </BaseRadioGroup>\n );\n}\n","import { KeyboardEvent, useEffect, useRef, useState } from 'react';\nimport { millisToString, parseUserTime } from 'ontime-utils';\n\nimport { useEntryActions } from '../../../hooks/useEntryAction';\nimport Input from '../input/Input';\n\nimport BlockRadio from './BlockRadio';\n\nimport style from './DelayInput.module.scss';\n\ninterface DelayInputProps {\n eventId: string;\n duration: number;\n}\n\nexport default function DelayInput(props: DelayInputProps) {\n const { eventId, duration } = props;\n const { updateEntry } = useEntryActions();\n\n const [value, setValue] = useState<string>('');\n const inputRef = useRef<HTMLInputElement | null>(null);\n // avoid wrong submit on cancel\n const ignoreChangeRef = useRef(false);\n\n // set internal value on duration change\n useEffect(() => {\n if (typeof duration === 'undefined') {\n return;\n }\n setValue(millisToString(duration));\n }, [duration]);\n\n /**\n * @description Prepare delay value for update\n * @param {string} newValue string to be parsed\n */\n const validateAndSubmit = (newValue: string) => {\n if (ignoreChangeRef.current) {\n ignoreChangeRef.current = false;\n return;\n }\n\n const isNegative = newValue.startsWith('-');\n let newMillis = parseUserTime(newValue);\n\n if (isNegative) {\n newMillis = newMillis * -1;\n }\n\n if (newMillis === duration) {\n return;\n }\n\n submitChange(newMillis);\n setValue(millisToString(newMillis));\n };\n\n const submitChange = (value: number) => {\n updateEntry({\n id: eventId,\n duration: value,\n });\n };\n\n /**\n * @description Selects input text on focus\n */\n const handleFocus = () => inputRef.current?.select();\n\n /**\n * @description Handles common keys for submit and cancel\n * @param {KeyboardEvent} event\n */\n const onKeyDownHandler = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n inputRef.current?.blur();\n validateAndSubmit((event.target as HTMLInputElement).value);\n } else if (event.key === 'Tab') {\n validateAndSubmit((event.target as HTMLInputElement).value);\n } else if (event.key === 'Escape') {\n ignoreChangeRef.current = true;\n setValue(millisToString(duration));\n inputRef.current?.blur();\n }\n };\n\n /**\n * @description handles direction change to delay\n * @param newDirection\n */\n const handleSlipChange = (newDirection: 'add' | 'subtract') => {\n if (newDirection === 'add') {\n // add time\n if (duration < 0) {\n submitChange(duration * -1);\n }\n } else if (newDirection === 'subtract') {\n // subtract time\n if (duration > 0) {\n submitChange(duration * -1);\n }\n }\n };\n\n const checkedOption = value.startsWith('-') ? 'subtract' : 'add';\n\n return (\n <div className={style.delayInput}>\n <Input\n ref={inputRef}\n data-testid='delay-input'\n className={style.inputField}\n placeholder='-'\n onFocus={handleFocus}\n onChange={(event) => setValue(event.target.value)}\n onBlur={(event) => validateAndSubmit(event.target.value)}\n onKeyDown={onKeyDownHandler}\n value={value}\n maxLength={9}\n />\n <BlockRadio\n onValueChange={handleSlipChange}\n value={checkedOption}\n items={[\n { value: 'add', label: 'Add time' },\n { value: 'subtract', label: 'Subtract time' },\n ]}\n />\n </div>\n );\n}\n","import { useEffect, useRef } from 'react';\nimport { IoCheckmarkDone, IoClose, IoReorderTwo } from 'react-icons/io5';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { OntimeDelay } from 'ontime-types';\n\nimport Button from '../../../common/components/buttons/Button';\nimport DelayInput from '../../../common/components/input/delay-input/DelayInput';\nimport { useEntryActions } from '../../../common/hooks/useEntryAction';\nimport { cx } from '../../../common/utils/styleUtils';\n\nimport style from './RundownDelay.module.scss';\n\ninterface RundownDelayProps {\n data: OntimeDelay;\n hasCursor: boolean;\n}\n\nexport default function RundownDelay({ data, hasCursor }: RundownDelayProps) {\n const { applyDelay, deleteEntry } = useEntryActions();\n const handleRef = useRef<null | HTMLSpanElement>(null);\n\n const {\n attributes: dragAttributes,\n listeners: dragListeners,\n setNodeRef,\n isDragging,\n transform,\n transition,\n } = useSortable({\n id: data.id,\n data: {\n type: 'delay',\n },\n animateLayoutChanges: () => false,\n });\n\n const dragStyle = {\n zIndex: isDragging ? 2 : 'inherit',\n transform: CSS.Translate.toString(transform),\n transition,\n };\n\n useEffect(() => {\n if (hasCursor) {\n handleRef?.current?.focus();\n }\n }, [hasCursor]);\n\n const applyDelayHandler = () => {\n applyDelay(data.id);\n };\n\n const cancelDelayHandler = () => {\n deleteEntry([data.id]);\n };\n\n return (\n <div\n className={cx([style.delay, hasCursor ? style.hasCursor : null])}\n ref={setNodeRef}\n style={dragStyle}\n data-testid='rundown-delay'\n >\n <span className={style.drag} ref={handleRef} {...dragAttributes} {...dragListeners}>\n <IoReorderTwo />\n </span>\n <DelayInput eventId={data.id} duration={data.duration} />\n <Button onClick={applyDelayHandler} variant='ghosted-white'>\n <IoCheckmarkDone /> Make permanent\n </Button>\n <Button onClick={cancelDelayHandler} variant='ghosted-white'>\n <IoClose />\n Cancel\n </Button>\n </div>\n );\n}\n","import { create } from 'zustand';\n\ninterface EventIdSwappingStore {\n selectedEventId: string | null;\n setSelectedEventId: (newEventId: string | null) => void;\n clearSelectedEventId: () => void;\n}\n\nexport const useEventIdSwapping = create<EventIdSwappingStore>((set) => ({\n selectedEventId: null,\n setSelectedEventId: (newEventId) => set(() => ({ selectedEventId: newEventId })),\n clearSelectedEventId: () => set(() => ({ selectedEventId: null })),\n}));\n","import { useMemo } from 'react';\nimport { IoCheckmarkCircle } from 'react-icons/io5';\nimport { isPlaybackActive, MILLIS_PER_MINUTE, MILLIS_PER_SECOND, millisToString } from 'ontime-utils';\n\nimport Tooltip from '../../../../common/components/tooltip/Tooltip';\nimport { usePlayback } from '../../../../common/hooks/useSocket';\nimport useReport from '../../../../common/hooks-query/useReport';\nimport { cx } from '../../../../common/utils/styleUtils';\nimport { formatDuration, useTimeUntilExpectedStart } from '../../../../common/utils/time';\n\nimport style from './RundownEventChip.module.scss';\n\ninterface RundownEventChipProps {\n id: string;\n timeStart: number;\n delay: number;\n dayOffset: number;\n isPast: boolean;\n isLoaded: boolean;\n className: string;\n totalGap: number;\n duration: number;\n isLinkedToLoaded: boolean;\n}\n\nexport default function RundownEventChip({\n timeStart,\n delay,\n dayOffset,\n isPast,\n isLoaded,\n className,\n totalGap,\n id,\n duration,\n isLinkedToLoaded,\n}: RundownEventChipProps) {\n const { playback } = usePlayback();\n\n if (isLoaded) {\n return null;\n }\n\n const playbackActive = isPlaybackActive(playback);\n\n if (!playbackActive || isPast) {\n return <EventReport className={className} id={id} duration={duration} />;\n }\n\n if (playbackActive) {\n // we extracted the component to avoid unnecessary calculations and re-renders\n return (\n <Tooltip text='Expected time until start' render={<span />} className={className}>\n <EventUntil\n timeStart={timeStart}\n delay={delay}\n dayOffset={dayOffset}\n totalGap={totalGap}\n isLinkedToLoaded={isLinkedToLoaded}\n />\n </Tooltip>\n );\n }\n\n return null;\n}\n\ninterface EventUntilProps {\n timeStart: number;\n delay: number;\n dayOffset: number;\n totalGap: number;\n isLinkedToLoaded: boolean;\n}\n\nfunction EventUntil({ timeStart, delay, dayOffset, totalGap, isLinkedToLoaded }: EventUntilProps) {\n const timeUntil = useTimeUntilExpectedStart({ timeStart, delay, dayOffset }, { totalGap, isLinkedToLoaded });\n const isDue = timeUntil < MILLIS_PER_SECOND;\n\n const timeUntilString = isDue ? 'DUE' : `${formatDuration(Math.abs(timeUntil), timeUntil > 2 * MILLIS_PER_MINUTE)}`;\n\n return <div className={cx([style.chip, isDue && style.due])}>{timeUntilString}</div>;\n}\n\ninterface EventReportProps {\n className: string;\n id: string;\n duration: number;\n}\n\nfunction EventReport(props: EventReportProps) {\n const { className, id, duration } = props;\n const { data } = useReport();\n const currentReport = data[id];\n\n const [value, overUnderStyle, tooltip] = useMemo(() => {\n if (!currentReport) {\n return [null, 'none', ''];\n }\n\n const { startedAt, endedAt } = currentReport;\n if (!startedAt || !endedAt) {\n return [null, 'none', ''];\n }\n\n const actualDuration = endedAt - startedAt;\n const difference = actualDuration - duration;\n const absDifference = Math.abs(difference);\n\n if (absDifference < MILLIS_PER_SECOND) {\n return ['ontime', 'under', 'Event finished on time'];\n }\n\n const isOver = difference > 0;\n\n const fullTimeValue = millisToString(absDifference);\n\n const tooltip = `Event ran ${isOver ? 'over' : 'under'} time by ${fullTimeValue}`;\n\n const value = `${isOver ? '+' : '-'}${formatDuration(absDifference, absDifference > 2 * MILLIS_PER_MINUTE)}`;\n return [value, isOver ? 'over' : 'under', tooltip];\n }, [currentReport, duration]);\n\n if (!value) {\n return null;\n }\n\n return (\n <Tooltip text={tooltip} render={<span />} className={cx([style.chip, style[overUnderStyle], className])}>\n {value === 'ontime' ? <IoCheckmarkCircle size='1.1rem' /> : value}\n </Tooltip>\n );\n}\n","import { memo, MouseEvent } from 'react';\nimport { IoPause, IoPlay, IoReload, IoRemoveCircle, IoRemoveCircleOutline } from 'react-icons/io5';\n\nimport IconButton from '../../../../common/components/buttons/IconButton';\nimport Tooltip from '../../../../common/components/tooltip/Tooltip';\nimport { useEntryActions } from '../../../../common/hooks/useEntryAction';\nimport { setEventPlayback } from '../../../../common/hooks/useSocket';\n\nimport style from '../RundownEvent.module.scss';\n\ninterface RundownEventPlaybackProps {\n eventId: string;\n skip: boolean;\n isPlaying: boolean;\n isPaused: boolean;\n loaded: boolean;\n disablePlayback: boolean;\n}\n\nexport default memo(RundownEventPlayback);\nfunction RundownEventPlayback({\n eventId,\n skip,\n isPlaying,\n isPaused,\n loaded,\n disablePlayback,\n}: RundownEventPlaybackProps) {\n const { updateEntry } = useEntryActions();\n\n const toggleSkip = (event: MouseEvent) => {\n event.stopPropagation();\n updateEntry({ id: eventId, skip: !skip });\n };\n\n const actionHandler = (event: MouseEvent) => {\n event.stopPropagation();\n // is playing -> pause\n // is paused -> continue\n // otherwise -> start\n if (isPlaying) {\n setEventPlayback.pause();\n } else if (isPaused) {\n setEventPlayback.start();\n } else {\n setEventPlayback.startEvent(eventId);\n }\n };\n\n const load = (event: MouseEvent) => {\n event.stopPropagation();\n setEventPlayback.loadEvent(eventId);\n };\n\n const playButtonStyles: { tooltip: string; backgroundColor: string | undefined } = (() => {\n if (isPaused) {\n return {\n tooltip: 'Continue event',\n backgroundColor: '#339E4E',\n };\n }\n\n if (isPlaying) {\n return {\n tooltip: 'Pause event',\n backgroundColor: '#c05621',\n };\n }\n return {\n tooltip: 'Start event',\n backgroundColor: undefined,\n };\n })();\n\n return (\n <div className={style.playbackActions}>\n <Tooltip\n text='Skip event'\n render={<IconButton variant='subtle-white' />}\n onClick={toggleSkip}\n tabIndex={-1}\n disabled={loaded}\n style={{\n background: skip ? '#9A0000' : undefined,\n }}\n aria-label='Skip event'\n >\n {skip ? <IoRemoveCircle /> : <IoRemoveCircleOutline />}\n </Tooltip>\n\n <Tooltip\n text='Load event'\n render={<IconButton variant='subtle-white' />}\n onClick={load}\n tabIndex={-1}\n disabled={disablePlayback}\n aria-label='Load event'\n >\n <IoReload className={style.flip} />\n </Tooltip>\n\n <Tooltip\n text={playButtonStyles.tooltip}\n render={<IconButton variant='subtle-white' />}\n onClick={actionHandler}\n tabIndex={-1}\n disabled={disablePlayback}\n style={{\n backgroundColor: playButtonStyles.backgroundColor,\n }}\n aria-label={isPlaying ? 'Pause event' : 'Start event'}\n >\n {!isPlaying ? <IoPlay /> : <IoPause />}\n </Tooltip>\n </div>\n );\n}\n","import { useTimer } from '../../../../common/hooks/useSocket';\nimport { getProgress } from '../../../../common/utils/getProgress';\n\nimport style from './RundownEventProgressBar.module.scss';\n\nexport default function RundownEventProgressBar() {\n const timer = useTimer();\n\n const progress = getProgress(timer.current, timer.duration);\n\n return <div className={style.progressBar} style={{ width: `${progress}%` }} />;\n}\n","import { memo, useEffect, useState } from 'react';\nimport {\n IoArrowDown,\n IoArrowUp,\n IoBan,\n IoFlash,\n IoPlay,\n IoPlayForward,\n IoPlaySkipForward,\n IoTime,\n} from 'react-icons/io5';\nimport { LuArrowDownToLine } from 'react-icons/lu';\nimport { useSessionStorage } from '@mantine/hooks';\nimport { EndAction, Playback, TimerType, TimeStrategy } from 'ontime-types';\n\nimport Tooltip from '../../../common/components/tooltip/Tooltip';\nimport { cx } from '../../../common/utils/styleUtils';\nimport { AppMode, sessionKeys } from '../../../ontimeConfig';\nimport TitleEditor from '../common/TitleEditor';\nimport TimeInputFlow from '../time-input-flow/TimeInputFlow';\n\nimport RundownEventChip from './composite/RundownEventChip';\nimport EventBlockPlayback from './composite/RundownEventPlayback';\nimport EventBlockProgressBar from './composite/RundownEventProgressBar';\n\nimport style from './RundownEvent.module.scss';\n\ninterface RundownEventInnerProps {\n eventId: string;\n timeStart: number;\n timeEnd: number;\n duration: number;\n timeStrategy: TimeStrategy;\n linkStart: boolean;\n countToEnd: boolean;\n eventIndex: number;\n endAction: EndAction;\n timerType: TimerType;\n title: string;\n note: string;\n delay: number;\n isNext: boolean;\n skip: boolean;\n loaded: boolean;\n playback?: Playback;\n isRolling: boolean;\n dayOffset: number;\n isPast: boolean;\n totalGap: number;\n isLinkedToLoaded: boolean;\n hasTriggers: boolean;\n}\n\nexport default memo(RundownEventInner);\nfunction RundownEventInner({\n eventId,\n timeStart,\n timeEnd,\n duration,\n timeStrategy,\n linkStart,\n countToEnd,\n endAction,\n timerType,\n title,\n note,\n delay,\n isNext,\n skip = false,\n loaded,\n playback,\n isRolling,\n dayOffset,\n isPast,\n totalGap,\n isLinkedToLoaded,\n hasTriggers,\n}: RundownEventInnerProps) {\n const [renderInner, setRenderInner] = useState(false);\n\n const [editorMode] = useSessionStorage({\n key: sessionKeys.editorMode,\n defaultValue: AppMode.Edit,\n });\n\n useEffect(() => {\n setRenderInner(true);\n }, []);\n\n const eventIsPlaying = playback === Playback.Play;\n const eventIsPaused = playback === Playback.Pause;\n\n const playBtnStyles = { _hover: {} };\n if (!skip && eventIsPlaying) {\n playBtnStyles._hover = { bg: '#c05621' }; // $ontime-paused\n } else if (!skip && !eventIsPlaying) {\n playBtnStyles._hover = {};\n }\n\n return !renderInner ? null : (\n <>\n <div className={cx([style.eventTimers, editorMode === AppMode.Edit && style.editMode])}>\n <TimeInputFlow\n eventId={eventId}\n timeStart={timeStart}\n timeEnd={timeEnd}\n duration={duration}\n delay={delay}\n timeStrategy={timeStrategy}\n linkStart={linkStart}\n countToEnd={countToEnd}\n />\n </div>\n <div className={style.titleSection}>\n <TitleEditor title={title} entryId={eventId} placeholder='Event title' className={style.eventTitle} />\n {isNext && <span className={style.nextTag}>UP NEXT</span>}\n </div>\n <EventBlockPlayback\n eventId={eventId}\n skip={skip}\n isPlaying={eventIsPlaying}\n isPaused={eventIsPaused}\n loaded={loaded}\n disablePlayback={skip || isRolling}\n />\n {!skip && (\n <RundownEventChip\n className={style.chipSection}\n id={eventId}\n timeStart={timeStart}\n delay={delay}\n dayOffset={dayOffset}\n isLinkedToLoaded={isLinkedToLoaded}\n isPast={isPast}\n isLoaded={loaded}\n totalGap={totalGap}\n duration={duration}\n />\n )}\n <div className={style.statusElements} id='entry-status' data-timertype={timerType}>\n <span className={style.eventNote}>{note}</span>\n <div className={loaded ? style.progressBg : `${style.progressBg} ${style.hidden}`}>\n {loaded && <EventBlockProgressBar />}\n </div>\n <div className={style.eventStatus} tabIndex={-1}>\n <Tooltip text={`Time type: ${timerType}`} render={<span />}>\n <TimerIcon type={timerType} className={style.statusIcon} />\n </Tooltip>\n <Tooltip text={`End action: ${endAction}`} render={<span />}>\n <EndActionIcon action={endAction} className={style.statusIcon} />\n </Tooltip>\n <Tooltip text={`${countToEnd ? 'Count to End' : 'Count duration'}`} render={<span />}>\n <LuArrowDownToLine className={`${style.statusIcon} ${countToEnd ? style.active : style.disabled}`} />\n </Tooltip>\n <Tooltip text='Event has Triggers' render={<span />}>\n <IoFlash className={`${style.statusIcon} ${hasTriggers ? style.active : style.disabled}`} />\n </Tooltip>\n </div>\n </div>\n </>\n );\n}\n\nfunction EndActionIcon(props: { action: EndAction; className: string }) {\n const { action, className } = props;\n const maybeActiveClasses = cx([action !== EndAction.None && style.active, className]);\n\n if (action === EndAction.LoadNext) {\n return <IoPlaySkipForward className={maybeActiveClasses} />;\n }\n if (action === EndAction.PlayNext) {\n return <IoPlayForward className={maybeActiveClasses} />;\n }\n return <IoPlay className={className} />;\n}\n\nfunction TimerIcon(props: { type: TimerType; className: string }) {\n const { type, className } = props;\n if (type === TimerType.CountUp) {\n return <IoArrowUp className={className} />;\n }\n if (type === TimerType.Clock) {\n return <IoTime className={className} />;\n }\n if (type === TimerType.None) {\n return <IoBan className={className} />;\n }\n return <IoArrowDown className={className} />;\n}\n","import { millisToString, removeTrailingZero } from 'ontime-utils';\n\nimport { formatDuration } from '../../../common/utils/time';\n\nexport function formatDelay(timeStart: number, delay: number): string | undefined {\n if (!delay) return;\n\n const delayedStart = Math.max(0, timeStart + delay);\n\n const timeTag = removeTrailingZero(millisToString(delayedStart));\n return `New start ${timeTag}`;\n}\nexport function formatGap(gap: number, isNextDay: boolean) {\n if (gap === 0) {\n if (isNextDay) {\n // We show a next day warning even if there is no gap\n return '(next day)';\n }\n return;\n }\n\n const gapString = formatDuration(Math.abs(gap), false);\n return `${gap < 0 ? 'Overlap' : 'Gap'} ${gapString}${isNextDay ? ' (next day)' : ''}`;\n}\n","import { formatDelay, formatGap } from './rundownEvent.utils';\n\nimport style from './RundownIndicators.module.scss';\n\ninterface RundownIndicatorProps {\n timeStart: number;\n isNextDay: boolean;\n delay: number;\n gap: number;\n}\n\nexport default function RundownIndicators({ timeStart, delay, gap, isNextDay }: RundownIndicatorProps) {\n const hasGap = formatGap(gap, isNextDay);\n const hasDelay = formatDelay(timeStart, delay);\n\n return (\n <div className={style.indicators}>\n {hasDelay && <div className={style.delay}>{hasDelay}</div>}\n {hasGap && <div className={style.gap}>{hasGap}</div>}\n </div>\n );\n}\n","import { MouseEvent, useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport {\n IoAdd,\n IoDuplicateOutline,\n IoFolder,\n IoLink,\n IoReorderTwo,\n IoSwapVertical,\n IoTrash,\n IoUnlink,\n} from 'react-icons/io5';\nimport { TbFlagFilled } from 'react-icons/tb';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { EndAction, EntryId, Playback, TimerType, TimeStrategy } from 'ontime-types';\nimport { isPlaybackActive } from 'ontime-utils';\n\nimport { useContextMenu } from '../../../common/hooks/useContextMenu';\nimport { useEntryActions } from '../../../common/hooks/useEntryAction';\nimport { cx, getAccessibleColour } from '../../../common/utils/styleUtils';\nimport { useEventIdSwapping } from '../useEventIdSwapping';\nimport { getSelectionMode, useEventSelection } from '../useEventSelection';\n\nimport RundownEventInner from './RundownEventInner';\nimport RundownIndicators from './RundownIndicators';\n\nimport style from './RundownEvent.module.scss';\n\ninterface RundownEventProps {\n eventId: EntryId;\n cue: string;\n timeStart: number;\n timeEnd: number;\n duration: number;\n timeStrategy: TimeStrategy;\n linkStart: boolean;\n flag: boolean;\n countToEnd: boolean;\n eventIndex: number;\n endAction: EndAction;\n timerType: TimerType;\n title: string;\n note: string;\n delay: number;\n colour: string;\n isPast: boolean;\n isNext: boolean;\n skip: boolean;\n parent: EntryId | null;\n loaded: boolean;\n hasCursor: boolean;\n playback?: Playback;\n isRolling: boolean;\n gap: number;\n isNextDay: boolean;\n dayOffset: number;\n totalGap: number;\n isLinkedToLoaded: boolean;\n createCloneEvent: () => void;\n hasTriggers: boolean;\n}\n\nexport default function RundownEvent({\n eventId,\n cue,\n timeStart,\n timeEnd,\n duration,\n timeStrategy,\n linkStart,\n flag,\n countToEnd,\n eventIndex,\n endAction,\n timerType,\n title,\n note,\n delay,\n colour,\n isPast,\n isNext,\n skip = false,\n parent,\n loaded,\n hasCursor,\n playback,\n isRolling,\n gap,\n isNextDay,\n dayOffset,\n totalGap,\n isLinkedToLoaded,\n hasTriggers,\n createCloneEvent,\n}: RundownEventProps) {\n const { selectedEventId, setSelectedEventId, clearSelectedEventId } = useEventIdSwapping();\n const { updateEntry, batchUpdateEvents, deleteEntry, groupEntries, swapEvents } = useEntryActions();\n\n const { selectedEvents, unselect, setSelectedEvents, clearSelectedEvents } = useEventSelection();\n const handleRef = useRef<null | HTMLSpanElement>(null);\n const [isVisible, setIsVisible] = useState(false);\n\n const [onContextMenu] = useContextMenu<HTMLDivElement>(\n selectedEvents.size > 1\n ? [\n {\n type: 'item',\n label: 'Link to previous',\n icon: IoLink,\n onClick: () => {\n batchUpdateEvents({ linkStart: true }, Array.from(selectedEvents));\n },\n },\n {\n type: 'item',\n label: 'Unlink from previous',\n icon: IoUnlink,\n onClick: () => {\n batchUpdateEvents({ linkStart: false }, Array.from(selectedEvents));\n },\n },\n { type: 'divider' },\n {\n type: 'item',\n label: 'Group',\n icon: IoFolder,\n onClick: () => {\n groupEntries(Array.from(selectedEvents));\n clearSelectedEvents();\n },\n disabled: parent !== null,\n },\n { type: 'divider' },\n {\n type: 'item',\n label: 'Delete',\n icon: IoTrash,\n onClick: () => {\n clearSelectedEvents();\n deleteEntry(Array.from(selectedEvents));\n },\n },\n ]\n : [\n {\n type: 'item',\n label: flag ? 'Remove flag' : 'Add flag',\n icon: TbFlagFilled,\n onClick: () => {\n updateEntry({ id: eventId, flag: !flag });\n },\n },\n { type: 'divider' },\n {\n type: 'item',\n label: 'Add to swap',\n icon: IoAdd,\n onClick: () => setSelectedEventId(eventId),\n },\n {\n type: 'item',\n label: `Swap this event with ${selectedEventId ?? ''}`,\n icon: IoSwapVertical,\n onClick: () => {\n if (!selectedEventId) return;\n swapEvents(selectedEventId, eventId);\n clearSelectedEventId();\n },\n disabled: selectedEventId == null || selectedEventId === eventId,\n },\n {\n type: 'item',\n label: 'Clone',\n icon: IoDuplicateOutline,\n onClick: createCloneEvent,\n },\n { type: 'divider' },\n {\n type: 'item',\n label: 'Delete',\n icon: IoTrash,\n onClick: () => {\n deleteEntry([eventId]);\n unselect(eventId);\n },\n },\n ],\n );\n\n const {\n isDragging,\n attributes: dragAttributes,\n listeners: dragListeners,\n setNodeRef,\n transform,\n transition,\n } = useSortable({\n id: eventId,\n data: {\n type: 'event',\n parent,\n },\n animateLayoutChanges: () => false,\n });\n\n const dragStyle = {\n zIndex: isDragging ? 2 : 'inherit',\n transform: CSS.Translate.toString(transform),\n transition,\n };\n\n const binderColours = colour && getAccessibleColour(colour);\n\n // move focus to element if necessary\n useEffect(() => {\n if (!hasCursor || handleRef?.current == null) {\n return;\n }\n\n const elementInFocus = document.activeElement;\n // we know the group is the grandparent of our binder\n const blockElement = handleRef.current.closest('#event-group');\n\n // we only move focus if the block doesnt already contain focus\n if (blockElement && !blockElement.contains(elementInFocus)) {\n handleRef.current.focus();\n }\n }, [hasCursor]);\n\n useLayoutEffect(() => {\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setIsVisible(true);\n }\n },\n {\n root: null,\n threshold: 1,\n },\n );\n\n const handleRefCurrent = handleRef.current;\n if (handleRefCurrent) {\n observer.observe(handleRefCurrent);\n }\n\n return () => {\n if (handleRefCurrent) {\n observer.unobserve(handleRefCurrent);\n }\n };\n }, [handleRef]);\n\n const isSelected = selectedEvents.has(eventId);\n const blockClasses = cx([\n style.rundownEvent,\n skip ? style.skip : null,\n isPast ? style.past : null,\n loaded ? style.loaded : null,\n playback ? style[playback] : null,\n isSelected ? style.selected : null,\n hasCursor ? style.hasCursor : null,\n ]);\n\n const handleFocusClick = (event: MouseEvent) => {\n event.stopPropagation();\n\n // event.button === 2 is a right-click\n // disable selection if the user selected events and right clicks\n // so the context menu shows up\n if (selectedEvents.size > 1 && event.button === 2) {\n return;\n }\n\n // UI indexes are 1 based\n const index = eventIndex - 1;\n const editMode = getSelectionMode(event);\n setSelectedEvents({ id: eventId, index, selectMode: editMode });\n };\n\n const isPlaying = playback ? isPlaybackActive(playback) : false;\n\n return (\n <div\n className={blockClasses}\n ref={setNodeRef}\n style={dragStyle}\n onClick={handleFocusClick}\n onContextMenu={onContextMenu}\n data-testid='rundown-event'\n {...(isPlaying ? { 'data-running': true } : {})}\n >\n <RundownIndicators timeStart={timeStart} delay={delay} gap={gap} isNextDay={isNextDay} />\n\n <div className={style.binder} style={{ ...binderColours }} tabIndex={-1}>\n <span className={style.drag} ref={handleRef} {...dragAttributes} {...dragListeners}>\n <IoReorderTwo />\n </span>\n <span className={style.cue}>{cue}</span>\n </div>\n\n {isVisible && (\n <RundownEventInner\n timeStart={timeStart}\n timeEnd={timeEnd}\n duration={duration}\n linkStart={linkStart}\n countToEnd={countToEnd}\n timeStrategy={timeStrategy}\n eventId={eventId}\n eventIndex={eventIndex}\n endAction={endAction}\n timerType={timerType}\n title={title}\n note={note}\n delay={delay}\n isNext={isNext}\n skip={skip}\n loaded={loaded}\n playback={playback}\n isRolling={isRolling}\n dayOffset={dayOffset}\n isPast={isPast}\n totalGap={totalGap}\n isLinkedToLoaded={isLinkedToLoaded}\n hasTriggers={hasTriggers}\n />\n )}\n </div>\n );\n}\n","import { MouseEvent, useCallback, useRef } from 'react';\nimport { IoReorderTwo, IoTrash } from 'react-icons/io5';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { EntryId } from 'ontime-types';\n\nimport Input from '../../../common/components/input/input/Input';\nimport useReactiveTextInput from '../../../common/components/input/text-input/useReactiveTextInput';\nimport { useContextMenu } from '../../../common/hooks/useContextMenu';\nimport { useEntryActions } from '../../../common/hooks/useEntryAction';\nimport { cx, getAccessibleColour } from '../../../common/utils/styleUtils';\nimport { useEventSelection } from '../useEventSelection';\n\nimport style from './RundownMilestone.module.scss';\n\ninterface RundownMilestoneProps {\n colour: string;\n cue: string;\n entryId: EntryId;\n hasCursor: boolean;\n title: string;\n}\n\nexport default function RundownMilestone({ colour, cue, entryId, hasCursor, title }: RundownMilestoneProps) {\n const handleRef = useRef<null | HTMLSpanElement>(null);\n const { updateEntry, deleteEntry } = useEntryActions();\n const { selectedEvents, setSingleEntrySelection } = useEventSelection();\n\n const [onContextMenu] = useContextMenu<HTMLDivElement>([\n {\n type: 'item',\n label: 'Delete',\n icon: IoTrash,\n onClick: () => deleteEntry([entryId]),\n },\n ]);\n\n const {\n attributes: dragAttributes,\n listeners: dragListeners,\n setNodeRef,\n isDragging,\n transform,\n transition,\n } = useSortable({\n id: entryId,\n data: {\n type: 'milestone',\n },\n animateLayoutChanges: () => false,\n });\n\n const handleFocusClick = (event: MouseEvent) => {\n event.stopPropagation();\n\n // event.button === 2 is a right-click\n // disable selection if the user selected events and right clicks\n // so the context menu shows up\n if (selectedEvents.size > 1 && event.button === 2) {\n return;\n }\n\n // UI indexes are 1 based\n setSingleEntrySelection({ id: entryId });\n };\n\n const handleUpdate = (field: 'cue' | 'title', value: string) => {\n updateEntry({ id: entryId, [field]: value });\n };\n\n const dragStyle = {\n zIndex: isDragging ? 2 : 'inherit',\n transform: CSS.Translate.toString(transform),\n transition,\n };\n\n const binderColours = colour && getAccessibleColour(colour);\n\n return (\n <div\n className={cx([style.milestone, hasCursor ? style.hasCursor : null])}\n ref={setNodeRef}\n onClick={handleFocusClick}\n onContextMenu={onContextMenu}\n style={dragStyle}\n data-testid='rundown-milestone'\n >\n <div className={style.binder} style={{ ...binderColours }}>\n <span className={style.drag} ref={handleRef} {...dragAttributes} {...dragListeners}>\n <IoReorderTwo />\n </span>\n </div>\n <MilestoneTextInput field='cue' initialValue={cue} placeholder='Cue' submitHandler={handleUpdate} />\n <MilestoneTextInput field='title' initialValue={title} placeholder='Title' submitHandler={handleUpdate} />\n </div>\n );\n}\n\ninterface MilestoneTextInputProps {\n field: 'cue' | 'title';\n initialValue: string;\n placeholder?: string;\n submitHandler: (field: 'cue' | 'title', value: string) => void;\n}\n\nfunction MilestoneTextInput({ field, initialValue, placeholder, submitHandler }: MilestoneTextInputProps) {\n const ref = useRef<HTMLInputElement | null>(null);\n const submitCallback = useCallback((newValue: string) => submitHandler(field, newValue), [field, submitHandler]);\n const { value, onChange, onBlur, onKeyDown } = useReactiveTextInput(initialValue, submitCallback, ref, {\n submitOnEnter: true,\n });\n\n return (\n <Input\n id={field}\n ref={ref}\n fluid\n value={value}\n placeholder={placeholder}\n onChange={onChange}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n />\n );\n}\n","import {\n isOntimeDelay,\n isOntimeEvent,\n isOntimeMilestone,\n OntimeEntry,\n OntimeEvent,\n Playback,\n SupportedEntry,\n} from 'ontime-types';\n\nimport { useEntryActions } from '../../common/hooks/useEntryAction';\nimport useMemoisedFn from '../../common/hooks/useMemoisedFn';\nimport { cloneEvent } from '../../common/utils/clone';\n\nimport RundownDelay from './rundown-delay/RundownDelay';\nimport RundownEvent from './rundown-event/RundownEvent';\nimport RundownMilestone from './rundown-milestone/RundownMilestone';\n\ninterface RundownEntryProps {\n type: SupportedEntry;\n isPast: boolean;\n data: OntimeEntry;\n loaded: boolean;\n eventIndex: number;\n hasCursor: boolean;\n isNext: boolean;\n isNextDay: boolean;\n playback?: Playback; // we only care about this if this event is playing\n isRolling: boolean; // we need to know even if not related to this event\n totalGap: number;\n isLinkedToLoaded: boolean;\n}\n\nexport default function RundownEntry({\n isPast,\n data,\n loaded,\n hasCursor,\n isNext,\n playback,\n isRolling,\n eventIndex,\n isNextDay,\n totalGap,\n isLinkedToLoaded,\n}: RundownEntryProps) {\n const { addEntry } = useEntryActions();\n\n const createCloneEvent = useMemoisedFn(() => {\n const newEvent = cloneEvent(data as OntimeEvent);\n addEntry(newEvent, { after: data.id });\n });\n\n if (isOntimeEvent(data)) {\n return (\n <RundownEvent\n eventId={data.id}\n eventIndex={eventIndex}\n cue={data.cue}\n timeStart={data.timeStart}\n timeEnd={data.timeEnd}\n duration={data.duration}\n timeStrategy={data.timeStrategy}\n linkStart={data.linkStart}\n flag={data.flag}\n countToEnd={data.countToEnd}\n endAction={data.endAction}\n timerType={data.timerType}\n title={data.title}\n note={data.note}\n delay={data.delay}\n colour={data.colour}\n isPast={isPast}\n isNext={isNext}\n skip={data.skip}\n parent={data.parent}\n loaded={loaded}\n hasCursor={hasCursor}\n playback={playback}\n isRolling={isRolling}\n gap={data.gap}\n isNextDay={isNextDay}\n dayOffset={data.dayOffset}\n totalGap={totalGap}\n isLinkedToLoaded={isLinkedToLoaded}\n createCloneEvent={createCloneEvent}\n hasTriggers={data.triggers.length > 0}\n />\n );\n } else if (isOntimeDelay(data)) {\n return <RundownDelay data={data} hasCursor={hasCursor} />;\n } else if (isOntimeMilestone(data)) {\n return (\n <RundownMilestone\n colour={data.colour}\n cue={data.cue}\n entryId={data.id}\n hasCursor={hasCursor}\n title={data.title}\n />\n );\n }\n return null;\n}\n"],"names":["useMemoisedFn","fn","fnRef","useRef","useMemo","memoizedFn","args","BlockRadio","items","onValueChange","elementProps","jsx","BaseRadioGroup","value","style","item","Radio.Root","Radio.Indicator","DelayInput","props","eventId","duration","updateEntry","useEntryActions","setValue","useState","inputRef","ignoreChangeRef","useEffect","millisToString","validateAndSubmit","newValue","isNegative","newMillis","parseUserTime","submitChange","handleFocus","_a","onKeyDownHandler","event","_b","handleSlipChange","newDirection","checkedOption","jsxs","Input","RundownDelay","data","hasCursor","applyDelay","deleteEntry","handleRef","dragAttributes","dragListeners","setNodeRef","isDragging","transform","transition","useSortable","dragStyle","CSS","applyDelayHandler","cancelDelayHandler","cx","IoReorderTwo","Button","IoCheckmarkDone","IoClose","useEventIdSwapping","create","set","newEventId","RundownEventChip","timeStart","delay","dayOffset","isPast","isLoaded","className","totalGap","id","isLinkedToLoaded","playback","usePlayback","playbackActive","isPlaybackActive","EventReport","Tooltip","EventUntil","timeUntil","useTimeUntilExpectedStart","isDue","MILLIS_PER_SECOND","timeUntilString","formatDuration","MILLIS_PER_MINUTE","useReport","currentReport","overUnderStyle","tooltip","startedAt","endedAt","difference","absDifference","isOver","fullTimeValue","IoCheckmarkCircle","memo","RundownEventPlayback","skip","isPlaying","isPaused","loaded","disablePlayback","toggleSkip","actionHandler","setEventPlayback","load","playButtonStyles","IconButton","IoRemoveCircle","IoRemoveCircleOutline","IoReload","IoPause","IoPlay","RundownEventProgressBar","timer","useTimer","progress","getProgress","RundownEventInner","timeEnd","timeStrategy","linkStart","countToEnd","endAction","timerType","title","note","isNext","isRolling","hasTriggers","renderInner","setRenderInner","editorMode","useSessionStorage","sessionKeys","AppMode","eventIsPlaying","Playback","eventIsPaused","Fragment","TimeInputFlow","TitleEditor","EventBlockPlayback","EventBlockProgressBar","TimerIcon","EndActionIcon","LuArrowDownToLine","IoFlash","action","maybeActiveClasses","EndAction","IoPlaySkipForward","IoPlayForward","type","TimerType","IoArrowUp","IoTime","IoBan","IoArrowDown","formatDelay","delayedStart","removeTrailingZero","formatGap","gap","isNextDay","gapString","RundownIndicators","hasGap","hasDelay","RundownEvent","cue","flag","eventIndex","colour","parent","createCloneEvent","selectedEventId","setSelectedEventId","clearSelectedEventId","batchUpdateEvents","groupEntries","swapEvents","selectedEvents","unselect","setSelectedEvents","clearSelectedEvents","useEventSelection","isVisible","setIsVisible","onContextMenu","useContextMenu","IoLink","IoUnlink","IoFolder","IoTrash","TbFlagFilled","IoAdd","IoSwapVertical","IoDuplicateOutline","binderColours","getAccessibleColour","elementInFocus","blockElement","useLayoutEffect","observer","entry","handleRefCurrent","isSelected","blockClasses","handleFocusClick","index","editMode","getSelectionMode","RundownMilestone","entryId","setSingleEntrySelection","handleUpdate","field","MilestoneTextInput","initialValue","placeholder","submitHandler","ref","submitCallback","useCallback","onChange","onBlur","onKeyDown","useReactiveTextInput","RundownEntry","addEntry","newEvent","cloneEvent","isOntimeEvent","isOntimeDelay","isOntimeMilestone"],"mappings":"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"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./RundownEntry-Bs1ombtH.js","./vendor-BoH5HFNN.js","./vendor-4xP-6xVS.css","./index-CDBQg2fh.js","./index-BuJoGGff.css","./useRundown-BFae0_bU.js","./useProjectData-DGA6K2Zs.js","./useProjectData-Cw1aXCwD.css","./dateConfig-_BhycZza.js","./validateEvent-3adKsP1N.js","./editorSettings-DH9ca-nB.js","./editorSettings-BqHbWs9b.css","./parseUserTime-Cp5iWS7y.js","./rundownUtils-DJKMt8Ih.js","./Tooltip-B8y25e3n.js","./Tooltip-CKb7gU2M.css","./MilestoneEditor-rgBQSXVU.js","./EditorUtils-Bd3J5Dvf.js","./EditorUtils-CgF7UfHP.css","./TimeInput-Bu_5GlHP.js","./TimeInput-Cu-N5DmX.css","./useCustomFields-BUJkzZvM.js","./Select-B5xNi_tM.js","./Select-Cd08aEcf.css","./Modal-Bn1bZkwb.js","./Modal-D3tAPV2u.css","./offset-CLG4o744.js","./MilestoneEditor-BqNKKlvI.css","./useReport-BUCsRa2T.js","./playbackstate-B3BKJ8cT.js","./getProgress-DlrSzpnf.js","./ProtectRoute-Ci_AIozP.js","./ProtectRoute-Bm5sjStK.css","./Empty-C0IdV_kI.js","./Empty-DvR62o5B.css","./useFollowComponent-Eyo4hWVG.js","./RundownEntry-Blq5OsMH.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{f as we,h as f,j as e,aN as te,bd as ht,C as Ye,M as Je,aM as P,ah as Xe,aO as be,aP as pe,aQ as Y,T as V,ar as pt,be as ft,aG as Ze,aH as et,bf as jt,b1 as mt,aT as yt,az as gt,aA as _t,aB as vt,bg as Et,aJ as wt,bh as bt,aF as Ct,aE as kt,$ as Nt}from"./vendor-BoH5HFNN.js";import{T as St,S as Ce,C as Mt}from"./EditorUtils-Bd3J5Dvf.js";import{bu as De,az as Ie,ap as Ae,ah as tt,b2 as B,b6 as ce,B as Q,aH as Dt,bv as st,br as fe,bw as nt,e as J,ak as rt,aC as It,k as ye,M as At,m as Re,bk as Ge,bx as Rt,h as Gt,by as Ot,bz as Oe,bA as ge,b8 as Pt,ax as Bt}from"./index-CDBQg2fh.js";import{P as Pe}from"./ProtectRoute-Ci_AIozP.js";import{i as ee,h as $t,s as Tt,k as lt,j as ae,c as Ft,S as m,w as Be,t as Kt}from"./useRundown-BFae0_bU.js";import{s as _e,E as Lt,M as Vt,G as zt,u as Wt}from"./MilestoneEditor-rgBQSXVU.js";import{M as qt,P as Ut,D as Qt}from"./Modal-Bn1bZkwb.js";import{E as ot}from"./Empty-C0IdV_kI.js";import{u as se,c as it,a as $e}from"./dateConfig-_BhycZza.js";import{u as Ht}from"./useFollowComponent-Eyo4hWVG.js";import{g as Yt}from"./offset-CLG4o744.js";import{d as ve,e as Te,f as Fe,h as Jt,i as Xt,j as Zt}from"./rundownUtils-DJKMt8Ih.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},r=new t.Error().stack;r&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[r]="e118a690-edf1-4252-950b-ef106a11d24c",t._sentryDebugIdIdentifier="sentry-dbid-e118a690-edf1-4252-950b-ef106a11d24c")}catch{}})();function es(t,r,s){if(r===s)return t;const n=[...t],[i]=n.splice(r,1);return n.splice(s,0,i),n}function ke(){const t=navigator.userAgent.toLowerCase();return t.includes("macintosh")||t.includes("mac os")}const L=ke()?"Option":"Alt",Z=ke()?"Cmd":"Ctrl",ue=we()((t,r)=>({selectedEvents:new Set,anchoredIndex:null,cursor:null,entryMode:null,setSingleEntrySelection:({id:s})=>{t({selectedEvents:new Set([s]),anchoredIndex:null,cursor:s,entryMode:"single"})},setSelectedEvents:({id:s,index:n,selectMode:i})=>{const{selectedEvents:l,anchoredIndex:j,entryMode:w}=r();if(w==="single")return t({selectedEvents:new Set([s]),anchoredIndex:n,cursor:s,entryMode:"event"});if(i==="click")return t({selectedEvents:new Set([s]),anchoredIndex:n,cursor:s,entryMode:"event"});if(i==="ctrl"){const _=De.getQueryData(Ie);if(!_)return;if(!l.has(s))return t({selectedEvents:l.add(s),anchoredIndex:n,cursor:s,entryMode:"event"});l.delete(s);const R=_.order.findIndex((N,G)=>G>n&&ee(_.entries[N])&&l.has(N));return t({selectedEvents:l,anchoredIndex:R<0?_.order.length-1:R,entryMode:"event"})}if(i==="shift"){const _=De.getQueryData(Ie);if(!_)return;const R=[];_.flatOrder.forEach(g=>{const M=_.entries[g];ee(M)&&R.push(M.id)});const N=j===null?0:Math.min(j,n),G=j===null?n:Math.max(j,n+1),u=R.slice(N,G);return t({selectedEvents:new Set([...l,...u]),anchoredIndex:n,entryMode:"event"})}},clearSelectedEvents:()=>t({selectedEvents:new Set,anchoredIndex:null,cursor:null,entryMode:null}),clearMultiSelect:()=>{const{selectedEvents:s}=r(),[n]=s;t({selectedEvents:new Set(n?[n]:[]),anchoredIndex:null,entryMode:null})},unselect:s=>{const{entryMode:n,selectedEvents:i}=r();i.delete(s),t({selectedEvents:i,entryMode:i.size===0?null:n})}}));function Yn(t){return ke()&&t.metaKey||t.ctrlKey?"ctrl":t.shiftKey?"shift":"click"}const ts="_footer_44w0f_17",ss={footer:ts},ns=f.memo(rs);function rs({id:t,cue:r}){const s=`/ontime/load/id "${t}"`,n=`/ontime/load/cue "${r}"`;return e.jsxs("div",{className:ss.footer,children:[e.jsx(Ae,{copyValue:s,children:s}),e.jsx(Ae,{copyValue:n,children:n})]})}const ls="_entryEditor_z06bn_17",os="_shortcutSection_z06bn_28",is="_shortcuts_z06bn_35",ds="_spacer_z06bn_48",as="_prompt_z06bn_52",cs="_divider_z06bn_56",us="_kbd_z06bn_62",U={entryEditor:ls,shortcutSection:os,shortcuts:is,spacer:ds,prompt:as,divider:cs,kbd:us},xs=f.memo(hs);function hs(){return e.jsx("div",{className:U.entryEditor,"data-testid":"editor-container",children:e.jsxs("div",{className:U.shortcutSection,children:[e.jsx(St,{className:U.prompt,children:"Rundown shortcuts"}),e.jsx("table",{className:U.shortcuts,children:e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{children:"Find in rundown"}),e.jsxs("td",{children:[e.jsx(a,{children:Z}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"F"})]})]}),e.jsxs("tr",{children:[e.jsx("td",{children:"Open Settings"}),e.jsxs("td",{children:[e.jsx(a,{children:Z}),e.jsx(y,{children:"+"}),e.jsx(a,{children:","})]})]}),e.jsx("tr",{className:U.spacer}),e.jsxs("tr",{children:[e.jsx("td",{children:"Select entry"}),e.jsxs("td",{children:[e.jsx(a,{children:L}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"↑"}),e.jsx(y,{children:"/"}),e.jsx(a,{children:"↓"})]})]}),e.jsxs("tr",{children:[e.jsx("td",{children:"Select group"}),e.jsxs("td",{children:[e.jsx(a,{children:L}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"Shift"}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"↑"}),e.jsx(y,{children:"/"}),e.jsx(a,{children:"↓"})]})]}),e.jsxs("tr",{children:[e.jsx("td",{children:"Deselect entry"}),e.jsx("td",{children:e.jsx(a,{children:"Esc"})})]}),e.jsx("tr",{className:U.spacer}),e.jsxs("tr",{children:[e.jsx("td",{children:"Reorder selected entry"}),e.jsxs("td",{children:[e.jsx(a,{children:L}),e.jsx(y,{children:"+"}),e.jsx(a,{children:Z}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"↑"}),e.jsx(y,{children:"/"}),e.jsx(a,{children:"↓"})]})]}),e.jsxs("tr",{children:[e.jsx("td",{children:"Copy selected entry"}),e.jsxs("td",{children:[e.jsx(a,{children:Z}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"C"})]})]}),e.jsxs("tr",{children:[e.jsx("td",{children:"Paste above"}),e.jsxs("td",{children:[e.jsx(a,{children:Z}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"Shift"}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"V"})]})]}),e.jsxs("tr",{children:[e.jsx("td",{children:"Paste below"}),e.jsxs("td",{children:[e.jsx(a,{children:Z}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"V"})]})]}),e.jsxs("tr",{children:[e.jsx("td",{children:"Delete selected entry"}),e.jsxs("td",{children:[e.jsx(a,{children:Z}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"Backspace"})]})]}),e.jsx("tr",{className:U.spacer}),e.jsxs("tr",{children:[e.jsx("td",{children:"Add event below"}),e.jsxs("td",{children:[e.jsx(a,{children:L}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"E"})]})]}),e.jsxs("tr",{children:[e.jsx("td",{children:"Add event above"}),e.jsxs("td",{children:[e.jsx(a,{children:L}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"Shift"}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"E"})]})]}),e.jsxs("tr",{children:[e.jsx("td",{children:"Add group below"}),e.jsxs("td",{children:[e.jsx(a,{children:L}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"G"})]})]}),e.jsxs("tr",{children:[e.jsx("td",{children:"Add group above"}),e.jsxs("td",{children:[e.jsx(a,{children:L}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"Shift"}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"M"})]})]}),e.jsxs("tr",{children:[e.jsx("td",{children:"Add milestone below"}),e.jsxs("td",{children:[e.jsx(a,{children:L}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"G"})]})]}),e.jsxs("tr",{children:[e.jsx("td",{children:"Add milestone above"}),e.jsxs("td",{children:[e.jsx(a,{children:L}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"Shift"}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"M"})]})]}),e.jsxs("tr",{children:[e.jsx("td",{children:"Add delay below"}),e.jsxs("td",{children:[e.jsx(a,{children:L}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"D"})]})]}),e.jsxs("tr",{children:[e.jsx("td",{children:"Add delay above"}),e.jsxs("td",{children:[e.jsx(a,{children:L}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"Shift"}),e.jsx(y,{children:"+"}),e.jsx(a,{children:"D"})]})]})]})})]})})}function y({children:t}){return e.jsx("span",{className:U.divider,children:t})}function a({children:t}){return e.jsx("span",{className:U.kbd,children:t})}function ps(){const t=ue(i=>i.selectedEvents),{data:r}=$t(),[s,n]=f.useState(null);return f.useEffect(()=>{if(r.order.length===0){n(null);return}const i=Array.from(t).at(0);if(!i){n(null);return}const l=r.entries[i];l&&!Tt(l)?n(l):n(null)},[r.order,r.entries,t]),s?ee(s)?e.jsxs("div",{className:_e.rundownEditor,"data-testid":"editor-container",children:[e.jsx(Lt,{event:s}),e.jsx(ns,{id:s.id,cue:s.cue})]}):lt(s)?e.jsx("div",{className:_e.rundownEditor,"data-testid":"editor-container",children:e.jsx(Vt,{milestone:s})}):ae(s)?e.jsx("div",{className:_e.rundownEditor,"data-testid":"editor-container",children:e.jsx(zt,{group:s})}):null:e.jsx(xs,{})}const Ke=12;function fs(){const{data:t,rundownId:r}=Ft(),[s,n]=f.useState([]),[i,l]=f.useState(null),j=f.useRef(""),w=ue(u=>u.setSelectedEvents),[_,R]=te({key:`rundown.${r}-editor-collapsed-groups`,defaultValue:[]}),N=f.useCallback(u=>{if(!t||t.length===0){l("No data");return}if(l(null),u.target.value===""){n([]);return}const g=u.target.value.toLowerCase();if(j.current=g,g.startsWith("index ")){const v=g.slice(6).trim(),{results:p,error:b}=ne(v);n(p),l(b);return}if(g.startsWith("cue ")){const v=g.slice(4).trim(),{results:p,error:b}=T(v);n(p),l(b);return}const M=g.startsWith("title ")?g.slice(6).trim():g,{results:$,error:K}=re(M);n($),l(K);function ne(v){const p=Number(v);if(isNaN(p)||p<1)return{results:[],error:"Invalid index"};if(p>t.length)return{results:[],error:null};let b=1;const S=[];for(let C=0;C<t.length;C++){const h=t[C];if(ee(h)){if(b===p){S.push({type:m.Event,id:h.id,index:C,eventIndex:b,title:h.title,cue:h.cue,colour:h.colour,parent:h.parent});break}b++}}return{results:S,error:null}}function T(v){let p=1,b=Ke;const S=[];for(let C=0;C<t.length&&!(b<=0);C++){const h=t[C];ee(h)&&(h.cue.toLowerCase().includes(v)&&(b--,S.push({type:m.Event,id:h.id,index:C,eventIndex:p,title:h.title,cue:h.cue,colour:h.colour,parent:h.parent})),p++)}return{results:S,error:null}}function re(v){let p=1,b=Ke;const S=[];for(let C=0;C<t.length&&!(b<=0);C++){const h=t[C];ee(h)?(h.title.toLowerCase().includes(v)&&(b--,S.push({type:m.Event,id:h.id,index:C,eventIndex:p,title:h.title,cue:h.cue,colour:h.colour,parent:h.parent})),p++):ae(h)?h.title.toLowerCase().includes(v)&&(b--,S.push({type:m.Group,id:h.id,index:C,title:h.title,colour:h.colour})):lt(h)&&h.title.toLowerCase().includes(v)&&(b--,S.push({type:m.Milestone,id:h.id,index:C,title:h.title,cue:h.cue,colour:h.colour,parent:h.parent}))}return{results:S,error:null}}},[t]),G=f.useCallback(u=>{if("parent"in u&&u.parent!==null){const M=[...new Set(_)].filter($=>$!==u.parent);R(M)}w({id:u.id,index:u.index,selectMode:"click"})},[_,R,w]);return f.useEffect(()=>{n([]),l(null),j.current&&N({target:{value:j.current}})},[t,N]),{find:N,select:G,results:s,error:i}}const js="_entry_142nw_17",ms="_empty_142nw_18",ys="_error_142nw_19",gs="_data_142nw_40",_s="_index_142nw_46",vs="_title_142nw_55",Es="_cue_142nw_58",ws="_footer_142nw_66",bs="_em_142nw_18",Cs="_scrollContainer_142nw_76",F={entry:js,empty:ms,error:ys,data:gs,index:_s,title:vs,cue:Es,footer:ws,em:bs,scrollContainer:Cs};function ks({isOpen:t,onClose:r}){const{find:s,select:n,results:i,error:l}=fs(),[j,w]=f.useState(0),_=ht(s,100),R=u=>{i.length!==0&&(u.key==="ArrowDown"&&w(g=>(g+1)%i.length),u.key==="ArrowUp"&&w(g=>(g-1+i.length)%i.length),u.key==="Enter"&&(u.preventDefault(),u.stopPropagation(),N()))},N=()=>{const u=i[j];n(u),r()},G=u=>{const M=u.target.closest("li");if(M){const $=Number(M.dataset.index);isNaN($)||w($)}};return e.jsx(qt,{title:"",isOpen:t,onClose:r,showBackdrop:!0,bodyElements:e.jsxs("div",{onKeyDown:R,children:[e.jsx(tt,{height:"large",fluid:!0,onChange:_,placeholder:"Search..."}),e.jsxs("ul",{className:F.scrollContainer,onMouseMove:G,children:[l&&e.jsx("li",{className:F.error,children:l}),i.length===0&&e.jsx("li",{className:F.empty,children:"No results"}),i.length>0&&i.map((u,g)=>{const M=j===g,$=u.type===m.Event?u.eventIndex:"-",K="cue"in u?u.cue:"";return e.jsxs("li",{className:F.entry,"data-selected":M,"data-index":g,onClick:N,children:[e.jsxs("div",{className:F.data,children:[e.jsx("div",{className:F.index,style:{"--color":u.colour},children:$}),e.jsx("div",{className:F.cue,children:K}),e.jsx("div",{className:F.title,children:u.title})]}),M&&e.jsx("span",{children:"Go ⏎"})]},u.id)})]})]}),footerElements:e.jsxs("div",{className:F.footer,children:["Use the keywords ",e.jsx("span",{className:F.em,children:"cue"}),", ",e.jsx("span",{className:F.em,children:"index"})," or",e.jsx("span",{className:F.em,children:"title"})," to filter search."]})})}const Le=f.memo(Ns);function Ns(){const[t,r]=Ye();return Je([["mod + f",r.toggle],["Escape",r.close]]),t?e.jsx(ks,{isOpen:t,onClose:r.close}):null}const dt=we(t=>({position:{x:0,y:0},options:[],isOpen:!1,setContextMenu:(r,s)=>t(()=>({position:r,options:s,isOpen:!0})),setIsOpen:r=>t(()=>({isOpen:r}))}));function Ve({children:t}){const{position:r,options:s,isOpen:n,setIsOpen:i}=dt(),l=()=>i(!1);return n?e.jsxs(e.Fragment,{children:[t,e.jsx(Ut,{isOpen:!0,position:r,onClose:l,items:s})]}):t}const Ss="_header_156wk_17",Ms="_group_156wk_28",Ds="_radioButton_156wk_39",Is="_apart_156wk_70",As="_separator_156wk_74",A={header:Ss,group:Ms,radioButton:Ds,apart:Is,separator:As},Rs=f.memo(Gs);function Gs(){const[t,r]=Ye(),s=ue(j=>j.clearSelectedEvents),[n]=te({key:ce.editorMode,defaultValue:B.Edit}),{deleteAllEntries:i}=se(),l=f.useCallback(()=>{i(),s(),r.close()},[s,i,r]);return e.jsxs(e.Fragment,{children:[e.jsxs(P,{render:e.jsx(Q,{variant:"subtle-destructive"}),onClick:r.open,disabled:n===B.Run,className:A.apart,children:[e.jsx(Xe,{}),"Clear all"]}),e.jsx(Dt,{isOpen:t,onClose:r.close,title:"Clear rundown",showBackdrop:!0,showCloseButton:!0,bodyElements:e.jsxs(e.Fragment,{children:["You will lose all data in your rundown. ",e.jsx("br",{})," Are you sure?"]}),footerElements:e.jsxs(e.Fragment,{children:[e.jsx(Q,{variant:"ghosted-white",size:"large",onClick:r.close,children:"Cancel"}),e.jsx(Q,{variant:"destructive",size:"large",onClick:l,children:"Delete all"})]})})]})}const Os=f.memo(Ps);function Ps(){const[t,r]=te({key:ce.editorMode,defaultValue:B.Edit}),{offsetMode:s}=st(),n=l=>{const j=l.at(0);j&&r(j)},i=l=>{const j=l.at(0);j&&nt(j)};return e.jsxs(be,{className:A.header,children:[e.jsxs(pe,{value:[t],onValueChange:n,className:A.group,children:[e.jsx(P,{render:e.jsx(Y,{}),value:B.Run,className:A.radioButton,children:"Run"}),e.jsx(P,{render:e.jsx(Y,{}),value:B.Edit,className:A.radioButton,children:"Edit"})]}),e.jsx(Ce,{className:A.separator}),e.jsxs(pe,{value:[s],onValueChange:i,className:A.group,children:[e.jsx(P,{render:e.jsx(Y,{}),value:fe.Absolute,className:A.radioButton,children:"Absolute"}),e.jsx(P,{render:e.jsx(Y,{}),value:fe.Relative,className:A.radioButton,children:"Relative"})]}),e.jsx(Rs,{})]})}const Bs=f.memo($s);function $s(){const[t,r]=te({key:ce.editorMode,defaultValue:B.Edit}),{offsetMode:s}=st(),n=l=>{const j=l.at(0);j&&r(j)},i=l=>{const j=l.at(0);j&&nt(j)};return e.jsxs(be,{className:A.header,children:[e.jsxs(pe,{value:[t],onValueChange:n,className:A.group,children:[e.jsx(P,{render:e.jsx(Y,{}),value:B.Run,className:A.radioButton,children:"Run"}),e.jsx(P,{render:e.jsx(Y,{}),value:B.Edit,className:A.radioButton,children:"Edit"})]}),e.jsx(Ce,{className:A.separator}),e.jsxs(pe,{value:[s],onValueChange:i,className:A.group,children:[e.jsx(P,{render:e.jsx(Y,{}),value:fe.Absolute,className:A.radioButton,children:"Absolute"}),e.jsx(P,{render:e.jsx(Y,{}),value:fe.Relative,className:A.radioButton,children:"Relative"})]})]})}const Ts=we()(t=>({entryCopyId:null,setEntryCopyId:r=>t({entryCopyId:r})})),Fs=t=>({type:m.Event,flag:t.flag,title:t.title,note:t.note,timeStart:t.timeStart,duration:t.duration,timeEnd:t.timeEnd,timerType:t.timerType,timeStrategy:t.timeStrategy,countToEnd:t.countToEnd,linkStart:t.linkStart,endAction:t.endAction,skip:t.skip,colour:t.colour,parent:t.parent,revision:0,delay:t.delay,dayOffset:t.dayOffset,gap:0,timeWarning:t.timeWarning,timeDanger:t.timeDanger,triggers:structuredClone(t.triggers),custom:structuredClone(t.custom)}),Ks="_quickAdd_96pwt_17",Ls="_indent_96pwt_24",ze={quickAdd:Ks,indent:Ls},Ee=f.memo(Vs);function Vs({previousEventId:t,parentGroup:r,backgroundColor:s}){const{addEntry:n}=se(),i=()=>{n({type:m.Event,parent:r},{after:t,lastEventId:t})},l=()=>{n({type:m.Delay,parent:r},{lastEventId:t,after:t})},j=()=>{n({type:m.Milestone,parent:r},{lastEventId:t,after:t})},w=()=>{r===null&&n({type:m.Group},{lastEventId:t,after:t})},_=s===""?"#9d9d9d":s;return e.jsxs(be,{className:J([ze.quickAdd,!!r&&ze.indent]),style:_?{"--user-bg":_}:{},"data-testid":"quick-add-buttons",children:[e.jsxs(P,{render:e.jsx(Q,{size:"small"}),onClick:i,children:[e.jsx(V,{}),"Event"]}),e.jsxs(P,{render:e.jsx(Q,{size:"small"}),onClick:l,children:[e.jsx(V,{}),"Delay"]}),e.jsxs(P,{render:e.jsx(Q,{size:"small"}),onClick:j,children:[e.jsx(V,{}),"Milestone"]}),r===null&&e.jsxs(P,{render:e.jsx(Q,{size:"small"}),onClick:w,children:[e.jsx(V,{}),"Group"]})]})}const zs="_quickAdd_gr8nb_17",Ws="_addButton_gr8nb_35",We={quickAdd:zs,addButton:Ws},qe=f.memo(qs);function qs({referenceEntryId:t,parentGroup:r,placement:s}){const{addEntry:n}=se(),i=l=>{s==="before"?n({type:l,parent:l!==m.Group?r:null},{before:t}):n({type:l,parent:l!==m.Group?r:null},{lastEventId:t,after:t})};return e.jsx("div",{className:We.quickAdd,"data-testid":"quick-add-inline",children:e.jsx(Qt,{items:[{type:"item",icon:V,label:"Add Event",onClick:()=>i(m.Event)},{type:"item",icon:V,label:"Add Delay",onClick:()=>i(m.Delay)},{type:"item",icon:V,label:"Add Milestone",onClick:()=>i(m.Milestone)},{type:"item",icon:V,label:"Add Group",onClick:()=>i(m.Group),disabled:r!==null}],render:e.jsx(rt,{size:"small",variant:"primary",className:We.addButton}),children:e.jsx(V,{})})})}const Us=t=>{const r=dt(n=>n.setContextMenu);return[n=>{n.preventDefault();const{pageX:i,pageY:l}=n;return r({x:i,y:l},t)}]},Qs="_noTitle_zrdm3_26",Ue={noTitle:Qs};function Hs({title:t,entryId:r,placeholder:s,className:n}){const{updateEntry:i}=se(),l=f.useRef(null),j=f.useCallback(u=>{if(u===t)return;const g=u.trim();i({id:r,title:g})},[t,i,r]),{value:w,onChange:_,onBlur:R,onKeyDown:N}=Wt(t,j,l,{submitOnEnter:!0}),G=J([n,Ue.eventTitle,w?null:Ue.noTitle]);return e.jsx(tt,{"data-testid":"entry__title",variant:"ghosted",fluid:!0,ref:l,value:w,className:G,placeholder:s,onChange:_,onBlur:R,onKeyDown:N})}const Ys="_blink_15o4l_1",Js="_fourtyfive_15o4l_13",Xs="_group_15o4l_17",Zs="_hasCursor_15o4l_31",en="_expanded_15o4l_34",tn="_binder_15o4l_39",sn="_header_15o4l_54",nn="_titleRow_15o4l_62",rn="_metaRow_15o4l_67",ln="_metaEntry_15o4l_73",on="_strike_15o4l_81",dn="_over_15o4l_85",an="_under_15o4l_89",cn="_drag_15o4l_93",un="_isDragging_15o4l_111",xn="_notAllowed_15o4l_114",I={blink:Ys,fourtyfive:Js,group:Xs,hasCursor:Zs,expanded:en,binder:tn,header:sn,titleRow:nn,metaRow:rn,metaEntry:ln,strike:on,over:dn,under:an,drag:cn,isDragging:un,notAllowed:xn};function hn({data:t,hasCursor:r,collapsed:s,onCollapse:n}){var h,le;const i=f.useRef(null),{clone:l,ungroup:j,deleteEntry:w}=se(),{selectedEvents:_,setSingleEntrySelection:R}=ue(),[N]=Us([{type:"item",label:"Clone Group",icon:pt,onClick:()=>l(t.id)},{type:"item",label:"Ungroup",icon:ft,onClick:()=>j(t.id),disabled:t.entries.length===0},{type:"divider"},{type:"item",label:"Delete Group",icon:Xe,onClick:()=>w([t.id])}]),{attributes:G,listeners:u,setNodeRef:g,transform:M,transition:$,isDragging:K,isOver:ne,over:T}=Ze({id:t.id,data:{type:"group"},animateLayoutChanges:()=>!1}),re=O=>{O.stopPropagation(),!(_.size>1&&O.button===2)&&R({id:t.id})},v=t.colour&&It(t.colour),p=K&&(T==null?void 0:T.id)&&it((h=T.data.current)==null?void 0:h.type,(le=T.data.current)==null?void 0:le.parent),[b,S]=(()=>{if(t.targetDuration===null)return[null,null];const O=t.duration-t.targetDuration;if(O===0)return[null,"under"];const oe=Math.abs(O);return[`${O<0?"-":"+"}${ye(oe,oe>2*At)}`,Yt(O)]})(),C={zIndex:K?2:"inherit",transform:et.Translate.toString(M),transition:$,cursor:ne?p?"grabbing":"no-drop":"inherit"};return e.jsxs("div",{className:J([I.group,r&&I.hasCursor,!s&&I.expanded]),ref:g,onClick:re,onContextMenu:N,style:{...C,"--user-bg":t.colour||"#929292"},"data-testid":"rundown-group",children:[e.jsx("div",{className:I.binder,style:{...v},tabIndex:-1,children:e.jsx("span",{className:J([I.drag,K&&I.isDragging,K&&!p&&I.notAllowed]),ref:i,...G,...u,children:e.jsx(jt,{})})}),e.jsxs("div",{className:I.header,children:[e.jsxs("div",{className:I.titleRow,children:[e.jsx(Hs,{title:t.title,entryId:t.id,placeholder:"Group title"}),e.jsx(rt,{"aria-label":"Collapse",variant:"subtle-white",onClick:()=>n(!s,t.id),children:s?e.jsx(mt,{}):e.jsx(yt,{})})]}),e.jsxs("div",{className:I.metaRow,children:[e.jsxs("div",{className:I.metaEntry,children:[e.jsx("div",{children:"Start"}),e.jsx("div",{children:Re(t.timeStart,{fallback:Ge})})]}),e.jsxs("div",{className:I.metaEntry,children:[e.jsx("div",{children:"End"}),e.jsx("div",{children:Re(t.timeEnd,{fallback:Ge})})]}),e.jsxs("div",{className:I.metaEntry,children:[e.jsx("div",{children:"Duration"}),b===null?e.jsx("div",{className:J([S!==null&&I[S]]),children:ye(t.duration)}):e.jsxs("div",{children:[e.jsx("span",{className:I.strike,children:ye(t.duration)}),e.jsx("span",{className:J([S!==null&&I[S]]),children:b})]})]}),e.jsxs("div",{className:I.metaEntry,children:[e.jsx("div",{children:"Entries"}),e.jsx("div",{children:t.entries.length})]})]})]})]})}const pn="_groupEnd_1mlc9_17",fn={groupEnd:pn};function jn({id:t,colour:r}){const{attributes:s,listeners:n,setNodeRef:i,transform:l,transition:j}=Ze({id:t,data:{type:"end-group"},animateLayoutChanges:()=>!1,disabled:!0}),w={transform:et.Transform.toString(l),transition:j};return e.jsx("div",{className:fn.groupEnd,ref:i,...s,...n,style:{...w,...r?{"--user-bg":r}:{}},tabIndex:-1})}const mn="_empty_pqnxu_17",yn="_inline_pqnxu_22",Qe={empty:mn,inline:yn};function gn(t){const{handleAddNew:r}=t;return e.jsxs("div",{className:Qe.empty,children:[e.jsx(ot,{injectedStyles:{marginTop:"5vh",marginBottom:"3rem"}}),e.jsxs("div",{className:Qe.inline,children:[e.jsxs(Q,{onClick:()=>r(m.Event),variant:"primary",size:"large",children:[e.jsx(V,{}),"Create Event"]}),e.jsx(Ce,{}),e.jsxs(Q,{onClick:()=>r(m.Group),variant:"primary",size:"large",children:[e.jsx(V,{})," Create Group"]})]})]})}const _n="_rundownWrapper_1s5di_17",vn="_rundownContainer_1s5di_22",En="_list_1s5di_28",wn="_spacer_1s5di_44",bn="_entryWrapper_1s5di_48",Cn="_entryIndex_1s5di_55",kn="_flag_1s5di_66",Nn="_index_1s5di_72",Sn="_entry_1s5di_48",q={rundownWrapper:_n,rundownContainer:vn,list:En,spacer:wn,entryWrapper:bn,entryIndex:Cn,flag:kn,index:Nn,entry:Sn},Mn=f.lazy(()=>Nt(()=>import("./RundownEntry-Bs1ombtH.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]),import.meta.url));function Dn({data:t,rundownMetadata:r}){var Me;const{order:s,entries:n,id:i}=t,l=Rt(),[j,w]=f.useState(()=>$e(s,n)),[_,R]=f.useState(r),[N,G]=te({key:`rundown.${i}-editor-collapsed-groups`,defaultValue:[]}),{addEntry:u,deleteEntry:g,move:M,reorderEntry:$}=se(),{entryCopyId:K,setEntryCopyId:ne}=Ts(),[T]=te({key:ce.editorMode,defaultValue:B.Edit}),{clearSelectedEvents:re,setSelectedEvents:v,cursor:p}=ue(),b=f.useRef(null),S=f.useRef(null);Ht({followRef:b,scrollRef:S,doFollow:!0,followTrigger:T===B.Edit?p:l==null?void 0:l.selectedEventId});const C=gt(_t(kt,{activationConstraint:{distance:10}})),h=f.useCallback(d=>{if(!d)return;const{entry:c,index:o}=ve(n,s,d);g([d]),c&&o!==null&&v({id:c.id,selectMode:"click",index:o})},[n,s,g,v]),le=f.useCallback((d,c,o=!1)=>{var k;const x=o?((k=ve(n,s,d??"").entry)==null?void 0:k.id)??null:d;if(c===null)return;const E=n[c];if((E==null?void 0:E.type)===m.Event){const D=Fs(E);u(D,{after:x??void 0})}},[u,s,n]),O=f.useCallback((d,c,o=!1)=>{u(d,{after:c&&!o?c:void 0,before:c&&o?c:void 0,lastEventId:!o&&c?c:void 0})},[u]),oe=f.useCallback((d,c)=>{if(s.length<1)return;let o=d;if(d===null){const E=c==="up"?Te(n,s):Fe(n,s);if(ae(E)){v({id:E.id,selectMode:"click",index:c==="up"?s.length:0});return}o=(E==null?void 0:E.id)??null}if(o===null)return;const x=c==="up"?Jt(n,s,o):Xt(n,s,o);x.entry!==null&&x.index!==null&&v({id:x.entry.id,selectMode:"click",index:x.index})},[s,n,v]),Ne=f.useCallback((d,c)=>{if(s.length<1)return;if(d===null){const x=c==="up"?Te(n,s):Fe(n,s);x!==null&&v({id:x.id,selectMode:"click",index:c==="up"?s.length:0});return}const o=c==="up"?ve(n,s,d):Zt(n,s,d);o.entry!==null&&o.index!==null&&v({id:o.entry.id,selectMode:"click",index:o.index})},[s,n,v]),X=f.useCallback(d=>!!N.find(c=>c===d),[N]),ie=f.useCallback((d,c)=>{G(o=>{const x=X(c);return d&&!x?[...new Set(o).add(c)]:!d&&x?[...o].filter(E=>E!==c):o})},[X,G]),Se=f.useCallback(async(d,c)=>{if(d==null)return;const o=await M(d,c);o&&ie(!1,o)},[ie,M]);Je([["alt + ArrowDown",()=>Ne(p,"down"),{preventDefault:!0,usePhysicalKeys:!0}],["alt + ArrowUp",()=>Ne(p,"up"),{preventDefault:!0,usePhysicalKeys:!0}],["alt + shift + ArrowDown",()=>oe(p,"down"),{preventDefault:!0,usePhysicalKeys:!0}],["alt + shift + ArrowUp",()=>oe(p,"up"),{preventDefault:!0,usePhysicalKeys:!0}],["alt + mod + ArrowDown",()=>Se(p,"down"),{preventDefault:!0,usePhysicalKeys:!0}],["alt + mod + ArrowUp",()=>Se(p,"up"),{preventDefault:!0,usePhysicalKeys:!0}],["Escape",()=>re(),{preventDefault:!0,usePhysicalKeys:!0}],["mod + Backspace",()=>h(p),{preventDefault:!0,usePhysicalKeys:!0}],["alt + E",()=>O({type:m.Event},p),{preventDefault:!0,usePhysicalKeys:!0}],["alt + shift + E",()=>O({type:m.Event},p,!0),{preventDefault:!0,usePhysicalKeys:!0}],["alt + G",()=>O({type:m.Group},p),{preventDefault:!0,usePhysicalKeys:!0}],["alt + shift + G",()=>O({type:m.Group},p,!0),{preventDefault:!0,usePhysicalKeys:!0}],["alt + D",()=>O({type:m.Delay},p),{preventDefault:!0,usePhysicalKeys:!0}],["alt + shift + D",()=>O({type:m.Delay},p,!0),{preventDefault:!0,usePhysicalKeys:!0}],["alt + M",()=>O({type:m.Milestone},p),{preventDefault:!0,usePhysicalKeys:!0}],["alt + shift + M",()=>O({type:m.Milestone},p,!0),{preventDefault:!0,usePhysicalKeys:!0}],["mod + C",()=>ne(p)],["mod + V",()=>le(p,K)],["mod + shift + V",()=>le(p,K,!0),{preventDefault:!0,usePhysicalKeys:!0}],["alt + backspace",()=>h(p),{preventDefault:!0,usePhysicalKeys:!0}]]),f.useEffect(()=>{w($e(s,n)),R(r)},[s,n,r]),f.useEffect(()=>{var o;if(T!==B.Run||!(l!=null&&l.selectedEventId))return;const d=s.findIndex(x=>x===l.selectedEventId),c=(o=n[l.selectedEventId])==null?void 0:o.parent;c&&G(x=>[...x].filter(E=>E!==c)),v({id:l.selectedEventId,selectMode:"click",index:d})},[T,n,l.selectedEventId,s,G,v]);const at=d=>{var he;const{active:c,over:o}=d;if(!(o!=null&&o.id)||c.id===o.id||!c.data.current||!o.data.current)return;const x=c.data.current.sortable.index,E=o.data.current.sortable.index;let k=x<E?"after":"before",D=o.id;const xe=((he=c.data.current)==null?void 0:he.type)===m.Group;if(xe&&!it(o.data.current.type,o.data.current.parent,k,X(D)))return;if(D.startsWith("end-"))D=D.replace("end-",""),k==="before"&&(k="insert");else{const z=t.entries[D];ae(z)&&k==="after"&&(xe?D=z.id:z.entries.length===0?(D=z.id,k="insert"):(D=z.entries[0],k="before"))}const je=structuredClone(j);w(z=>es(z,x,E)),$(c.id,D,k).catch(z=>{w(je)})},ct=d=>{var o;((o=d.active.data.current)==null?void 0:o.type)===m.Group&&ie(!0,d.active.id)},ut=d=>{var x,E,k,D;if(((x=d.active.data.current)==null?void 0:x.type)==="group"||((k=(E=d.over)==null?void 0:E.data.current)==null?void 0:k.type)!=="group")return;const c=(D=d.over)==null?void 0:D.id;X(c)&&ie(!1,c)};if(j.length<1)return e.jsx(gn,{handleAddNew:d=>u({type:d})});const de=T===B.Edit;return e.jsx("div",{className:q.rundownContainer,ref:S,"data-testid":"rundown",children:e.jsx(vt,{onDragEnd:at,onDragStart:ct,onDragOver:ut,sensors:C,collisionDetection:Et,children:e.jsx(wt,{items:j,strategy:bt,children:e.jsxs("div",{className:q.list,children:[de&&e.jsx(Ee,{previousEventId:null,parentGroup:null}),j.map((d,c)=>{if(d.startsWith("end-")){const me=d.split("end-")[1],xt=X(me),W=_[me];return xt?null:e.jsxs(f.Fragment,{children:[de&&(W==null?void 0:W.groupEntries)===0&&e.jsx(Ee,{previousEventId:null,parentGroup:me,backgroundColor:W==null?void 0:W.groupColour}),e.jsx(jn,{id:d,colour:W==null?void 0:W.groupColour},d)]},d)}const o=n[d],x=_[d];if(!o||!x||o.type!==m.Group&&x.groupId!==null&&X(x.groupId))return null;const E=(l==null?void 0:l.nextEventId)===o.id,k=o.id===p,D=x.groupColour===""?"#9d9d9d":x.groupColour,xe=c===0,je=d===s.at(-1),he=x.thisId!==x.groupId?x.groupId:null,z=x.groupId;return e.jsxs(f.Fragment,{children:[de&&k&&!xe&&e.jsx(qe,{placement:"before",referenceEntryId:o.id,parentGroup:he}),ae(o)?e.jsx(hn,{data:o,hasCursor:k,collapsed:X(o.id),onCollapse:ie}):e.jsxs("div",{className:q.entryWrapper,"data-testid":`entry-${x.eventIndex}`,style:D?{"--user-bg":D}:{},children:[ee(o)&&e.jsxs("div",{className:q.entryIndex,children:[o.flag&&e.jsx(Ct,{className:q.flag}),e.jsx("div",{className:q.index,children:x.eventIndex})]}),e.jsx("div",{className:q.entry,ref:k?b:void 0,children:e.jsx(Mn,{type:o.type,isPast:x.isPast,eventIndex:x.eventIndex,data:o,loaded:x.isLoaded,hasCursor:k,isNext:E,isNextDay:x.isNextDay,playback:x.isLoaded?l.playback:void 0,isRolling:l.playback===Gt.Roll,totalGap:x.totalGap,isLinkedToLoaded:x.isLinkedToLoaded})},o.id)]}),de&&k&&!je&&e.jsx(qe,{placement:"after",referenceEntryId:o.id,parentGroup:z})]},o.id)}),de&&e.jsx(Ee,{previousEventId:((Me=_[Be])==null?void 0:Me.groupId)??_[Be].thisId,parentGroup:null}),e.jsx("div",{className:q.spacer})]})})})})}function He({isSmallDevice:t}){const{data:r,status:s,rundownMetadata:n}=Kt();return e.jsxs("div",{className:q.rundownWrapper,children:[t?e.jsx(Bs,{}):e.jsx(Os,{}),s==="success"&&r&&n?e.jsx(Dn,{data:r,rundownMetadata:n}):e.jsx(ot,{text:"Connecting to server"})]})}const In="_rundownExport_h38r0_21",An="_extracted_h38r0_25",Rn="_list_h38r0_25",Gn="_side_h38r0_29",On="_rundown_h38r0_21",H={rundownExport:In,extracted:An,list:Rn,side:Gn,rundown:On},Pn=f.memo(Bn);function Bn(){const t=window.location.pathname.includes("/rundown"),[r]=te({key:ce.editorMode,defaultValue:B.Edit});if(Ot()&&t)return e.jsx(Pe,{permission:"editor",children:e.jsxs("div",{className:J([H.rundownExport,H.extracted]),"data-target":"small-device","data-testid":"panel-rundown",children:[e.jsx(Le,{}),e.jsx(Oe,{suppressSettings:!0}),e.jsx("div",{className:H.rundown,children:e.jsx(ge,{children:e.jsx(Ve,{children:e.jsx(He,{isSmallDevice:!0})})})})]})});const n=t&&r==="run";return e.jsx(Pe,{permission:"editor",children:e.jsxs("div",{className:J([H.rundownExport,t&&H.extracted]),"data-testid":"panel-rundown",children:[e.jsx(Le,{}),t&&e.jsx(Oe,{suppressSettings:!0,isNavigationLocked:Pt()}),e.jsxs("div",{className:H.rundown,children:[e.jsx("div",{className:H.list,children:e.jsxs(ge,{children:[!t&&e.jsx(Mt,{onClick:i=>Bt("rundown",i)}),e.jsx(Ve,{children:e.jsx(He,{})})]})}),!n&&e.jsx("div",{className:H.side,children:e.jsx(ge,{children:e.jsx(ps,{})})})]})]})})}const Jn=Object.freeze(Object.defineProperty({__proto__:null,default:Pn},Symbol.toStringTag,{value:"Module"}));export{Jn as R,Hs as T,Us as a,Fs as c,Yn as g,ue as u};
|
|
3
|
-
//# sourceMappingURL=RundownExport-BCT0ybxy.js.map
|
|
Binary file
|
|
Binary file
|