@getontime/cli 4.0.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/assets/{Backstage-ZSqb8OU6.js → Backstage-BhtXVpms.js} +2 -2
- package/client/assets/Backstage-BhtXVpms.js.br +0 -0
- package/client/assets/Backstage-BhtXVpms.js.gz +0 -0
- package/client/assets/{Backstage-ZSqb8OU6.js.map → Backstage-BhtXVpms.js.map} +1 -1
- package/client/assets/{Countdown-DVRZbeRP.js → Countdown-NmGi1KMx.js} +2 -2
- package/client/assets/Countdown-NmGi1KMx.js.br +0 -0
- package/client/assets/Countdown-NmGi1KMx.js.gz +0 -0
- package/client/assets/Countdown-NmGi1KMx.js.map +1 -0
- package/client/assets/{CustomTranslationModal-D_Cy0d_H.js → CustomTranslationModal-BBNxpds0.js} +2 -2
- package/client/assets/CustomTranslationModal-BBNxpds0.js.br +0 -0
- package/client/assets/CustomTranslationModal-BBNxpds0.js.gz +0 -0
- package/client/assets/{CustomTranslationModal-D_Cy0d_H.js.map → CustomTranslationModal-BBNxpds0.js.map} +1 -1
- package/client/assets/{DelayIndicator-B_JKLKYW.js → DelayIndicator-CFCDQ7FN.js} +2 -2
- package/client/assets/DelayIndicator-CFCDQ7FN.js.br +0 -0
- package/client/assets/DelayIndicator-CFCDQ7FN.js.gz +0 -0
- package/client/assets/{DelayIndicator-B_JKLKYW.js.map → DelayIndicator-CFCDQ7FN.js.map} +1 -1
- package/client/assets/{EditorFeatureWrapper-DzBxDvRn.js → EditorFeatureWrapper-D55c8JBz.js} +2 -2
- package/client/assets/EditorFeatureWrapper-D55c8JBz.js.br +0 -0
- package/client/assets/EditorFeatureWrapper-D55c8JBz.js.gz +0 -0
- package/client/assets/{EditorFeatureWrapper-DzBxDvRn.js.map → EditorFeatureWrapper-D55c8JBz.js.map} +1 -1
- package/client/assets/{EditorUtils-De0umjb-.js → EditorUtils-CFE106qQ.js} +2 -2
- package/client/assets/EditorUtils-CFE106qQ.js.br +0 -0
- package/client/assets/EditorUtils-CFE106qQ.js.gz +0 -0
- package/client/assets/{EditorUtils-De0umjb-.js.map → EditorUtils-CFE106qQ.js.map} +1 -1
- package/client/assets/{Empty-BYF0tVRk.js → Empty-C-JO_XAr.js} +2 -2
- package/client/assets/Empty-C-JO_XAr.js.br +2 -0
- package/client/assets/Empty-C-JO_XAr.js.gz +0 -0
- package/client/assets/{Empty-BYF0tVRk.js.map → Empty-C-JO_XAr.js.map} +1 -1
- package/client/assets/{EmptyPage-DYH2bswA.js → EmptyPage-BSzsxpGg.js} +2 -2
- package/client/assets/EmptyPage-BSzsxpGg.js.br +1 -0
- package/client/assets/EmptyPage-BSzsxpGg.js.gz +0 -0
- package/client/assets/{EmptyPage-DYH2bswA.js.map → EmptyPage-BSzsxpGg.js.map} +1 -1
- package/client/assets/{FollowButton-DyWsvyFF.js → FollowButton-Mox6N4JW.js} +2 -2
- package/client/assets/FollowButton-Mox6N4JW.js.br +0 -0
- package/client/assets/FollowButton-Mox6N4JW.js.gz +0 -0
- package/client/assets/{FollowButton-DyWsvyFF.js.map → FollowButton-Mox6N4JW.js.map} +1 -1
- package/client/assets/MessageControlExport-BL2ip9qN.js +2 -0
- package/client/assets/MessageControlExport-BL2ip9qN.js.br +0 -0
- package/client/assets/MessageControlExport-BL2ip9qN.js.gz +0 -0
- package/client/assets/{MessageControlExport-yLGU2dMq.js.map → MessageControlExport-BL2ip9qN.js.map} +1 -1
- package/client/assets/{MilestoneEditor-GkzJ-h1C.js → MilestoneEditor-DcWPGKNK.js} +2 -2
- package/client/assets/MilestoneEditor-DcWPGKNK.js.br +0 -0
- package/client/assets/MilestoneEditor-DcWPGKNK.js.gz +0 -0
- package/client/assets/{MilestoneEditor-GkzJ-h1C.js.map → MilestoneEditor-DcWPGKNK.js.map} +1 -1
- package/client/assets/Modal-D3tAPV2u.css +1 -0
- package/client/assets/Modal-D3tAPV2u.css.br +0 -0
- package/client/assets/Modal-D3tAPV2u.css.gz +0 -0
- package/client/assets/Modal-krcwDRb-.js +2 -0
- package/client/assets/Modal-krcwDRb-.js.br +0 -0
- package/client/assets/Modal-krcwDRb-.js.gz +0 -0
- package/client/assets/Modal-krcwDRb-.js.map +1 -0
- package/client/assets/{MultiPartProgressBar-BITERKS0.js → MultiPartProgressBar-BXQbpM-j.js} +2 -2
- package/client/assets/MultiPartProgressBar-BXQbpM-j.js.br +0 -0
- package/client/assets/MultiPartProgressBar-BXQbpM-j.js.gz +0 -0
- package/client/assets/{MultiPartProgressBar-BITERKS0.js.map → MultiPartProgressBar-BXQbpM-j.js.map} +1 -1
- package/client/assets/{OperatorExport-DMZ6eQfT.js → OperatorExport-C50KHBrD.js} +2 -2
- package/client/assets/OperatorExport-C50KHBrD.js.br +0 -0
- package/client/assets/OperatorExport-C50KHBrD.js.gz +0 -0
- package/client/assets/{OperatorExport-DMZ6eQfT.js.map → OperatorExport-C50KHBrD.js.map} +1 -1
- package/client/assets/OverviewWrapper-MGJ1uE5W.js +2 -0
- package/client/assets/OverviewWrapper-MGJ1uE5W.js.br +0 -0
- package/client/assets/OverviewWrapper-MGJ1uE5W.js.gz +0 -0
- package/client/assets/{OverviewWrapper-riM6vPno.js.map → OverviewWrapper-MGJ1uE5W.js.map} +1 -1
- package/client/assets/{ProjectInfo-DxtMq70a.js → ProjectInfo-CJ-GLvVG.js} +2 -2
- package/client/assets/ProjectInfo-CJ-GLvVG.js.br +0 -0
- package/client/assets/ProjectInfo-CJ-GLvVG.js.gz +0 -0
- package/client/assets/{ProjectInfo-DxtMq70a.js.map → ProjectInfo-CJ-GLvVG.js.map} +1 -1
- package/client/assets/{ProtectRoute-p1fmtLeu.js → ProtectRoute-DJ9xZnPI.js} +2 -2
- package/client/assets/ProtectRoute-DJ9xZnPI.js.br +0 -0
- package/client/assets/ProtectRoute-DJ9xZnPI.js.gz +0 -0
- package/client/assets/{ProtectRoute-p1fmtLeu.js.map → ProtectRoute-DJ9xZnPI.js.map} +1 -1
- package/client/assets/{ProtectedCuesheet-CvRnqT0z.js → ProtectedCuesheet-B8tg6Mmo.js} +2 -2
- package/client/assets/ProtectedCuesheet-B8tg6Mmo.js.br +0 -0
- package/client/assets/ProtectedCuesheet-B8tg6Mmo.js.gz +0 -0
- package/client/assets/{ProtectedCuesheet-CvRnqT0z.js.map → ProtectedCuesheet-B8tg6Mmo.js.map} +1 -1
- package/client/assets/ProtectedEditor-Bl4wV72N.js +3 -0
- package/client/assets/ProtectedEditor-Bl4wV72N.js.br +0 -0
- package/client/assets/ProtectedEditor-Bl4wV72N.js.gz +0 -0
- package/client/assets/ProtectedEditor-Bl4wV72N.js.map +1 -0
- package/client/assets/{RundownEntry-B1dSz1wu.js → RundownEntry-D9tXNXPy.js} +2 -2
- package/client/assets/RundownEntry-D9tXNXPy.js.br +0 -0
- package/client/assets/RundownEntry-D9tXNXPy.js.gz +0 -0
- package/client/assets/{RundownEntry-B1dSz1wu.js.map → RundownEntry-D9tXNXPy.js.map} +1 -1
- package/client/assets/RundownExport-1zBZurIG.css +1 -0
- package/client/assets/RundownExport-1zBZurIG.css.br +0 -0
- package/client/assets/RundownExport-1zBZurIG.css.gz +0 -0
- package/client/assets/RundownExport-D6uAmFbb.js +3 -0
- package/client/assets/RundownExport-D6uAmFbb.js.br +0 -0
- package/client/assets/RundownExport-D6uAmFbb.js.gz +0 -0
- package/client/assets/RundownExport-D6uAmFbb.js.map +1 -0
- package/client/assets/{Select-niU9Razm.js → Select-BLA-yQMq.js} +2 -2
- package/client/assets/Select-BLA-yQMq.js.br +0 -0
- package/client/assets/Select-BLA-yQMq.js.gz +0 -0
- package/client/assets/{Select-niU9Razm.js.map → Select-BLA-yQMq.js.map} +1 -1
- package/client/assets/{Studio-CWdJq4bx.js → Studio-DbP92DTf.js} +2 -2
- package/client/assets/Studio-DbP92DTf.js.br +0 -0
- package/client/assets/Studio-DbP92DTf.js.gz +0 -0
- package/client/assets/{Studio-CWdJq4bx.js.map → Studio-DbP92DTf.js.map} +1 -1
- package/client/assets/{StyleEditor-BIFjHsgD.js → StyleEditor-DNjZ46Qf.js} +2 -2
- package/client/assets/StyleEditor-DNjZ46Qf.js.br +0 -0
- package/client/assets/StyleEditor-DNjZ46Qf.js.gz +0 -0
- package/client/assets/{StyleEditor-BIFjHsgD.js.map → StyleEditor-DNjZ46Qf.js.map} +1 -1
- package/client/assets/{SuperscriptTime-DCTyUARx.js → SuperscriptTime-C8ypTVpH.js} +2 -2
- package/client/assets/SuperscriptTime-C8ypTVpH.js.br +0 -0
- package/client/assets/SuperscriptTime-C8ypTVpH.js.gz +0 -0
- package/client/assets/{SuperscriptTime-DCTyUARx.js.map → SuperscriptTime-C8ypTVpH.js.map} +1 -1
- package/client/assets/{TimeElements-DBVGVx71.js → TimeElements-DlEBhXe0.js} +2 -2
- package/client/assets/TimeElements-DlEBhXe0.js.br +0 -0
- package/client/assets/TimeElements-DlEBhXe0.js.gz +0 -0
- package/client/assets/{TimeElements-DBVGVx71.js.map → TimeElements-DlEBhXe0.js.map} +1 -1
- package/client/assets/{TimeInput-wQ67FbW6.js → TimeInput-DU09ewqh.js} +2 -2
- package/client/assets/TimeInput-DU09ewqh.js.br +0 -0
- package/client/assets/TimeInput-DU09ewqh.js.gz +0 -0
- package/client/assets/{TimeInput-wQ67FbW6.js.map → TimeInput-DU09ewqh.js.map} +1 -1
- package/client/assets/{TimelinePage-DZefE2vQ.js → TimelinePage-DTwqRihn.js} +2 -2
- package/client/assets/TimelinePage-DTwqRihn.js.br +0 -0
- package/client/assets/TimelinePage-DTwqRihn.js.gz +0 -0
- package/client/assets/{TimelinePage-DZefE2vQ.js.map → TimelinePage-DTwqRihn.js.map} +1 -1
- package/client/assets/Timer-B7nk3TMf.css +1 -0
- package/client/assets/Timer-B7nk3TMf.css.br +0 -0
- package/client/assets/Timer-B7nk3TMf.css.gz +0 -0
- package/client/assets/Timer-jjWAunJc.js +2 -0
- package/client/assets/Timer-jjWAunJc.js.br +0 -0
- package/client/assets/Timer-jjWAunJc.js.gz +0 -0
- package/client/assets/Timer-jjWAunJc.js.map +1 -0
- package/client/assets/TimerControlExport-i0ZDpUx7.js +2 -0
- package/client/assets/TimerControlExport-i0ZDpUx7.js.br +0 -0
- package/client/assets/TimerControlExport-i0ZDpUx7.js.gz +0 -0
- package/client/assets/{TimerControlExport-C1C_vBX4.js.map → TimerControlExport-i0ZDpUx7.js.map} +1 -1
- package/client/assets/{TitleCard-B4N-kCM3.js → TitleCard-BgOtucv6.js} +2 -2
- package/client/assets/TitleCard-BgOtucv6.js.br +0 -0
- package/client/assets/TitleCard-BgOtucv6.js.gz +0 -0
- package/client/assets/{TitleCard-B4N-kCM3.js.map → TitleCard-BgOtucv6.js.map} +1 -1
- package/client/assets/{Tooltip-DJ8Y4CO4.js → Tooltip-C0rGHLsB.js} +2 -2
- package/client/assets/Tooltip-C0rGHLsB.js.br +0 -0
- package/client/assets/Tooltip-C0rGHLsB.js.gz +0 -0
- package/client/assets/{Tooltip-DJ8Y4CO4.js.map → Tooltip-C0rGHLsB.js.map} +1 -1
- package/client/assets/{ViewLogo-Dd60EREE.js → ViewLogo--9miplQv.js} +2 -2
- package/client/assets/ViewLogo--9miplQv.js.br +0 -0
- package/client/assets/ViewLogo--9miplQv.js.gz +0 -0
- package/client/assets/{ViewLogo-Dd60EREE.js.map → ViewLogo--9miplQv.js.map} +1 -1
- package/client/assets/{ViewParamsEditor-BWEYbq_S.js → ViewParamsEditor-BFu_0oIb.js} +2 -2
- package/client/assets/ViewParamsEditor-BFu_0oIb.js.br +0 -0
- package/client/assets/ViewParamsEditor-BFu_0oIb.js.gz +0 -0
- package/client/assets/{ViewParamsEditor-BWEYbq_S.js.map → ViewParamsEditor-BFu_0oIb.js.map} +1 -1
- package/client/assets/{dateConfig-8rhb0Dbh.js → dateConfig-WYqMzV9D.js} +2 -2
- package/client/assets/dateConfig-WYqMzV9D.js.br +0 -0
- package/client/assets/dateConfig-WYqMzV9D.js.gz +0 -0
- package/client/assets/{dateConfig-8rhb0Dbh.js.map → dateConfig-WYqMzV9D.js.map} +1 -1
- package/client/assets/{editorSettings-LMnfWux6.js → editorSettings-CCHx-wCx.js} +2 -2
- package/client/assets/editorSettings-CCHx-wCx.js.br +0 -0
- package/client/assets/editorSettings-CCHx-wCx.js.gz +0 -0
- package/client/assets/{editorSettings-LMnfWux6.js.map → editorSettings-CCHx-wCx.js.map} +1 -1
- package/client/assets/{getProgress-CyJTu6f5.js → getProgress-B94Ieskb.js} +2 -2
- package/client/assets/getProgress-B94Ieskb.js.br +0 -0
- package/client/assets/getProgress-B94Ieskb.js.gz +0 -0
- package/client/assets/{getProgress-CyJTu6f5.js.map → getProgress-B94Ieskb.js.map} +1 -1
- package/client/assets/{index-5QAOtSTh.js → index-njXwwjfn.js} +3 -3
- package/client/assets/index-njXwwjfn.js.br +0 -0
- package/client/assets/index-njXwwjfn.js.gz +0 -0
- package/client/assets/{index-5QAOtSTh.js.map → index-njXwwjfn.js.map} +1 -1
- package/client/assets/{offset-CLDSqOP5.js → offset-D1q-72D-.js} +2 -2
- package/client/assets/offset-D1q-72D-.js.br +0 -0
- package/client/assets/offset-D1q-72D-.js.gz +0 -0
- package/client/assets/{offset-CLDSqOP5.js.map → offset-D1q-72D-.js.map} +1 -1
- package/client/assets/{parseUserTime-CCDHpp7D.js → parseUserTime-Bc1pSJR2.js} +2 -2
- package/client/assets/parseUserTime-Bc1pSJR2.js.br +0 -0
- package/client/assets/parseUserTime-Bc1pSJR2.js.gz +0 -0
- package/client/assets/{parseUserTime-CCDHpp7D.js.map → parseUserTime-Bc1pSJR2.js.map} +1 -1
- package/client/assets/{playbackstate-6lBh6omZ.js → playbackstate-BpzbtG9F.js} +2 -2
- package/client/assets/playbackstate-BpzbtG9F.js.br +0 -0
- package/client/assets/playbackstate-BpzbtG9F.js.gz +0 -0
- package/client/assets/{playbackstate-6lBh6omZ.js.map → playbackstate-BpzbtG9F.js.map} +1 -1
- package/client/assets/{presentation.utils-BUIuV_2e.js → presentation.utils-B2baBe3j.js} +2 -2
- package/client/assets/presentation.utils-B2baBe3j.js.br +0 -0
- package/client/assets/presentation.utils-B2baBe3j.js.gz +0 -0
- package/client/assets/{presentation.utils-BUIuV_2e.js.map → presentation.utils-B2baBe3j.js.map} +1 -1
- package/client/assets/{rundownUtils-Cnd2prRX.js → rundownUtils-H6xvQyre.js} +2 -2
- package/client/assets/rundownUtils-H6xvQyre.js.br +0 -0
- package/client/assets/rundownUtils-H6xvQyre.js.gz +0 -0
- package/client/assets/{rundownUtils-Cnd2prRX.js.map → rundownUtils-H6xvQyre.js.map} +1 -1
- package/client/assets/{useCustomFields-BuxKsqGS.js → useCustomFields-Da0Li7nQ.js} +2 -2
- package/client/assets/useCustomFields-Da0Li7nQ.js.br +0 -0
- package/client/assets/useCustomFields-Da0Li7nQ.js.gz +0 -0
- package/client/assets/{useCustomFields-BuxKsqGS.js.map → useCustomFields-Da0Li7nQ.js.map} +1 -1
- package/client/assets/{useFollowComponent-iGQv4zoS.js → useFollowComponent-Qo3FobyV.js} +2 -2
- package/client/assets/useFollowComponent-Qo3FobyV.js.br +0 -0
- package/client/assets/useFollowComponent-Qo3FobyV.js.gz +0 -0
- package/client/assets/{useFollowComponent-iGQv4zoS.js.map → useFollowComponent-Qo3FobyV.js.map} +1 -1
- package/client/assets/{useProjectData-CetvEK9E.js → useProjectData-DW06zQvF.js} +2 -2
- package/client/assets/useProjectData-DW06zQvF.js.br +0 -0
- package/client/assets/useProjectData-DW06zQvF.js.gz +0 -0
- package/client/assets/{useProjectData-CetvEK9E.js.map → useProjectData-DW06zQvF.js.map} +1 -1
- package/client/assets/{useReport-PEFRsOhF.js → useReport-DhFY2L8v.js} +2 -2
- package/client/assets/useReport-DhFY2L8v.js.br +0 -0
- package/client/assets/useReport-DhFY2L8v.js.gz +0 -0
- package/client/assets/{useReport-PEFRsOhF.js.map → useReport-DhFY2L8v.js.map} +1 -1
- package/client/assets/useRundown-ihoU8qBi.js +2 -0
- package/client/assets/useRundown-ihoU8qBi.js.br +0 -0
- package/client/assets/useRundown-ihoU8qBi.js.gz +0 -0
- package/client/assets/useRundown-ihoU8qBi.js.map +1 -0
- package/client/assets/{useWindowTitle-b5fN0StF.js → useWindowTitle-B2UzPuki.js} +2 -2
- package/client/assets/useWindowTitle-B2UzPuki.js.br +0 -0
- package/client/assets/useWindowTitle-B2UzPuki.js.gz +0 -0
- package/client/assets/{useWindowTitle-b5fN0StF.js.map → useWindowTitle-B2UzPuki.js.map} +1 -1
- package/client/assets/{validateEvent-Bvgk1E-Y.js → validateEvent-BJMwP_mq.js} +2 -2
- package/client/assets/validateEvent-BJMwP_mq.js.br +0 -0
- package/client/assets/validateEvent-BJMwP_mq.js.gz +0 -0
- package/client/assets/{validateEvent-Bvgk1E-Y.js.map → validateEvent-BJMwP_mq.js.map} +1 -1
- package/client/assets/{vendor-Cu5xgv5K.js → vendor-9UkPSc5K.js} +3 -3
- package/client/assets/vendor-9UkPSc5K.js.br +0 -0
- package/client/assets/vendor-9UkPSc5K.js.gz +0 -0
- package/client/assets/{vendor-Cu5xgv5K.js.map → vendor-9UkPSc5K.js.map} +1 -1
- package/client/assets/{viewLoader.utils-BPhACxyG.js → viewLoader.utils-DQGhrjSp.js} +2 -2
- package/client/assets/viewLoader.utils-DQGhrjSp.js.br +0 -0
- package/client/assets/viewLoader.utils-DQGhrjSp.js.gz +0 -0
- package/client/assets/{viewLoader.utils-BPhACxyG.js.map → viewLoader.utils-DQGhrjSp.js.map} +1 -1
- package/client/index.html +2 -2
- package/external/demo/app.js +2 -2
- package/package.json +1 -1
- package/server/index.cjs +97 -88
- package/client/assets/Backstage-ZSqb8OU6.js.br +0 -0
- package/client/assets/Backstage-ZSqb8OU6.js.gz +0 -0
- package/client/assets/Countdown-DVRZbeRP.js.br +0 -0
- package/client/assets/Countdown-DVRZbeRP.js.gz +0 -0
- package/client/assets/Countdown-DVRZbeRP.js.map +0 -1
- package/client/assets/CustomTranslationModal-D_Cy0d_H.js.br +0 -0
- package/client/assets/CustomTranslationModal-D_Cy0d_H.js.gz +0 -0
- package/client/assets/DelayIndicator-B_JKLKYW.js.br +0 -0
- package/client/assets/DelayIndicator-B_JKLKYW.js.gz +0 -0
- package/client/assets/EditorFeatureWrapper-DzBxDvRn.js.br +0 -0
- package/client/assets/EditorFeatureWrapper-DzBxDvRn.js.gz +0 -0
- package/client/assets/EditorUtils-De0umjb-.js.br +0 -0
- package/client/assets/EditorUtils-De0umjb-.js.gz +0 -0
- package/client/assets/Empty-BYF0tVRk.js.br +0 -2
- package/client/assets/Empty-BYF0tVRk.js.gz +0 -0
- package/client/assets/EmptyPage-DYH2bswA.js.br +0 -0
- package/client/assets/EmptyPage-DYH2bswA.js.gz +0 -0
- package/client/assets/FollowButton-DyWsvyFF.js.br +0 -0
- package/client/assets/FollowButton-DyWsvyFF.js.gz +0 -0
- package/client/assets/MessageControlExport-yLGU2dMq.js +0 -2
- package/client/assets/MessageControlExport-yLGU2dMq.js.br +0 -0
- package/client/assets/MessageControlExport-yLGU2dMq.js.gz +0 -0
- package/client/assets/MilestoneEditor-GkzJ-h1C.js.br +0 -0
- package/client/assets/MilestoneEditor-GkzJ-h1C.js.gz +0 -0
- package/client/assets/Modal-BKL-5GzU.js +0 -2
- package/client/assets/Modal-BKL-5GzU.js.br +0 -0
- package/client/assets/Modal-BKL-5GzU.js.gz +0 -0
- package/client/assets/Modal-BKL-5GzU.js.map +0 -1
- package/client/assets/Modal-BgJx3SNK.css +0 -1
- package/client/assets/Modal-BgJx3SNK.css.br +0 -0
- package/client/assets/Modal-BgJx3SNK.css.gz +0 -0
- package/client/assets/MultiPartProgressBar-BITERKS0.js.br +0 -0
- package/client/assets/MultiPartProgressBar-BITERKS0.js.gz +0 -0
- package/client/assets/OperatorExport-DMZ6eQfT.js.br +0 -0
- package/client/assets/OperatorExport-DMZ6eQfT.js.gz +0 -0
- package/client/assets/OverviewWrapper-riM6vPno.js +0 -2
- package/client/assets/OverviewWrapper-riM6vPno.js.br +0 -0
- package/client/assets/OverviewWrapper-riM6vPno.js.gz +0 -0
- package/client/assets/ProjectInfo-DxtMq70a.js.br +0 -0
- package/client/assets/ProjectInfo-DxtMq70a.js.gz +0 -0
- package/client/assets/ProtectRoute-p1fmtLeu.js.br +0 -0
- package/client/assets/ProtectRoute-p1fmtLeu.js.gz +0 -0
- package/client/assets/ProtectedCuesheet-CvRnqT0z.js.br +0 -0
- package/client/assets/ProtectedCuesheet-CvRnqT0z.js.gz +0 -0
- package/client/assets/ProtectedEditor-D4UXj1xL.js +0 -3
- package/client/assets/ProtectedEditor-D4UXj1xL.js.br +0 -0
- package/client/assets/ProtectedEditor-D4UXj1xL.js.gz +0 -0
- package/client/assets/ProtectedEditor-D4UXj1xL.js.map +0 -1
- package/client/assets/RundownEntry-B1dSz1wu.js.br +0 -0
- package/client/assets/RundownEntry-B1dSz1wu.js.gz +0 -0
- package/client/assets/RundownExport-CUtaG16H.css +0 -1
- package/client/assets/RundownExport-CUtaG16H.css.br +0 -0
- package/client/assets/RundownExport-CUtaG16H.css.gz +0 -0
- package/client/assets/RundownExport-WjLpncYT.js +0 -3
- package/client/assets/RundownExport-WjLpncYT.js.br +0 -0
- package/client/assets/RundownExport-WjLpncYT.js.gz +0 -0
- package/client/assets/RundownExport-WjLpncYT.js.map +0 -1
- package/client/assets/Select-niU9Razm.js.br +0 -0
- package/client/assets/Select-niU9Razm.js.gz +0 -0
- package/client/assets/Studio-CWdJq4bx.js.br +0 -0
- package/client/assets/Studio-CWdJq4bx.js.gz +0 -0
- package/client/assets/StyleEditor-BIFjHsgD.js.br +0 -0
- package/client/assets/StyleEditor-BIFjHsgD.js.gz +0 -0
- package/client/assets/SuperscriptTime-DCTyUARx.js.br +0 -0
- package/client/assets/SuperscriptTime-DCTyUARx.js.gz +0 -0
- package/client/assets/TimeElements-DBVGVx71.js.br +0 -0
- package/client/assets/TimeElements-DBVGVx71.js.gz +0 -0
- package/client/assets/TimeInput-wQ67FbW6.js.br +0 -0
- package/client/assets/TimeInput-wQ67FbW6.js.gz +0 -0
- package/client/assets/TimelinePage-DZefE2vQ.js.br +0 -0
- package/client/assets/TimelinePage-DZefE2vQ.js.gz +0 -0
- package/client/assets/Timer-Bs450x86.js +0 -2
- package/client/assets/Timer-Bs450x86.js.br +0 -0
- package/client/assets/Timer-Bs450x86.js.gz +0 -0
- package/client/assets/Timer-Bs450x86.js.map +0 -1
- package/client/assets/Timer-DGNfbBKM.css +0 -1
- package/client/assets/Timer-DGNfbBKM.css.br +0 -0
- package/client/assets/Timer-DGNfbBKM.css.gz +0 -0
- package/client/assets/TimerControlExport-C1C_vBX4.js +0 -2
- package/client/assets/TimerControlExport-C1C_vBX4.js.br +0 -0
- package/client/assets/TimerControlExport-C1C_vBX4.js.gz +0 -0
- package/client/assets/TitleCard-B4N-kCM3.js.br +0 -0
- package/client/assets/TitleCard-B4N-kCM3.js.gz +0 -0
- package/client/assets/Tooltip-DJ8Y4CO4.js.br +0 -0
- package/client/assets/Tooltip-DJ8Y4CO4.js.gz +0 -0
- package/client/assets/ViewLogo-Dd60EREE.js.br +0 -0
- package/client/assets/ViewLogo-Dd60EREE.js.gz +0 -0
- package/client/assets/ViewParamsEditor-BWEYbq_S.js.br +0 -0
- package/client/assets/ViewParamsEditor-BWEYbq_S.js.gz +0 -0
- package/client/assets/dateConfig-8rhb0Dbh.js.br +0 -0
- package/client/assets/dateConfig-8rhb0Dbh.js.gz +0 -0
- package/client/assets/editorSettings-LMnfWux6.js.br +0 -0
- package/client/assets/editorSettings-LMnfWux6.js.gz +0 -0
- package/client/assets/getProgress-CyJTu6f5.js.br +0 -0
- package/client/assets/getProgress-CyJTu6f5.js.gz +0 -0
- package/client/assets/index-5QAOtSTh.js.br +0 -0
- package/client/assets/index-5QAOtSTh.js.gz +0 -0
- package/client/assets/offset-CLDSqOP5.js.br +0 -0
- package/client/assets/offset-CLDSqOP5.js.gz +0 -0
- package/client/assets/parseUserTime-CCDHpp7D.js.br +0 -0
- package/client/assets/parseUserTime-CCDHpp7D.js.gz +0 -0
- package/client/assets/playbackstate-6lBh6omZ.js.br +0 -0
- package/client/assets/playbackstate-6lBh6omZ.js.gz +0 -0
- package/client/assets/presentation.utils-BUIuV_2e.js.br +0 -0
- package/client/assets/presentation.utils-BUIuV_2e.js.gz +0 -0
- package/client/assets/rundownUtils-Cnd2prRX.js.br +0 -0
- package/client/assets/rundownUtils-Cnd2prRX.js.gz +0 -0
- package/client/assets/useCustomFields-BuxKsqGS.js.br +0 -0
- package/client/assets/useCustomFields-BuxKsqGS.js.gz +0 -0
- package/client/assets/useFollowComponent-iGQv4zoS.js.br +0 -0
- package/client/assets/useFollowComponent-iGQv4zoS.js.gz +0 -0
- package/client/assets/useProjectData-CetvEK9E.js.br +0 -0
- package/client/assets/useProjectData-CetvEK9E.js.gz +0 -0
- package/client/assets/useReport-PEFRsOhF.js.br +0 -0
- package/client/assets/useReport-PEFRsOhF.js.gz +0 -0
- package/client/assets/useRundown-D8CYATNi.js +0 -2
- package/client/assets/useRundown-D8CYATNi.js.br +0 -0
- package/client/assets/useRundown-D8CYATNi.js.gz +0 -0
- package/client/assets/useRundown-D8CYATNi.js.map +0 -1
- package/client/assets/useWindowTitle-b5fN0StF.js.br +0 -0
- package/client/assets/useWindowTitle-b5fN0StF.js.gz +0 -0
- package/client/assets/validateEvent-Bvgk1E-Y.js.br +0 -0
- package/client/assets/validateEvent-Bvgk1E-Y.js.gz +0 -0
- package/client/assets/vendor-Cu5xgv5K.js.br +0 -0
- package/client/assets/vendor-Cu5xgv5K.js.gz +0 -0
- package/client/assets/viewLoader.utils-BPhACxyG.js.br +0 -0
- package/client/assets/viewLoader.utils-BPhACxyG.js.gz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomTranslationModal-
|
|
1
|
+
{"version":3,"file":"CustomTranslationModal-BBNxpds0.js","sources":["../../src/features/app-settings/panel/settings-panel/composite/CustomTranslationModal.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { langEn, TranslationObject } from 'ontime-types';\n\nimport { maybeAxiosError } from '../../../../../common/api/utils';\nimport Button from '../../../../../common/components/buttons/Button';\nimport Info from '../../../../../common/components/info/Info';\nimport Input from '../../../../../common/components/input/input/Input';\nimport Modal from '../../../../../common/components/modal/Modal';\nimport { useTranslation } from '../../../../../translation/TranslationProvider';\nimport * as Panel from '../../../panel-utils/PanelUtils';\n\ninterface CustomTranslationModalProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\nexport default function CustomTranslationModal({ isOpen, onClose }: CustomTranslationModalProps) {\n const { userTranslation, postUserTranslation } = useTranslation();\n\n const defaultValues = useMemo(() => {\n const values: Record<string, string> = {};\n Object.keys(langEn).forEach((key) => {\n values[toFormKey(key)] = userTranslation[key as keyof TranslationObject] || '';\n });\n return values;\n }, [userTranslation]);\n\n const {\n handleSubmit,\n register,\n reset,\n formState: { isSubmitting, isDirty, errors, isValid },\n setError,\n } = useForm({\n defaultValues,\n resetOptions: {\n keepDirtyValues: true,\n },\n mode: 'onChange',\n });\n\n const onSubmit = async (formData: Record<string, string>) => {\n try {\n const translationData: Record<string, string> = {};\n Object.keys(formData).forEach((key) => {\n translationData[toApiKey(key)] = formData[key];\n });\n\n await postUserTranslation(translationData as TranslationObject);\n reset(formData);\n } catch (error) {\n setError('root', { message: maybeAxiosError(error) });\n }\n };\n\n return (\n <Modal\n title='Edit custom translations'\n isOpen={isOpen}\n onClose={onClose}\n showCloseButton\n showBackdrop\n bodyElements={\n <Panel.Section as='form' onSubmit={handleSubmit(onSubmit)} id='custom-translations-form'>\n <Info>\n Provide custom translations for the public views of Ontime. <br />\n You will need to activate this in the settings by selecting "Custom" as the views language.\n </Info>\n <Panel.ListGroup>\n {Object.entries(langEn).map(([key, value]) => (\n <Panel.ListItem key={key}>\n <Panel.Field title={value} description='' error={errors[toFormKey(key)]?.message} />\n <Input\n maxLength={150}\n {...register(toFormKey(key), {\n required: 'This field is required',\n })}\n placeholder={value}\n />\n </Panel.ListItem>\n ))}\n </Panel.ListGroup>\n </Panel.Section>\n }\n footerElements={\n <div>\n {errors?.root && <Panel.Error>{errors.root.message}</Panel.Error>}\n <Panel.InlineElements align='apart'>\n <Panel.InlineElements>\n <Button size='large' onClick={onClose}>\n Cancel\n </Button>\n <Button\n variant='primary'\n size='large'\n type='submit'\n form='custom-translations-form'\n disabled={isSubmitting || !isDirty || !isValid}\n loading={isSubmitting}\n >\n Save changes\n </Button>\n </Panel.InlineElements>\n </Panel.InlineElements>\n </div>\n }\n />\n );\n}\n\nfunction toFormKey(key: string) {\n return key.replace('.', '_');\n}\n\nfunction toApiKey(key: string) {\n return key.replace('_', '.');\n}\n"],"names":["CustomTranslationModal","isOpen","onClose","userTranslation","postUserTranslation","useTranslation","defaultValues","useMemo","values","langEn","key","toFormKey","handleSubmit","register","reset","isSubmitting","isDirty","errors","isValid","setError","useForm","onSubmit","formData","translationData","toApiKey","error","maybeAxiosError","jsx","Modal","jsxs","Panel.Section","Info","Panel.ListGroup","value","Panel.ListItem","Panel.Field","_a","Input","Panel.Error","Panel.InlineElements","Button"],"mappings":"qoBAiBA,SAAwBA,EAAuB,CAAE,OAAAC,EAAQ,QAAAC,GAAwC,CAC/F,KAAM,CAAE,gBAAAC,EAAiB,oBAAAC,CAAoB,EAAIC,EAAe,EAE1DC,EAAgBC,EAAAA,QAAQ,IAAM,CAClC,MAAMC,EAAiC,CAAC,EACxC,cAAO,KAAKC,CAAM,EAAE,QAASC,GAAQ,CACnCF,EAAOG,EAAUD,CAAG,CAAC,EAAIP,EAAgBO,CAA8B,GAAK,EAAA,CAC7E,EACMF,CAAA,EACN,CAACL,CAAe,CAAC,EAEd,CACJ,aAAAS,EACA,SAAAC,EACA,MAAAC,EACA,UAAW,CAAE,aAAAC,EAAc,QAAAC,EAAS,OAAAC,EAAQ,QAAAC,CAAQ,EACpD,SAAAC,GACEC,EAAQ,CACV,cAAAd,EACA,aAAc,CACZ,gBAAiB,EACnB,EACA,KAAM,UAAA,CACP,EAEKe,EAAW,MAAOC,GAAqC,CACvD,GAAA,CACF,MAAMC,EAA0C,CAAC,EACjD,OAAO,KAAKD,CAAQ,EAAE,QAASZ,GAAQ,CACrCa,EAAgBC,EAASd,CAAG,CAAC,EAAIY,EAASZ,CAAG,CAAA,CAC9C,EAED,MAAMN,EAAoBmB,CAAoC,EAC9DT,EAAMQ,CAAQ,QACPG,EAAO,CACdN,EAAS,OAAQ,CAAE,QAASO,EAAgBD,CAAK,EAAG,CAAA,CAExD,EAGE,OAAAE,EAAA,IAACC,EAAA,CACC,MAAM,2BACN,OAAA3B,EACA,QAAAC,EACA,gBAAe,GACf,aAAY,GACZ,aACE2B,EAAA,KAACC,EAAA,CAAc,GAAG,OAAO,SAAUlB,EAAaS,CAAQ,EAAG,GAAG,2BAC5D,SAAA,CAAAQ,OAACE,EAAK,CAAA,SAAA,CAAA,qEACyD,KAAG,EAAA,EAAE,6FAAA,EAEpE,QACCC,EAAA,CACE,SAAA,OAAO,QAAQvB,CAAM,EAAE,IAAI,CAAC,CAACC,EAAKuB,CAAK,IACrCJ,OAAAA,OAAAA,EAAAA,KAAAK,EAAA,CACC,SAAA,CAAAP,EAAAA,IAACQ,EAAA,CAAY,MAAOF,EAAO,YAAY,GAAG,OAAOG,EAAAnB,EAAON,EAAUD,CAAG,CAAC,IAArB,YAAA0B,EAAwB,OAAS,CAAA,EAClFT,EAAA,IAACU,EAAA,CACC,UAAW,IACV,GAAGxB,EAASF,EAAUD,CAAG,EAAG,CAC3B,SAAU,wBAAA,CACX,EACD,YAAauB,CAAA,CAAA,CACf,CARmB,EAAAvB,CASrB,EACD,CACH,CAAA,CAAA,EACF,EAEF,sBACG,MACE,CAAA,SAAA,EAAAO,GAAA,YAAAA,EAAQ,OAASU,EAAAA,IAAAW,EAAA,CAAa,SAAArB,EAAO,KAAK,QAAQ,EACnDU,MAACY,EAAA,CAAqB,MAAM,QAC1B,SAAAV,EAAA,KAACU,EAAA,CACC,SAAA,CAAAZ,MAACa,EAAO,CAAA,KAAK,QAAQ,QAAStC,EAAS,SAEvC,SAAA,EACAyB,EAAA,IAACa,EAAA,CACC,QAAQ,UACR,KAAK,QACL,KAAK,SACL,KAAK,2BACL,SAAUzB,GAAgB,CAACC,GAAW,CAACE,EACvC,QAASH,EACV,SAAA,cAAA,CAAA,CAED,CAAA,CACF,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CAEJ,CAEJ,CAEA,SAASJ,EAAUD,EAAa,CACvB,OAAAA,EAAI,QAAQ,IAAK,GAAG,CAC7B,CAEA,SAASc,EAASd,EAAa,CACtB,OAAAA,EAAI,QAAQ,IAAK,GAAG,CAC7B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as a,aT as s,b2 as l}from"./vendor-
|
|
2
|
-
//# sourceMappingURL=DelayIndicator-
|
|
1
|
+
import{j as a,aT as s,b2 as l}from"./vendor-9UkPSc5K.js";import{m as t}from"./dateConfig-WYqMzV9D.js";import{T as d}from"./Tooltip-C0rGHLsB.js";(function(){try{var o=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new o.Error().stack;e&&(o._sentryDebugIds=o._sentryDebugIds||{},o._sentryDebugIds[e]="e74baa9a-fa50-4164-a40c-bed9689a6193",o._sentryDebugIdIdentifier="sentry-dbid-e74baa9a-fa50-4164-a40c-bed9689a6193")}catch{}})();const i="_delaySymbol_1i27r_17",y={delaySymbol:i};function m(o){const{delayValue:e,tooltipPrefix:n}=o;if(typeof e!="number"||e===0)return null;const r=n?`${n} ${t(e)}`:t(e);return a.jsx(d,{text:r,render:a.jsx("span",{}),className:y.delaySymbol,children:e<0?a.jsx(s,{}):a.jsx(l,{})})}export{m as D};
|
|
2
|
+
//# sourceMappingURL=DelayIndicator-CFCDQ7FN.js.map
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DelayIndicator-
|
|
1
|
+
{"version":3,"file":"DelayIndicator-CFCDQ7FN.js","sources":["../../src/common/components/delay-indicator/DelayIndicator.tsx"],"sourcesContent":["import { IoChevronDown, IoChevronUp } from 'react-icons/io5';\n\nimport { millisToDelayString } from '../../utils/dateConfig';\nimport Tooltip from '../tooltip/Tooltip';\n\nimport style from './DelayIndicator.module.scss';\n\ninterface DelayIndicatorProps {\n delayValue?: number;\n tooltipPrefix?: string;\n}\n\nexport default function DelayIndicator(props: DelayIndicatorProps) {\n const { delayValue, tooltipPrefix } = props;\n\n if (typeof delayValue !== 'number' || delayValue === 0) {\n return null;\n }\n\n const delayString = tooltipPrefix\n ? `${tooltipPrefix} ${millisToDelayString(delayValue)}`\n : millisToDelayString(delayValue);\n\n return (\n <Tooltip text={delayString} render={<span />} className={style.delaySymbol}>\n {delayValue < 0 ? <IoChevronDown /> : <IoChevronUp />}\n </Tooltip>\n );\n}\n"],"names":["DelayIndicator","props","delayValue","tooltipPrefix","delayString","millisToDelayString","Tooltip","jsx","style","IoChevronDown","IoChevronUp"],"mappings":"4hBAYA,SAAwBA,EAAeC,EAA4B,CAC3D,KAAA,CAAE,WAAAC,EAAY,cAAAC,CAAA,EAAkBF,EAEtC,GAAI,OAAOC,GAAe,UAAYA,IAAe,EAC5C,OAAA,KAGH,MAAAE,EAAcD,EAChB,GAAGA,CAAa,IAAIE,EAAoBH,CAAU,CAAC,GACnDG,EAAoBH,CAAU,EAElC,aACGI,EAAQ,CAAA,KAAMF,EAAa,OAAQG,EAAAA,IAAC,SAAK,EAAI,UAAWC,EAAM,YAC5D,WAAa,EAAID,MAACE,GAAc,CAAA,EAAKF,EAAA,IAACG,IAAY,CACrD,CAAA,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as t}from"./vendor-
|
|
2
|
-
//# sourceMappingURL=EditorFeatureWrapper-
|
|
1
|
+
import{j as t}from"./vendor-9UkPSc5K.js";import{P as o}from"./ProtectRoute-DJ9xZnPI.js";import"./index-njXwwjfn.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},r=new e.Error().stack;r&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[r]="8ca23f32-8b16-4bad-9476-9f27952185b5",e._sentryDebugIdIdentifier="sentry-dbid-8ca23f32-8b16-4bad-9476-9f27952185b5")}catch{}})();const s="_wrapper_1t7jb_17",n={wrapper:s};function p({children:e}){return t.jsx(o,{permission:"editor",children:t.jsx("div",{className:n.wrapper,children:e})})}export{p as default};
|
|
2
|
+
//# sourceMappingURL=EditorFeatureWrapper-D55c8JBz.js.map
|
|
Binary file
|
|
Binary file
|
package/client/assets/{EditorFeatureWrapper-DzBxDvRn.js.map → EditorFeatureWrapper-D55c8JBz.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorFeatureWrapper-
|
|
1
|
+
{"version":3,"file":"EditorFeatureWrapper-D55c8JBz.js","sources":["../../src/features/EditorFeatureWrapper.tsx"],"sourcesContent":["import { PropsWithChildren } from 'react';\n\nimport ProtectRoute from '../common/components/protect-route/ProtectRoute';\n\nimport style from './EditorFeatureWrapper.module.scss';\n\nexport default function EditorFeatureWrapper({ children }: PropsWithChildren) {\n return (\n <ProtectRoute permission='editor'>\n <div className={style.wrapper}>{children}</div>\n </ProtectRoute>\n );\n}\n"],"names":["EditorFeatureWrapper","children","jsx","ProtectRoute","style"],"mappings":"wfAMwB,SAAAA,EAAqB,CAAE,SAAAC,GAA+B,CAE1E,OAAAC,EAAA,IAACC,EAAa,CAAA,WAAW,SACvB,SAAAD,EAAAA,IAAC,OAAI,UAAWE,EAAM,QAAU,SAAAH,CAAA,CAAS,CAC3C,CAAA,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as o,x as c}from"./vendor-
|
|
2
|
-
//# sourceMappingURL=EditorUtils-
|
|
1
|
+
import{j as o,x as c}from"./vendor-9UkPSc5K.js";import{i as a}from"./index-njXwwjfn.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="ebb179af-b686-4c02-8241-b0ad08c460e9",e._sentryDebugIdIdentifier="sentry-dbid-ebb179af-b686-4c02-8241-b0ad08c460e9")}catch{}})();const l="_blink_xcz5k_1",i="_fourtyfive_xcz5k_13",_="_corner_xcz5k_17",b="_header_xcz5k_36",f="_title_xcz5k_40",d="_label_xcz5k_48",u="_separator_xcz5k_56",x="_horizontal_xcz5k_59",p="_vertical_xcz5k_63",s={blink:l,fourtyfive:i,corner:_,header:b,title:f,label:d,separator:u,horizontal:x,vertical:p};function z({className:e,...t}){return o.jsx(c,{className:a([s.corner,e]),...t})}function h({children:e,className:t,...r}){const n=a([s.title,t]);return o.jsx("h3",{className:n,...r,children:e})}function m({children:e,className:t,...r}){const n=a([s.label,t]);return o.jsx("label",{className:n,...r,children:e})}function v({className:e,orientation:t="vertical",...r}){return o.jsx("div",{className:a([s.separator,s[t],e]),role:"separator",...r})}export{z as C,m as L,v as S,h as T};
|
|
2
|
+
//# sourceMappingURL=EditorUtils-CFE106qQ.js.map
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorUtils-
|
|
1
|
+
{"version":3,"file":"EditorUtils-CFE106qQ.js","sources":["../../src/common/components/editor-utils/EditorUtils.tsx"],"sourcesContent":["import type { HTMLAttributes, LabelHTMLAttributes } from 'react';\nimport { IconBaseProps } from 'react-icons';\nimport { IoArrowUp } from 'react-icons/io5';\n\nimport { cx } from '../../utils/styleUtils';\n\nimport style from './EditorUtils.module.scss';\n\nexport function Corner({ className, ...elementProps }: IconBaseProps) {\n return <IoArrowUp className={cx([style.corner, className])} {...elementProps} />;\n}\n\nexport function Title({ children, className, ...elementProps }: HTMLAttributes<HTMLHeadingElement>) {\n const classes = cx([style.title, className]);\n return (\n <h3 className={classes} {...elementProps}>\n {children}\n </h3>\n );\n}\n\nexport function Label({ children, className, ...elementProps }: LabelHTMLAttributes<HTMLLabelElement>) {\n const classes = cx([style.label, className]);\n return (\n <label className={classes} {...elementProps}>\n {children}\n </label>\n );\n}\n\ninterface SeparatorProps extends HTMLAttributes<HTMLDivElement> {\n orientation?: 'horizontal' | 'vertical';\n}\n\nexport function Separator({ className, orientation = 'vertical', ...elementProps }: SeparatorProps) {\n return <div className={cx([style.separator, style[orientation], className])} role='separator' {...elementProps} />;\n}\n"],"names":["Corner","className","elementProps","jsx","IoArrowUp","cx","style","Title","children","classes","Label","Separator","orientation"],"mappings":"6tBAQO,SAASA,EAAO,CAAE,UAAAC,EAAW,GAAGC,GAA+B,CAC7D,OAAAC,MAACC,EAAU,CAAA,UAAWC,EAAG,CAACC,EAAM,OAAQL,CAAS,CAAC,EAAI,GAAGC,CAAc,CAAA,CAChF,CAEO,SAASK,EAAM,CAAE,SAAAC,EAAU,UAAAP,EAAW,GAAGC,GAAoD,CAClG,MAAMO,EAAUJ,EAAG,CAACC,EAAM,MAAOL,CAAS,CAAC,EAC3C,aACG,KAAG,CAAA,UAAWQ,EAAU,GAAGP,EACzB,SAAAM,EACH,CAEJ,CAEO,SAASE,EAAM,CAAE,SAAAF,EAAU,UAAAP,EAAW,GAAGC,GAAuD,CACrG,MAAMO,EAAUJ,EAAG,CAACC,EAAM,MAAOL,CAAS,CAAC,EAC3C,aACG,QAAM,CAAA,UAAWQ,EAAU,GAAGP,EAC5B,SAAAM,EACH,CAEJ,CAMO,SAASG,EAAU,CAAE,UAAAV,EAAW,YAAAW,EAAc,WAAY,GAAGV,GAAgC,CAClG,aAAQ,MAAI,CAAA,UAAWG,EAAG,CAACC,EAAM,UAAWA,EAAMM,CAAW,EAAGX,CAAS,CAAC,EAAG,KAAK,YAAa,GAAGC,EAAc,CAClH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as n}from"./vendor-
|
|
2
|
-
//# sourceMappingURL=Empty-
|
|
1
|
+
import{j as n}from"./vendor-9UkPSc5K.js";import{i as o,b1 as a}from"./index-njXwwjfn.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="896b8487-ed05-4973-9a31-a50ff9e0836c",e._sentryDebugIdIdentifier="sentry-dbid-896b8487-ed05-4973-9a31-a50ff9e0836c")}catch{}})();const r="_emptyContainer_xiuvv_17",d="_empty_xiuvv_17",y="_text_xiuvv_26",s={emptyContainer:r,empty:d,text:y};function m({text:e,className:t,injectedStyles:i}){return n.jsxs("div",{className:o([s.emptyContainer,t]),style:i,children:[n.jsx(a,{className:s.empty}),e&&n.jsx("span",{className:s.text,children:e})]})}export{m as E};
|
|
2
|
+
//# sourceMappingURL=Empty-C-JO_XAr.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
% �~:�2�Q�����K�Rh�����F�wn��0K�0�����#x�H�~���eID��Ħ�EB*݀0݅�Mi�w���W�+H(�v��fS�t�^M�a�}��fü6����6�j���C>øIfd�J�<�{0�6$<��3ZD������3ą��7Ƚ�2!���R���OL@w�";D�C��ɟ4�8p�bj��i�6mD�I#�Ȳ��%D��E�C��:8�!��4�;)5hT�����^�#m�C�0�t��[vf����H��dd�#�ʘ��;+������R!��AeS(��:�.&S���eG�KQ!igN`�vdT���#�?U@j�;�O�٩D�T�*`�$��6��}]�������K���
|
|
2
|
+
s��3�ڟ�xy�� �{M��������uD�
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Empty-
|
|
1
|
+
{"version":3,"file":"Empty-C-JO_XAr.js","sources":["../../src/common/components/state/Empty.tsx"],"sourcesContent":["import { CSSProperties } from 'react';\n\nimport EmptyImage from '../../../assets/images/empty.svg?react';\nimport { cx } from '../../utils/styleUtils';\n\nimport style from './Empty.module.scss';\n\ninterface EmptyProps {\n text?: string;\n injectedStyles?: CSSProperties;\n className?: string;\n}\n\nexport default function Empty({ text, className, injectedStyles }: EmptyProps) {\n return (\n <div className={cx([style.emptyContainer, className])} style={injectedStyles}>\n <EmptyImage className={style.empty} />\n {text && <span className={style.text}>{text}</span>}\n </div>\n );\n}\n"],"names":["Empty","text","className","injectedStyles","jsxs","cx","style","jsx","EmptyImage"],"mappings":"iiBAaA,SAAwBA,EAAM,CAAE,KAAAC,EAAM,UAAAC,EAAW,eAAAC,GAA8B,CAE3E,OAAAC,EAAA,KAAC,MAAI,CAAA,UAAWC,EAAG,CAACC,EAAM,eAAgBJ,CAAS,CAAC,EAAG,MAAOC,EAC5D,SAAA,CAACI,EAAAA,IAAAC,EAAA,CAAW,UAAWF,EAAM,KAAO,CAAA,EACnCL,GAASM,EAAAA,IAAA,OAAA,CAAK,UAAWD,EAAM,KAAO,SAAKL,CAAA,CAAA,CAAA,EAC9C,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as n}from"./vendor-
|
|
2
|
-
//# sourceMappingURL=EmptyPage-
|
|
1
|
+
import{j as n}from"./vendor-9UkPSc5K.js";import{E as s}from"./Empty-C-JO_XAr.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="6a2fc055-09c3-4c46-a7fd-6a27bcc357e8",e._sentryDebugIdIdentifier="sentry-dbid-6a2fc055-09c3-4c46-a7fd-6a27bcc357e8")}catch{}})();const a="_page_27rqx_22",d={page:a};function f({text:e,injectedStyles:t}){return n.jsx("div",{className:d.page,children:n.jsx(s,{text:e,injectedStyles:t})})}export{f as E};
|
|
2
|
+
//# sourceMappingURL=EmptyPage-BSzsxpGg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
� �ZM���n6�g���2Lܬa��Z�uQQa�����u��-��6F��Г>.�XNlϣ�9��¿f���_����4Բ���$�9����[�c�����9=���s�[�M�x�`��:��^�6å�+�Y�O���q�hCy�6K�|h0�s���^#rp������5�h�x��8(y��d��J�挟��\�Nv�0����X���t�]�9�E;��|��5���:�g��� $�,������%��K�D�QOr#�K]�P>���]��d�W�T�D�$wjtQ7G�"Q�=W7|��� ��Yvw}���5��Jgڤ�ɐN
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyPage-
|
|
1
|
+
{"version":3,"file":"EmptyPage-BSzsxpGg.js","sources":["../../src/common/components/state/EmptyPage.tsx"],"sourcesContent":["import { CSSProperties } from 'react';\n\nimport Empty from './Empty';\n\nimport style from './EmptyPage.module.scss';\n\ninterface EmptyPageProps {\n text?: string;\n injectedStyles?: CSSProperties;\n}\n\nexport default function EmptyPage({ text, injectedStyles }: EmptyPageProps) {\n return (\n <div className={style.page}>\n <Empty text={text} injectedStyles={injectedStyles} />\n </div>\n );\n}\n"],"names":["EmptyPage","text","injectedStyles","jsx","style","Empty"],"mappings":"+cAWA,SAAwBA,EAAU,CAAE,KAAAC,EAAM,eAAAC,GAAkC,CAExE,OAAAC,EAAA,IAAC,OAAI,UAAWC,EAAM,KACpB,SAACD,EAAAA,IAAAE,EAAA,CAAM,KAAAJ,EAAY,eAAAC,CAAA,CAAgC,CACrD,CAAA,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e,b1 as d}from"./vendor-
|
|
2
|
-
//# sourceMappingURL=FollowButton-
|
|
1
|
+
import{j as e,b1 as d}from"./vendor-9UkPSc5K.js";import{i}from"./index-njXwwjfn.js";(function(){try{var o=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new o.Error().stack;t&&(o._sentryDebugIds=o._sentryDebugIds||{},o._sentryDebugIds[t]="0c586c03-1aa6-405b-816c-116786379711",o._sentryDebugIdIdentifier="sentry-dbid-0c586c03-1aa6-405b-816c-116786379711")}catch{}})();const c="_followButton_58wqq_17",r="_hidden_58wqq_38",s={followButton:c,hidden:r};function u(o){const{isVisible:t,onClickHandler:n}=o,l=i([s.followButton,!t&&s.hidden]);return e.jsxs("button",{className:l,onClick:n,type:"button",children:[e.jsx(d,{}),"Follow"]})}export{u as F};
|
|
2
|
+
//# sourceMappingURL=FollowButton-Mox6N4JW.js.map
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FollowButton-
|
|
1
|
+
{"version":3,"file":"FollowButton-Mox6N4JW.js","sources":["../../src/features/operator/follow-button/FollowButton.tsx"],"sourcesContent":["import { IoLocate } from 'react-icons/io5';\n\nimport { cx } from '../../../common/utils/styleUtils';\n\nimport style from './FollowButton.module.scss';\n\ninterface FollowButtonProps {\n isVisible: boolean;\n onClickHandler: () => void;\n}\n\nexport default function FollowButton(props: FollowButtonProps) {\n const { isVisible, onClickHandler } = props;\n\n const classes = cx([style.followButton, !isVisible && style.hidden]);\n\n return (\n <button className={classes} onClick={onClickHandler} type='button'>\n <IoLocate />\n Follow\n </button>\n );\n}\n"],"names":["FollowButton","props","isVisible","onClickHandler","classes","cx","style","jsx","IoLocate"],"mappings":"ggBAWA,SAAwBA,EAAaC,EAA0B,CACvD,KAAA,CAAE,UAAAC,EAAW,eAAAC,CAAA,EAAmBF,EAEhCG,EAAUC,EAAG,CAACC,EAAM,aAAc,CAACJ,GAAaI,EAAM,MAAM,CAAC,EAEnE,cACG,SAAO,CAAA,UAAWF,EAAS,QAASD,EAAgB,KAAK,SACxD,SAAA,CAAAI,EAAA,IAACC,EAAS,EAAA,EAAE,QAAA,EAEd,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{h as l,j as e,aL as A,x as B,bR as L,br as P,bS as R,bT as S,bU as w}from"./vendor-9UkPSc5K.js";import{C as k,S as D}from"./EditorUtils-CFE106qQ.js";import{i as _,af as V,bI as F,c as O,T as d,bg as q,a as y,av as I,bJ as T,B as C,bK as o,bL as H,ai as N,bM as U,bv as $,b6 as z,bw as J}from"./index-njXwwjfn.js";import{P as K}from"./ProtectRoute-DJ9xZnPI.js";import{S as W}from"./Select-BLA-yQMq.js";import{T as b}from"./Tooltip-C0rGHLsB.js";import{s as j}from"./Editor.module-DvV2efYs.js";(function(){try{var s=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new s.Error().stack;t&&(s._sentryDebugIds=s._sentryDebugIds||{},s._sentryDebugIds[t]="cc035f97-93b1-44dd-ac26-4b9c85ccc049",s._sentryDebugIdIdentifier="sentry-dbid-cc035f97-93b1-44dd-ac26-4b9c85ccc049")}catch{}})();const G="_label_o0qma_17",Q="_active_o0qma_21",X="_inputItems_o0qma_90",h={label:G,active:Q,inputItems:X};function E(s){const{label:t,placeholder:n,text:a,visible:u,changeHandler:f,children:c}=s,[m,x]=l.useState(a),i=l.useRef(null),p=l.useRef(0);l.useEffect(()=>{i.current&&i.current!==document.activeElement&&(i.current.selectionStart=p.current,i.current.selectionEnd=p.current)},[a]),l.useEffect(()=>{i.current!==document.activeElement&&x(a)},[a]);const v=g=>{p.current=g.target.selectionStart??0,x(g.target.value),f(g.target.value)};return e.jsxs("div",{className:h.inputRow,children:[e.jsx("label",{className:_([h.label,u??h.active]),htmlFor:t,children:t}),e.jsxs("div",{className:h.inputItems,children:[e.jsx(V,{id:t,ref:i,value:m,onChange:v,placeholder:n}),c]})]})}const Y="_blink_18658_1",Z="_previewContainer_18658_25",ee="_preview_18658_25",te="_options_18658_39",se="_eventStatus_18658_45",ne="_mainContent_18658_54",ae="_secondaryContent_18658_70",re="_blackout_18658_74",oe="_statusIcon_18658_83",r={blink:Y,previewContainer:Z,preview:ee,options:te,eventStatus:se,mainContent:ne,secondaryContent:ae,blackout:re,statusIcon:oe},ie={aux1:"Aux 1",aux2:"Aux 2",aux3:"Aux 3",secondary:"Secondary message"};function ce(){const{blink:s,blackout:t,countToEnd:n,phase:a,secondarySource:u,showTimerMessage:f,timerType:c}=F(),{data:m}=O(),x=f?"Message":c===d.None?q:a===y.Pending?"Standby to start":a===y.Overtime?"Timer Overtime":c===d.Clock?"Clock":n?"Count to End":"Timer",i=f||!u?null:ie[u],p=a===y.Warning?m.warningColor??"#ffa528":a===y.Danger?m.dangerColor??"#ff7300":m.normalColor??"#FFFC",v=x=="Timer",g=_([s&&r.blink,t&&r.blackout]);return e.jsxs("div",{className:r.preview,children:[e.jsx(k,{onClick:M=>I("timer",M)}),e.jsxs("div",{className:g,children:[e.jsx("div",{className:r.mainContent,"data-phase":v&&a,style:v?{"--override-colour":p}:{},children:x}),i!==null&&e.jsx("div",{className:r.secondaryContent,children:i})]}),e.jsxs("div",{className:r.eventStatus,children:[e.jsx(b,{text:"Time type: Count down",render:e.jsx("span",{}),className:r.statusIcon,"data-active":c===d.CountDown,children:e.jsx(A,{})}),e.jsx(b,{text:"Time type: Count up",render:e.jsx("span",{}),className:r.statusIcon,"data-active":c===d.CountUp,children:e.jsx(B,{})}),e.jsx(b,{text:"Time type: Clock",render:e.jsx("span",{}),className:r.statusIcon,"data-active":c===d.Clock,children:e.jsx(L,{})}),e.jsx(b,{text:"Time type: None",render:e.jsx("span",{}),className:r.statusIcon,"data-active":c===d.None,children:e.jsx(P,{})}),e.jsx(b,{text:n?"Count to end":"Count duration",render:e.jsx("span",{}),className:r.statusIcon,"data-active":n,children:e.jsx(R,{})})]})]})}function le(){const{blackout:s,blink:t}=T();return e.jsxs("div",{className:r.previewContainer,children:[e.jsx(ce,{}),e.jsxs("div",{className:r.options,children:[e.jsx(ue,{}),e.jsx(D,{orientation:"horizontal"}),e.jsx(C,{variant:t?"primary":"subtle",fluid:!0,onClick:()=>o.timerBlink(!t),"data-testid":"toggle timer blink",children:"Blink"}),e.jsx(C,{variant:s?"primary":"subtle",fluid:!0,onClick:()=>o.timerBlackout(!s),"data-testid":"toggle timer blackout",children:"Blackout screen"})]})]})}function ue(){const{secondarySource:s}=T(),[t,n]=l.useState("aux1");l.useEffect(()=>{s!==null&&n(s)},[s]);const a=()=>{s===t?o.timerSecondarySource(null):o.timerSecondarySource(t)};return e.jsxs(e.Fragment,{children:[e.jsx(W,{value:t,options:[{value:"aux1",label:"Aux 1"},{value:"aux2",label:"Aux 2"},{value:"aux3",label:"Aux 3"},{value:"secondary",label:"Secondary message"}],onValueChange:u=>{s!==null&&o.timerSecondarySource(u),n(u)}}),e.jsx(C,{variant:s!==null?"primary":"subtle",fluid:!0,onClick:a,"data-testid":"toggle secondary",children:"Show secondary"})]})}function de(){return e.jsxs(e.Fragment,{children:[e.jsx(le,{}),e.jsx(me,{}),e.jsx(xe,{})]})}function me(){const{text:s,visible:t}=H();return e.jsx(E,{label:"Timer Message",placeholder:"Message shown fullscreen in stage timer",text:s,visible:t,changeHandler:n=>o.timerText(n),children:e.jsx(N,{"aria-label":"Toggle timer message visibility",onClick:()=>o.timerVisible(!t),variant:t?"primary":"subtle",children:t?e.jsx(S,{}):e.jsx(w,{})})})}function xe(){const{text:s,visible:t}=U(),n=()=>{t?o.timerSecondarySource(null):o.timerSecondarySource("secondary")};return e.jsx(E,{label:"Secondary Message",placeholder:"Message shown as secondary text in stage timer",text:s,visible:t,changeHandler:a=>o.secondaryMessage(a),children:e.jsx(N,{"aria-label":"Toggle secondary message visibility",onClick:n,variant:t?"primary":"subtle",children:t?e.jsx(S,{}):e.jsx(w,{})})})}const Ce=l.memo(pe);function pe(){const s=window.location.pathname.includes("/messagecontrol"),t=_([j.content,j.contentColumnLayout]);return e.jsx(K,{permission:"editor",children:e.jsxs("div",{className:j.messages,"data-testid":"panel-messages-control",children:[!s&&e.jsx(k,{onClick:n=>I("messagecontrol",n)}),s&&e.jsx($,{suppressSettings:!0,isNavigationLocked:z()}),e.jsx("div",{className:t,children:e.jsx(J,{children:e.jsx(de,{})})})]})})}export{Ce as default};
|
|
2
|
+
//# sourceMappingURL=MessageControlExport-BL2ip9qN.js.map
|
|
Binary file
|
|
Binary file
|
package/client/assets/{MessageControlExport-yLGU2dMq.js.map → MessageControlExport-BL2ip9qN.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageControlExport-yLGU2dMq.js","sources":["../../src/features/control/message/InputRow.tsx","../../src/features/control/message/TimerPreview.tsx","../../src/features/control/message/TimerViewControl.tsx","../../src/features/control/message/MessageControl.tsx","../../src/features/control/message/MessageControlExport.tsx"],"sourcesContent":["import { PropsWithChildren, useEffect, useRef, useState } from 'react';\n\nimport Input from '../../../common/components/input/input/Input';\nimport { cx } from '../../../common/utils/styleUtils';\n\nimport style from './InputRow.module.scss';\n\ninterface InputRowProps {\n label: string;\n placeholder: string;\n text: string;\n visible: boolean;\n changeHandler: (newValue: string) => void;\n}\n\nexport default function InputRow(props: PropsWithChildren<InputRowProps>) {\n const { label, placeholder, text, visible, changeHandler, children } = props;\n\n const [value, setValue] = useState(text);\n const inputRef = useRef<HTMLInputElement>(null);\n const cursorPositionRef = useRef(0);\n\n // sync cursor position with text\n useEffect(() => {\n if (inputRef.current && inputRef.current !== document.activeElement) {\n inputRef.current.selectionStart = cursorPositionRef.current;\n inputRef.current.selectionEnd = cursorPositionRef.current;\n }\n }, [text]);\n\n // synchronise external text\n useEffect(() => {\n if (inputRef.current !== document.activeElement) {\n setValue(text);\n }\n }, [text]);\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n cursorPositionRef.current = event.target.selectionStart ?? 0;\n setValue(event.target.value);\n changeHandler(event.target.value);\n };\n\n return (\n <div className={style.inputRow}>\n <label className={cx([style.label, visible ?? style.active])} htmlFor={label}>\n {label}\n </label>\n <div className={style.inputItems}>\n <Input id={label} ref={inputRef} value={value} onChange={handleInputChange} placeholder={placeholder} />\n {children}\n </div>\n </div>\n );\n}\n","import { IoArrowDown, IoArrowUp, IoBan, IoTime } from 'react-icons/io5';\nimport { LuArrowDownToLine } from 'react-icons/lu';\nimport { TimerPhase, TimerType } from 'ontime-types';\n\nimport { Corner } from '../../../common/components/editor-utils/EditorUtils';\nimport Tooltip from '../../../common/components/tooltip/Tooltip';\nimport { useMessagePreview } from '../../../common/hooks/useSocket';\nimport useViewSettings from '../../../common/hooks-query/useViewSettings';\nimport { handleLinks } from '../../../common/utils/linkUtils';\nimport { cx, timerPlaceholder } from '../../../common/utils/styleUtils';\n\nimport style from './MessageControl.module.scss';\n\nconst secondarySourceLabels: Record<string, string> = {\n aux1: 'Aux 1',\n aux2: 'Aux 2',\n aux3: 'Aux 3',\n secondary: 'Secondary message',\n};\n\nexport default function TimerPreview() {\n const { blink, blackout, countToEnd, phase, secondarySource, showTimerMessage, timerType } = useMessagePreview();\n const { data } = useViewSettings();\n\n const main = (() => {\n if (showTimerMessage) return 'Message';\n if (timerType === TimerType.None) return timerPlaceholder;\n if (phase === TimerPhase.Pending) return 'Standby to start';\n if (phase === TimerPhase.Overtime) return 'Timer Overtime';\n if (timerType === TimerType.Clock) return 'Clock';\n if (countToEnd) return 'Count to End';\n return 'Timer';\n })();\n\n const secondary = (() => {\n // message is a fullscreen overlay or secondary is not active\n if (showTimerMessage || !secondarySource) return null;\n\n // we need to check aux first since it takes priority\n return secondarySourceLabels[secondarySource];\n })();\n\n const overrideColour = (() => {\n // override fallback colours from starter project\n if (phase === TimerPhase.Warning) return data.warningColor ?? '#ffa528';\n if (phase === TimerPhase.Danger) return data.dangerColor ?? '#ff7300';\n return data.normalColor ?? '#FFFC';\n })();\n\n const showColourOverride = main == 'Timer';\n const contentClasses = cx([blink && style.blink, blackout && style.blackout]);\n\n return (\n <div className={style.preview}>\n <Corner onClick={(event) => handleLinks('timer', event)} />\n <div className={contentClasses}>\n <div\n className={style.mainContent}\n data-phase={showColourOverride && phase}\n style={showColourOverride ? { '--override-colour': overrideColour } : {}}\n >\n {main}\n </div>\n {secondary !== null && <div className={style.secondaryContent}>{secondary}</div>}\n </div>\n <div className={style.eventStatus}>\n <Tooltip\n text='Time type: Count down'\n render={<span />}\n className={style.statusIcon}\n data-active={timerType === TimerType.CountDown}\n >\n <IoArrowDown />\n </Tooltip>\n <Tooltip\n text='Time type: Count up'\n render={<span />}\n className={style.statusIcon}\n data-active={timerType === TimerType.CountUp}\n >\n <IoArrowUp />\n </Tooltip>\n <Tooltip\n text='Time type: Clock'\n render={<span />}\n className={style.statusIcon}\n data-active={timerType === TimerType.Clock}\n >\n <IoTime />\n </Tooltip>\n <Tooltip\n text='Time type: None'\n render={<span />}\n className={style.statusIcon}\n data-active={timerType === TimerType.None}\n >\n <IoBan />\n </Tooltip>\n <Tooltip\n text={countToEnd ? 'Count to end' : 'Count duration'}\n render={<span />}\n className={style.statusIcon}\n data-active={countToEnd}\n >\n <LuArrowDownToLine />\n </Tooltip>\n </div>\n </div>\n );\n}\n","import { useEffect, useState } from 'react';\nimport { SecondarySource } from 'ontime-types';\n\nimport Button from '../../../common/components/buttons/Button';\nimport * as Editor from '../../../common/components/editor-utils/EditorUtils';\nimport Select from '../../../common/components/select/Select';\nimport { setMessage, useTimerViewControl } from '../../../common/hooks/useSocket';\n\nimport TimerPreview from './TimerPreview';\n\nimport style from './MessageControl.module.scss';\n\nexport default function TimerControlsPreview() {\n const { blackout, blink } = useTimerViewControl();\n\n return (\n <div className={style.previewContainer}>\n <TimerPreview />\n <div className={style.options}>\n <SecondarySourceControl />\n\n <Editor.Separator orientation='horizontal' />\n\n <Button\n variant={blink ? 'primary' : 'subtle'}\n fluid\n onClick={() => setMessage.timerBlink(!blink)}\n data-testid='toggle timer blink'\n >\n Blink\n </Button>\n <Button\n variant={blackout ? 'primary' : 'subtle'}\n fluid\n onClick={() => setMessage.timerBlackout(!blackout)}\n data-testid='toggle timer blackout'\n >\n Blackout screen\n </Button>\n </div>\n </div>\n );\n}\n\nfunction SecondarySourceControl() {\n const { secondarySource } = useTimerViewControl();\n const [value, setValue] = useState<SecondarySource>('aux1');\n\n // sync secondary source with external changes\n useEffect(() => {\n if (secondarySource !== null) {\n setValue(secondarySource);\n }\n }, [secondarySource]);\n\n const toggleSecondary = () => {\n if (secondarySource === value) {\n setMessage.timerSecondarySource(null);\n } else {\n setMessage.timerSecondarySource(value);\n }\n };\n\n return (\n <>\n <Select\n value={value}\n options={[\n { value: 'aux1', label: 'Aux 1' },\n { value: 'aux2', label: 'Aux 2' },\n { value: 'aux3', label: 'Aux 3' },\n { value: 'secondary', label: 'Secondary message' },\n ]}\n onValueChange={(value) => {\n // we can only update the remote if it is enabled\n if (secondarySource !== null) {\n setMessage.timerSecondarySource(value as SecondarySource);\n }\n setValue(value as SecondarySource);\n }}\n />\n <Button\n variant={secondarySource !== null ? 'primary' : 'subtle'}\n fluid\n onClick={toggleSecondary}\n data-testid='toggle secondary'\n >\n Show secondary\n </Button>\n </>\n );\n}\n","import { IoEye, IoEyeOffOutline } from 'react-icons/io5';\n\nimport IconButton from '../../../common/components/buttons/IconButton';\nimport {\n setMessage,\n useExternalMessageInput as useSecondaryMessageInput,\n useTimerMessageInput,\n} from '../../../common/hooks/useSocket';\n\nimport InputRow from './InputRow';\nimport TimerControlsPreview from './TimerViewControl';\n\nexport default function MessageControl() {\n return (\n <>\n <TimerControlsPreview />\n <TimerMessageInput />\n <SecondaryInput />\n </>\n );\n}\n\nfunction TimerMessageInput() {\n const { text, visible } = useTimerMessageInput();\n\n return (\n <InputRow\n label='Timer Message'\n placeholder='Message shown fullscreen in stage timer'\n text={text}\n visible={visible}\n changeHandler={(newValue) => setMessage.timerText(newValue)}\n >\n <IconButton\n aria-label='Toggle timer message visibility'\n onClick={() => setMessage.timerVisible(!visible)}\n variant={visible ? 'primary' : 'subtle'}\n >\n {visible ? <IoEye /> : <IoEyeOffOutline />}\n </IconButton>\n </InputRow>\n );\n}\n\nfunction SecondaryInput() {\n const { text, visible } = useSecondaryMessageInput();\n\n const toggleSecondary = () => {\n if (visible) {\n setMessage.timerSecondarySource(null);\n } else {\n setMessage.timerSecondarySource('secondary');\n }\n };\n\n return (\n <InputRow\n label='Secondary Message'\n placeholder='Message shown as secondary text in stage timer'\n text={text}\n visible={visible}\n changeHandler={(newValue) => setMessage.secondaryMessage(newValue)}\n >\n <IconButton\n aria-label='Toggle secondary message visibility'\n onClick={toggleSecondary}\n variant={visible ? 'primary' : 'subtle'}\n >\n {visible ? <IoEye /> : <IoEyeOffOutline />}\n </IconButton>\n </InputRow>\n );\n}\n","import { memo } from 'react';\n\nimport { Corner } from '../../../common/components/editor-utils/EditorUtils';\nimport ErrorBoundary from '../../../common/components/error-boundary/ErrorBoundary';\nimport ViewNavigationMenu from '../../../common/components/navigation-menu/ViewNavigationMenu';\nimport ProtectRoute from '../../../common/components/protect-route/ProtectRoute';\nimport { handleLinks } from '../../../common/utils/linkUtils';\nimport { cx } from '../../../common/utils/styleUtils';\n\nimport MessageControl from './MessageControl';\n\nimport style from '../../../views/editor/Editor.module.scss';\n\nexport default memo(MessageControlExport);\nfunction MessageControlExport() {\n const isExtracted = window.location.pathname.includes('/messagecontrol');\n const classes = cx([style.content, style.contentColumnLayout]);\n\n return (\n <ProtectRoute permission='editor'>\n <div className={style.messages} data-testid='panel-messages-control'>\n {!isExtracted && <Corner onClick={(event) => handleLinks('messagecontrol', event)} />}\n {isExtracted && <ViewNavigationMenu suppressSettings />}\n\n <div className={classes}>\n <ErrorBoundary>\n <MessageControl />\n </ErrorBoundary>\n </div>\n </div>\n </ProtectRoute>\n );\n}\n"],"names":["InputRow","props","label","placeholder","text","visible","changeHandler","children","value","setValue","useState","inputRef","useRef","cursorPositionRef","useEffect","handleInputChange","event","jsxs","style","jsx","cx","Input","secondarySourceLabels","TimerPreview","blink","blackout","countToEnd","phase","secondarySource","showTimerMessage","timerType","useMessagePreview","data","useViewSettings","main","TimerType","timerPlaceholder","TimerPhase","secondary","overrideColour","showColourOverride","contentClasses","Corner","handleLinks","Tooltip","IoArrowDown","IoArrowUp","IoTime","IoBan","LuArrowDownToLine","TimerControlsPreview","useTimerViewControl","SecondarySourceControl","Editor.Separator","Button","setMessage","toggleSecondary","Fragment","Select","MessageControl","TimerMessageInput","SecondaryInput","useTimerMessageInput","newValue","IconButton","IoEye","IoEyeOffOutline","useSecondaryMessageInput","memo","MessageControlExport","isExtracted","classes","ProtectRoute","ViewNavigationMenu","ErrorBoundary"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MessageControlExport-BL2ip9qN.js","sources":["../../src/features/control/message/InputRow.tsx","../../src/features/control/message/TimerPreview.tsx","../../src/features/control/message/TimerViewControl.tsx","../../src/features/control/message/MessageControl.tsx","../../src/features/control/message/MessageControlExport.tsx"],"sourcesContent":["import { PropsWithChildren, useEffect, useRef, useState } from 'react';\n\nimport Input from '../../../common/components/input/input/Input';\nimport { cx } from '../../../common/utils/styleUtils';\n\nimport style from './InputRow.module.scss';\n\ninterface InputRowProps {\n label: string;\n placeholder: string;\n text: string;\n visible: boolean;\n changeHandler: (newValue: string) => void;\n}\n\nexport default function InputRow(props: PropsWithChildren<InputRowProps>) {\n const { label, placeholder, text, visible, changeHandler, children } = props;\n\n const [value, setValue] = useState(text);\n const inputRef = useRef<HTMLInputElement>(null);\n const cursorPositionRef = useRef(0);\n\n // sync cursor position with text\n useEffect(() => {\n if (inputRef.current && inputRef.current !== document.activeElement) {\n inputRef.current.selectionStart = cursorPositionRef.current;\n inputRef.current.selectionEnd = cursorPositionRef.current;\n }\n }, [text]);\n\n // synchronise external text\n useEffect(() => {\n if (inputRef.current !== document.activeElement) {\n setValue(text);\n }\n }, [text]);\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n cursorPositionRef.current = event.target.selectionStart ?? 0;\n setValue(event.target.value);\n changeHandler(event.target.value);\n };\n\n return (\n <div className={style.inputRow}>\n <label className={cx([style.label, visible ?? style.active])} htmlFor={label}>\n {label}\n </label>\n <div className={style.inputItems}>\n <Input id={label} ref={inputRef} value={value} onChange={handleInputChange} placeholder={placeholder} />\n {children}\n </div>\n </div>\n );\n}\n","import { IoArrowDown, IoArrowUp, IoBan, IoTime } from 'react-icons/io5';\nimport { LuArrowDownToLine } from 'react-icons/lu';\nimport { TimerPhase, TimerType } from 'ontime-types';\n\nimport { Corner } from '../../../common/components/editor-utils/EditorUtils';\nimport Tooltip from '../../../common/components/tooltip/Tooltip';\nimport { useMessagePreview } from '../../../common/hooks/useSocket';\nimport useViewSettings from '../../../common/hooks-query/useViewSettings';\nimport { handleLinks } from '../../../common/utils/linkUtils';\nimport { cx, timerPlaceholder } from '../../../common/utils/styleUtils';\n\nimport style from './MessageControl.module.scss';\n\nconst secondarySourceLabels: Record<string, string> = {\n aux1: 'Aux 1',\n aux2: 'Aux 2',\n aux3: 'Aux 3',\n secondary: 'Secondary message',\n};\n\nexport default function TimerPreview() {\n const { blink, blackout, countToEnd, phase, secondarySource, showTimerMessage, timerType } = useMessagePreview();\n const { data } = useViewSettings();\n\n const main = (() => {\n if (showTimerMessage) return 'Message';\n if (timerType === TimerType.None) return timerPlaceholder;\n if (phase === TimerPhase.Pending) return 'Standby to start';\n if (phase === TimerPhase.Overtime) return 'Timer Overtime';\n if (timerType === TimerType.Clock) return 'Clock';\n if (countToEnd) return 'Count to End';\n return 'Timer';\n })();\n\n const secondary = (() => {\n // message is a fullscreen overlay or secondary is not active\n if (showTimerMessage || !secondarySource) return null;\n\n // we need to check aux first since it takes priority\n return secondarySourceLabels[secondarySource];\n })();\n\n const overrideColour = (() => {\n // override fallback colours from starter project\n if (phase === TimerPhase.Warning) return data.warningColor ?? '#ffa528';\n if (phase === TimerPhase.Danger) return data.dangerColor ?? '#ff7300';\n return data.normalColor ?? '#FFFC';\n })();\n\n const showColourOverride = main == 'Timer';\n const contentClasses = cx([blink && style.blink, blackout && style.blackout]);\n\n return (\n <div className={style.preview}>\n <Corner onClick={(event) => handleLinks('timer', event)} />\n <div className={contentClasses}>\n <div\n className={style.mainContent}\n data-phase={showColourOverride && phase}\n style={showColourOverride ? { '--override-colour': overrideColour } : {}}\n >\n {main}\n </div>\n {secondary !== null && <div className={style.secondaryContent}>{secondary}</div>}\n </div>\n <div className={style.eventStatus}>\n <Tooltip\n text='Time type: Count down'\n render={<span />}\n className={style.statusIcon}\n data-active={timerType === TimerType.CountDown}\n >\n <IoArrowDown />\n </Tooltip>\n <Tooltip\n text='Time type: Count up'\n render={<span />}\n className={style.statusIcon}\n data-active={timerType === TimerType.CountUp}\n >\n <IoArrowUp />\n </Tooltip>\n <Tooltip\n text='Time type: Clock'\n render={<span />}\n className={style.statusIcon}\n data-active={timerType === TimerType.Clock}\n >\n <IoTime />\n </Tooltip>\n <Tooltip\n text='Time type: None'\n render={<span />}\n className={style.statusIcon}\n data-active={timerType === TimerType.None}\n >\n <IoBan />\n </Tooltip>\n <Tooltip\n text={countToEnd ? 'Count to end' : 'Count duration'}\n render={<span />}\n className={style.statusIcon}\n data-active={countToEnd}\n >\n <LuArrowDownToLine />\n </Tooltip>\n </div>\n </div>\n );\n}\n","import { useEffect, useState } from 'react';\nimport { SecondarySource } from 'ontime-types';\n\nimport Button from '../../../common/components/buttons/Button';\nimport * as Editor from '../../../common/components/editor-utils/EditorUtils';\nimport Select from '../../../common/components/select/Select';\nimport { setMessage, useTimerViewControl } from '../../../common/hooks/useSocket';\n\nimport TimerPreview from './TimerPreview';\n\nimport style from './MessageControl.module.scss';\n\nexport default function TimerControlsPreview() {\n const { blackout, blink } = useTimerViewControl();\n\n return (\n <div className={style.previewContainer}>\n <TimerPreview />\n <div className={style.options}>\n <SecondarySourceControl />\n\n <Editor.Separator orientation='horizontal' />\n\n <Button\n variant={blink ? 'primary' : 'subtle'}\n fluid\n onClick={() => setMessage.timerBlink(!blink)}\n data-testid='toggle timer blink'\n >\n Blink\n </Button>\n <Button\n variant={blackout ? 'primary' : 'subtle'}\n fluid\n onClick={() => setMessage.timerBlackout(!blackout)}\n data-testid='toggle timer blackout'\n >\n Blackout screen\n </Button>\n </div>\n </div>\n );\n}\n\nfunction SecondarySourceControl() {\n const { secondarySource } = useTimerViewControl();\n const [value, setValue] = useState<SecondarySource>('aux1');\n\n // sync secondary source with external changes\n useEffect(() => {\n if (secondarySource !== null) {\n setValue(secondarySource);\n }\n }, [secondarySource]);\n\n const toggleSecondary = () => {\n if (secondarySource === value) {\n setMessage.timerSecondarySource(null);\n } else {\n setMessage.timerSecondarySource(value);\n }\n };\n\n return (\n <>\n <Select\n value={value}\n options={[\n { value: 'aux1', label: 'Aux 1' },\n { value: 'aux2', label: 'Aux 2' },\n { value: 'aux3', label: 'Aux 3' },\n { value: 'secondary', label: 'Secondary message' },\n ]}\n onValueChange={(value) => {\n // we can only update the remote if it is enabled\n if (secondarySource !== null) {\n setMessage.timerSecondarySource(value as SecondarySource);\n }\n setValue(value as SecondarySource);\n }}\n />\n <Button\n variant={secondarySource !== null ? 'primary' : 'subtle'}\n fluid\n onClick={toggleSecondary}\n data-testid='toggle secondary'\n >\n Show secondary\n </Button>\n </>\n );\n}\n","import { IoEye, IoEyeOffOutline } from 'react-icons/io5';\n\nimport IconButton from '../../../common/components/buttons/IconButton';\nimport {\n setMessage,\n useExternalMessageInput as useSecondaryMessageInput,\n useTimerMessageInput,\n} from '../../../common/hooks/useSocket';\n\nimport InputRow from './InputRow';\nimport TimerControlsPreview from './TimerViewControl';\n\nexport default function MessageControl() {\n return (\n <>\n <TimerControlsPreview />\n <TimerMessageInput />\n <SecondaryInput />\n </>\n );\n}\n\nfunction TimerMessageInput() {\n const { text, visible } = useTimerMessageInput();\n\n return (\n <InputRow\n label='Timer Message'\n placeholder='Message shown fullscreen in stage timer'\n text={text}\n visible={visible}\n changeHandler={(newValue) => setMessage.timerText(newValue)}\n >\n <IconButton\n aria-label='Toggle timer message visibility'\n onClick={() => setMessage.timerVisible(!visible)}\n variant={visible ? 'primary' : 'subtle'}\n >\n {visible ? <IoEye /> : <IoEyeOffOutline />}\n </IconButton>\n </InputRow>\n );\n}\n\nfunction SecondaryInput() {\n const { text, visible } = useSecondaryMessageInput();\n\n const toggleSecondary = () => {\n if (visible) {\n setMessage.timerSecondarySource(null);\n } else {\n setMessage.timerSecondarySource('secondary');\n }\n };\n\n return (\n <InputRow\n label='Secondary Message'\n placeholder='Message shown as secondary text in stage timer'\n text={text}\n visible={visible}\n changeHandler={(newValue) => setMessage.secondaryMessage(newValue)}\n >\n <IconButton\n aria-label='Toggle secondary message visibility'\n onClick={toggleSecondary}\n variant={visible ? 'primary' : 'subtle'}\n >\n {visible ? <IoEye /> : <IoEyeOffOutline />}\n </IconButton>\n </InputRow>\n );\n}\n","import { memo } from 'react';\n\nimport { Corner } from '../../../common/components/editor-utils/EditorUtils';\nimport ErrorBoundary from '../../../common/components/error-boundary/ErrorBoundary';\nimport ViewNavigationMenu from '../../../common/components/navigation-menu/ViewNavigationMenu';\nimport ProtectRoute from '../../../common/components/protect-route/ProtectRoute';\nimport { handleLinks } from '../../../common/utils/linkUtils';\nimport { cx } from '../../../common/utils/styleUtils';\nimport { getIsNavigationLocked } from '../../../externals';\n\nimport MessageControl from './MessageControl';\n\nimport style from '../../../views/editor/Editor.module.scss';\n\nexport default memo(MessageControlExport);\nfunction MessageControlExport() {\n const isExtracted = window.location.pathname.includes('/messagecontrol');\n const classes = cx([style.content, style.contentColumnLayout]);\n\n return (\n <ProtectRoute permission='editor'>\n <div className={style.messages} data-testid='panel-messages-control'>\n {!isExtracted && <Corner onClick={(event) => handleLinks('messagecontrol', event)} />}\n {isExtracted && <ViewNavigationMenu suppressSettings isNavigationLocked={getIsNavigationLocked()} />}\n\n <div className={classes}>\n <ErrorBoundary>\n <MessageControl />\n </ErrorBoundary>\n </div>\n </div>\n </ProtectRoute>\n );\n}\n"],"names":["InputRow","props","label","placeholder","text","visible","changeHandler","children","value","setValue","useState","inputRef","useRef","cursorPositionRef","useEffect","handleInputChange","event","jsxs","style","jsx","cx","Input","secondarySourceLabels","TimerPreview","blink","blackout","countToEnd","phase","secondarySource","showTimerMessage","timerType","useMessagePreview","data","useViewSettings","main","TimerType","timerPlaceholder","TimerPhase","secondary","overrideColour","showColourOverride","contentClasses","Corner","handleLinks","Tooltip","IoArrowDown","IoArrowUp","IoTime","IoBan","LuArrowDownToLine","TimerControlsPreview","useTimerViewControl","SecondarySourceControl","Editor.Separator","Button","setMessage","toggleSecondary","Fragment","Select","MessageControl","TimerMessageInput","SecondaryInput","useTimerMessageInput","newValue","IconButton","IoEye","IoEyeOffOutline","useSecondaryMessageInput","memo","MessageControlExport","isExtracted","classes","ProtectRoute","ViewNavigationMenu","getIsNavigationLocked","ErrorBoundary"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e,h as m,bj as Z,bk as oe,am as de,bl as ue,bm as U,bn as K,bo as me,bp as he,ah as xe,ba as je,bq as be}from"./vendor-Cu5xgv5K.js";import{L as g,T as p}from"./EditorUtils-De0umjb-.js";import{T as S,A as W,s as ge}from"./TimeInput-wQ67FbW6.js";import{u as T,m as ve}from"./dateConfig-8rhb0Dbh.js";import{u as J}from"./useCustomFields-BuxKsqGS.js";import{T as O,E as P}from"./validateEvent-Bvgk1E-Y.js";import{af as B,aA as fe,i as A,ai as F,r as ye,y as w,T as H,B as _e,b8 as pe,w as z,bg as ee}from"./index-5QAOtSTh.js";import{S as R}from"./Select-niU9Razm.js";import{S as ae}from"./useProjectData-CetvEK9E.js";import{T as I}from"./Tooltip-DJ8Y4CO4.js";import{p as ie}from"./parseUserTime-CCDHpp7D.js";import{S as Q,u as re,T as te}from"./Modal-BKL-5GzU.js";import{g as Ee}from"./offset-CLDSqOP5.js";import{T as ke}from"./editorSettings-LMnfWux6.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},s=new t.Error().stack;s&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[s]="0bb767ec-02a3-42da-88b2-9b7c211addb0",t._sentryDebugIdIdentifier="sentry-dbid-0bb767ec-02a3-42da-88b2-9b7c211addb0")}catch{}})();var N=(t=>(t.onLoad="onLoad",t.onStart="onStart",t.onPause="onPause",t.onStop="onStop",t.onClock="onClock",t.onUpdate="onUpdate",t.onFinish="onFinish",t.onWarning="onWarning",t.onDanger="onDanger",t))(N||{});const Ce=Object.keys(N);function Ne(t){return t.replaceAll(" ","").replaceAll(",",".")}const Te="_imageContainer_1k5qa_17",we="_imageOverlay_1k5qa_25",ne={imageContainer:Te,imageOverlay:we};function Ie({src:t}){return e.jsxs("div",{className:ne.imageContainer,children:[!!t&&e.jsx("img",{loading:"lazy",src:t}),e.jsx("div",{className:ne.imageOverlay})]})}function De({value:t,inputref:s,...a}){return m.useEffect(()=>{const n=s.current;return Z(s.current),()=>{Z.destroy(n)}},[s,t]),e.jsx(ke,{ref:s,value:t,...a})}function le(t,s,a,n){const[o,l]=m.useState(t),i=m.useRef(!1);m.useEffect(()=>{l(typeof t>"u"?"":t)},[t]);const c=m.useCallback(d=>{d!==o&&l(d)},[o]),h=m.useCallback(d=>{var j;if(d===t&&!(n!=null&&n.allowSubmitSameValue))(j=n==null?void 0:n.onCancelUpdate)==null||j.call(n);else{const r=d.trim();s(r),r!==d&&l(r)}setTimeout(()=>{var r,f,y;n!=null&&n.allowKeyboardNavigation?(f=(r=a.current)==null?void 0:r.parentElement)==null||f.focus():(y=a.current)==null||y.blur()})},[t,n,a,s]),x=m.useCallback(()=>{var d;l(t),a.current&&(a.current.value=t),(d=n==null?void 0:n.onCancelUpdate)==null||d.call(n),setTimeout(()=>{var j;return(j=a.current)==null?void 0:j.blur()})},[t,n,a]),b=m.useMemo(()=>{const d=[["Escape",r=>{r.preventDefault(),x()},{preventDefault:!0}]];n!=null&&n.submitOnEnter&&d.push(["Enter",()=>{i.current=!0,h(o),setTimeout(()=>{i.current=!1},0)}]),n!=null&&n.submitOnCtrlEnter&&d.push(["mod + Enter",()=>{i.current=!0,h(o),setTimeout(()=>{i.current=!1},0)}]);const j=oe(d);return r=>{(r.key==="ArrowLeft"||r.key==="ArrowRight"||r.key==="ArrowUp"||r.key==="ArrowDown")&&r.stopPropagation(),j(r)}},[x,h,n==null?void 0:n.submitOnCtrlEnter,n==null?void 0:n.submitOnEnter,o]);return{value:o,onChange:d=>c(d.target.value),onBlur:d=>{i.current||h(d.target.value)},onKeyDown:b}}function G({className:t,field:s,label:a,initialValue:n,style:o,submitHandler:l}){const i=m.useRef(null),c=m.useCallback(j=>l(s,j),[s,l]),{value:h,onChange:x,onBlur:b,onKeyDown:d}=le(n,c,i,{submitOnCtrlEnter:!0});return e.jsxs("div",{children:[e.jsx(g,{className:t,htmlFor:s,style:o,children:a}),e.jsx(De,{id:s,inputref:i,rows:1,"data-testid":"input-textarea",fluid:!0,value:h,onChange:x,onBlur:b,onKeyDown:d})]})}function L({className:t,field:s,label:a,initialValue:n,style:o,submitHandler:l,maxLength:i,placeholder:c}){const h=m.useRef(null),x=m.useCallback(f=>l(s,f),[s,l]),{value:b,onChange:d,onBlur:j,onKeyDown:r}=le(n,x,h,{submitOnEnter:!0});return e.jsxs("div",{children:[e.jsx(g,{className:t,htmlFor:s,style:o,children:a}),e.jsx(B,{id:s,ref:h,maxLength:i,fluid:!0,"data-testid":"input-textfield",value:b,placeholder:c,onChange:d,onBlur:j,onKeyDown:r})]})}const Le="_rundownEditor_nbvvy_19",Se="_content_nbvvy_29",Fe="_column_nbvvy_48",Ae="_decorated_nbvvy_57",Oe="_delayLabel_nbvvy_65",He="_switchLabel_nbvvy_73",$e="_inline_nbvvy_83",Ve="_splitTwo_nbvvy_89",qe="_splitThree_nbvvy_96",Me="_tooltipIcon_nbvvy_103",We="_customImage_nbvvy_110",Re="_textLikeInput_nbvvy_117",Be="_inactive_nbvvy_125",Ge="_active_nbvvy_129",u={rundownEditor:Le,content:Se,column:Fe,decorated:Ae,delayLabel:Oe,switchLabel:He,inline:$e,splitTwo:Ve,splitThree:qe,tooltipIcon:Me,customImage:We,textLikeInput:Re,inactive:Be,active:Ge};function X({fields:t,handleSubmit:s,entry:a}){return e.jsx(m.Fragment,{children:Object.keys(t).map(n=>{const o=`${a.id}-${n}`,l=`custom-${n}`,i=a.custom[n]??"",{backgroundColor:c,color:h}=fe(t[n].colour),x=t[n].label;return t[n].type==="text"?e.jsx(G,{field:l,label:x,initialValue:i,submitHandler:s,className:u.decorated,style:{"--decorator-bg":c,"--decorator-color":h}},o):t[n].type==="image"?e.jsxs("div",{className:u.customImage,children:[e.jsx(L,{field:l,label:x,initialValue:i,placeholder:"Paste image URL",submitHandler:s,className:u.decorated,maxLength:255,style:{"--decorator-bg":c,"--decorator-color":h}},o),e.jsx(Ie,{src:i})]},o):null})})}const Pe="_inputGroup_1e1jq_17",Ue="_delayed_1e1jq_24",se={inputGroup:Pe,delayed:Ue};function q({hasDelay:t,children:s}){return e.jsx("div",{className:A([se.inputGroup,t&&se.delayed]),children:s})}const Ke="_fourtyfive_w3aej_13",ze="_timerNote_w3aej_21",Je="_inactive_w3aej_27",Qe="_active_w3aej_31",C={fourtyfive:Ke,timerNote:ze,inactive:Je,active:Qe},Xe=m.memo(Ye);function Ye({eventId:t,countToEnd:s,timeStart:a,timeEnd:n,duration:o,timeStrategy:l,linkStart:i,delay:c,showLabels:h}){const{updateEntry:x,updateTimer:b}=T(),d=(k,_)=>{b(t,k,_)},j=k=>{x({id:t,timeStrategy:k})},r=k=>{x({id:t,linkStart:k})},f=[];a+o>ye&&f.push("Over midnight"),s&&f.push("Count to End");const y=c!==0,v=l===O.LockEnd,E=l===O.LockDuration;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[h&&e.jsx(g,{className:C.sectionTitle,children:"Start time"}),e.jsxs(q,{hasDelay:y,children:[e.jsx(S,{name:"timeStart",submitHandler:d,time:a,placeholder:"Start",align:"left",disabled:i}),e.jsx(I,{text:"Link start to previous end",onClick:()=>r(!i),render:e.jsx(F,{variant:"subtle-white",className:i?C.active:C.inactive}),children:e.jsx("span",{className:C.fourtyfive,children:i?e.jsx(de,{}):e.jsx(ue,{})})})]})]}),e.jsxs("div",{children:[h&&e.jsx(g,{children:"End time"}),e.jsxs(q,{hasDelay:y,children:[e.jsx(S,{name:"timeEnd",submitHandler:d,time:n,placeholder:"End",align:"left",disabled:E}),e.jsx(I,{text:"Lock end",render:e.jsx(F,{variant:"subtle-white",className:v?C.active:C.inactive}),onClick:()=>j(O.LockEnd),"data-testid":"lock__end",children:v?e.jsx(U,{}):e.jsx(K,{})})]})]}),e.jsxs("div",{children:[h&&e.jsx(g,{children:"Duration"}),e.jsxs(q,{hasDelay:y,children:[e.jsx(S,{name:"duration",submitHandler:d,time:o,placeholder:"Duration",align:"left",disabled:v}),e.jsx(I,{text:"Lock duration",render:e.jsx(F,{variant:"subtle-white",className:E?C.active:C.inactive}),onClick:()=>j(O.LockDuration),"data-testid":"lock__duration",children:E?e.jsx(U,{}):e.jsx(K,{})})]})]}),f.length>0&&e.jsx(I,{text:f.join(" - "),className:C.timerNote,"data-testid":"event-warning",render:e.jsx("span",{}),children:e.jsx(me,{})})]})}const Ze=m.memo(et);function et({eventId:t,timeStart:s,timeEnd:a,duration:n,timeStrategy:o,linkStart:l,countToEnd:i,delay:c,endAction:h,timerType:x,timeWarning:b,timeDanger:d}){const{updateEntry:j}=T(),r=(v,E)=>{if(v==="countToEnd"){j({id:t,countToEnd:E});return}if(v==="timeWarning"||v==="timeDanger"){const k=ie(E);j({id:t,[v]:k});return}if(v==="timerType"||v==="endAction"){j({id:t,[v]:E});return}},y=c!==0?`Event is ${ve(c,"expanded")}. New schedule ${w(s+c)} → ${w(a+c)}`:"";return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:u.column,children:[e.jsx(p,{children:"Event schedule"}),e.jsxs("div",{children:[e.jsx("div",{className:u.inline,children:e.jsx(Xe,{eventId:t,timeStart:s,timeEnd:a,duration:n,timeStrategy:o,linkStart:l,delay:c,countToEnd:i,showLabels:!0})}),e.jsx("div",{className:u.delayLabel,children:y})]})]}),e.jsxs("div",{className:u.column,children:[e.jsx(p,{children:"Event Behaviour"}),e.jsxs("div",{className:u.splitTwo,children:[e.jsxs("div",{children:[e.jsx(g,{htmlFor:"endAction",children:"End Action"}),e.jsx(R,{value:h,onValueChange:v=>r("endAction",v),options:[{value:P.None,label:"None"},{value:P.LoadNext,label:"Load next event"},{value:P.PlayNext,label:"Play next event"}]})]}),e.jsxs("div",{children:[e.jsx(g,{htmlFor:"countToEnd",children:"Count to End"}),e.jsxs(g,{className:u.switchLabel,children:[e.jsx(ae,{id:"countToEnd",checked:i,onCheckedChange:v=>r("countToEnd",v)}),i?"On":"Off"]})]})]})]}),e.jsxs("div",{className:u.column,children:[e.jsx(p,{children:e.jsxs(I,{text:"Changes how the timer is displayed in different views. It is not reflected in the rundown",render:e.jsx("span",{}),children:["Display Options",e.jsx(he,{className:u.tooltipIcon})]})}),e.jsxs("div",{className:u.splitTwo,children:[e.jsxs("div",{children:[e.jsx(g,{htmlFor:"timerType",children:"Timer Type"}),e.jsx(R,{value:x,onValueChange:v=>r("timerType",v),options:[{value:H.CountDown,label:"Count down"},{value:H.CountUp,label:"Count up"},{value:H.Clock,label:"Clock"},{value:H.None,label:"None"}]})]}),e.jsxs("div",{className:u.inline,children:[e.jsxs("div",{children:[e.jsx(g,{htmlFor:"timeWarning",children:"Warning Time"}),e.jsx(S,{id:"timeWarning",name:"timeWarning",submitHandler:r,time:b,placeholder:"Duration"})]}),e.jsxs("div",{children:[e.jsx(g,{htmlFor:"timeDanger",children:"Danger Time"}),e.jsx(S,{id:"timeDanger",name:"timeDanger",submitHandler:r,time:d,placeholder:"Duration"})]})]})]})]})]})}const tt=m.memo(nt);function nt({eventId:t,cue:s,flag:a,title:n,note:o,colour:l}){const{updateEntry:i}=T(),c=(b,d)=>{i({id:t,cue:Ne(d)})},h=b=>{i({id:t,flag:b})},x=(b,d)=>{i({id:t,[b]:d})};return e.jsxs("div",{className:u.column,children:[e.jsx(p,{children:"Event Data"}),e.jsxs("div",{className:u.splitThree,children:[e.jsxs("div",{children:[e.jsx(g,{htmlFor:"eventId",children:"Event ID (read only)"}),e.jsx(B,{id:"eventId","data-testid":"input-textfield",value:t,readOnly:!0,fluid:!0})]}),e.jsx(L,{field:"cue",label:"Cue",initialValue:s,submitHandler:c,maxLength:10}),e.jsxs("div",{children:[e.jsx(g,{htmlFor:"flag",children:"Flag"}),e.jsxs(g,{className:u.switchLabel,children:[e.jsx(ae,{id:"flag",checked:a,onCheckedChange:h}),a?"On":"Off"]})]})]}),e.jsxs("div",{children:[e.jsx(g,{children:"Colour"}),e.jsx(Q,{name:"colour",value:l,handleChange:x})]}),e.jsx(L,{field:"title",label:"Title",initialValue:n,submitHandler:x}),e.jsx(G,{field:"note",label:"Note",initialValue:o,submitHandler:x})]})}const st=[N.onLoad,N.onStart,N.onPause,N.onFinish,N.onWarning,N.onDanger],at="_triggerForm_l7413_17",it="_trigger_l7413_17",rt="_errorLabel_l7413_38",lt="_success_l7413_42",M={triggerForm:at,trigger:it,errorLabel:rt,success:lt};function ct({triggers:t,eventId:s}){const a=t.length>0;return e.jsxs(e.Fragment,{children:[a&&e.jsx(dt,{triggers:t,eventId:s}),e.jsx(ot,{triggers:t,eventId:s})]})}function ot({eventId:t,triggers:s}){const{data:a}=re(),{updateEntry:n}=T(),[o,l]=m.useState(void 0),[i,c]=m.useState(N.onStart),h=(r,f)=>{const y=s??new Array,v=pe();y.push({id:v,title:"",trigger:r,automationId:f}),n({id:t,triggers:y})},b=((r,f)=>{if(f===void 0)return"Select an automation";if(!Object.keys(a.automations).includes(f))return"This automation does not exist";if(s!==void 0)return Object.values(s).some(y=>y.automationId===f&&y.trigger===r)?"Automation can only be used once":void 0})(i,o),d=m.useMemo(()=>[{value:null,label:"Select Trigger"},...st.map(r=>({value:r,label:r}))],[]),j=m.useMemo(()=>[{value:null,label:"Select Automation"},...Object.values(a.automations).map(({id:r,title:f})=>({value:r,label:f}))],[a.automations]);return e.jsxs("div",{className:M.triggerForm,children:[e.jsx(R,{value:i,onValueChange:r=>{r!==null&&c(r)},options:d}),e.jsx(R,{value:o??null,onValueChange:r=>{r!==null&&l(r)},options:j}),e.jsx(_e,{disabled:b!==void 0,onClick:()=>o&&h(i,o),children:"Add"}),b!==void 0?e.jsx(I,{text:b,render:e.jsx("span",{}),children:e.jsx(je,{className:M.errorLabel})}):e.jsx(be,{className:M.success})]})}function dt({eventId:t,triggers:s}){const{updateEntry:a}=T(),{data:n}=re(),o=m.useCallback(i=>{const c=s.filter(h=>h.id!==i);a({id:t,triggers:c})},[t,s,a]),l={};return Ce.forEach(i=>{const c=s.filter(h=>h.trigger===i);c.length&&Object.assign(l,{[i]:c})}),e.jsx("div",{children:Object.entries(l).map(([i,c])=>e.jsx(m.Fragment,{children:c.map(h=>{var j;const{id:x,automationId:b}=h,d=((j=n.automations[b])==null?void 0:j.title)??"<MISSING AUTOMATION>";return e.jsxs("div",{className:M.trigger,children:[e.jsx(te,{children:i}),e.jsx(te,{children:d}),e.jsx(F,{variant:"ghosted-destructive",onClick:()=>o(x),children:e.jsx(xe,{})})]},x)})},i))})}function At({event:t}){const{data:s}=J(),{updateEntry:a}=T(),n=window.location.pathname.includes("editor"),o=m.useCallback((l,i)=>{if(l.startsWith("custom-")){const c=l.split("custom-")[1];a({id:t.id,custom:{[c]:i}})}else a({id:t.id,[l]:i})},[t.id,a]);return e.jsxs("div",{className:u.content,children:[e.jsx(Ze,{eventId:t.id,timeStart:t.timeStart,timeEnd:t.timeEnd,duration:t.duration,timeStrategy:t.timeStrategy,linkStart:t.linkStart,countToEnd:t.countToEnd,delay:t.delay,endAction:t.endAction,timerType:t.timerType,timeWarning:t.timeWarning,timeDanger:t.timeDanger},`${t.id}-times`),e.jsx(tt,{eventId:t.id,cue:t.cue,flag:t.flag,title:t.title,note:t.note,colour:t.colour},`${t.id}-titles`),e.jsxs("div",{className:u.column,children:[e.jsxs(p,{children:["Custom Fields",n&&e.jsx(W,{search:"settings=manage__custom",children:"Manage Custom Fields"})]}),e.jsx(X,{fields:s,handleSubmit:o,entry:t})]}),e.jsxs("div",{className:u.column,children:[e.jsxs(p,{children:["Automations",n&&e.jsx(W,{search:"settings=automation",children:"Manage Automations"})]}),e.jsx(ct,{triggers:t.triggers,eventId:t.id})]})]})}const ut="_blink_1qqxl_1",mt="_fourtyfive_1qqxl_13",ht="_textInput_1qqxl_18",xt="_under_1qqxl_31",jt="_over_1qqxl_34",bt="_muted_1qqxl_37",gt="_disabled_1qqxl_40",$={blink:ut,fourtyfive:mt,textInput:ht,under:xt,over:jt,muted:bt,disabled:gt},ce=m.forwardRef(({offset:t,muted:s,disabled:a,children:n,className:o,...l},i)=>{const c=m.useRef(null),h=A([$.textInput,t&&$[t],s&&$.muted,a&&$.disabled,o]);return m.useImperativeHandle(i,()=>({focusParentElement(){var x,b;(b=(x=c.current)==null?void 0:x.parentElement)==null||b.focus()}})),e.jsx("div",{className:h,tabIndex:a?-1:0,...l,ref:c,children:n})});ce.displayName="TextLikeInput";const V=m.memo(ce);function vt({id:t,name:s,submitHandler:a,time:n,emptyDisplay:o,placeholder:l,disabled:i,align:c="center",className:h}){const x=m.useRef(null),[b,d]=m.useState(""),j=m.useRef(!1),r=m.useCallback(()=>{typeof n!="number"||isNaN(n)?d(o):d(w(n))},[o,n]),f=m.useCallback(()=>{var _;(_=x.current)==null||_.select()},[]),y=m.useCallback(_=>{if(_===""&&n===null)return!1;const D=ie(_);return D===n?!1:(a(s,D),!0)},[s,a,n]),v=m.useCallback(_=>{y(_)||r()},[y,r]),E=m.useCallback(_=>{var D,Y;_.key==="Enter"&&((D=x.current)==null||D.blur()),_.key==="Escape"&&(j.current=!0,(Y=x.current)==null||Y.blur(),r())},[r]),k=m.useCallback(_=>{if(j.current){j.current=!1;return}v(_.target.value)},[v]);return m.useEffect(()=>{r()},[r]),e.jsx(B,{id:t,disabled:i,ref:x,"data-testid":`time-input-${s}`,className:A([ge.timeInput,h]),placeholder:l,onFocus:f,onChange:_=>d(_.target.value),onBlur:k,onKeyDown:E,value:b,maxLength:8,autoComplete:"off",style:{textAlign:c}})}function ft({duration:t,targetDuration:s,submitHandler:a}){const n=s!==null;return e.jsxs("div",{children:[e.jsx(g,{htmlFor:"targetDuration",children:"Target duration"}),e.jsxs(q,{hasDelay:n&&s!==t,children:[e.jsx(vt,{name:"targetDuration",time:s,submitHandler:a,emptyDisplay:z,className:n?"":u.inactive}),e.jsx(I,{text:"Lock to target duration",className:A([u.timeAction,n&&u.active]),onClick:()=>a("targetDuration",n?null:t),"data-testid":"lock__duration",render:e.jsx(F,{variant:"subtle-white",className:n?u.active:u.inactive}),children:n?e.jsx(U,{}):e.jsx(K,{})})]})]})}function Ot({group:t}){const{data:s}=J(),{updateEntry:a}=T(),n=m.useCallback((c,h)=>{if(typeof c=="string"&&c.startsWith("custom-")){const x=c.split("custom-")[1];a({id:t.id,custom:{[x]:h}});return}return a(c==="targetDuration"?{id:t.id,targetDuration:h}:{id:t.id,[c]:h})},[t.id,a]),o=window.location.pathname.includes("editor"),l=t.targetDuration===null?null:t.duration-t.targetDuration,i=l!==null?Ee(l):null;return e.jsxs("div",{className:u.content,children:[e.jsxs("div",{className:u.column,children:[e.jsx(p,{children:"Group schedule"}),e.jsxs("div",{className:u.inline,children:[e.jsxs("div",{children:[e.jsx(g,{children:"First event start"}),e.jsx(V,{className:u.textLikeInput,disabled:!0,children:w(t.timeStart,{fallback:ee})})]}),e.jsxs("div",{children:[e.jsx(g,{children:"Last event end"}),e.jsx(V,{className:u.textLikeInput,disabled:!0,children:w(t.timeEnd,{fallback:ee})})]}),e.jsxs("div",{children:[e.jsx(g,{htmlFor:"duration",children:"Scheduled duration"}),e.jsx(V,{className:u.textLikeInput,disabled:!0,children:w(t.duration,{fallback:z})})]})]}),e.jsxs("div",{className:u.inline,children:[e.jsxs("div",{children:[e.jsx(g,{htmlFor:"eventId",children:"Plan offset"}),e.jsxs(V,{offset:i,className:A([u.textLikeInput,l===null&&u.inactive]),disabled:!0,children:[l!==null&&l>0?"+":"",w(l,{fallback:z})]})]}),e.jsx(ft,{duration:t.duration,targetDuration:t.targetDuration,submitHandler:n})]})]}),e.jsxs("div",{className:u.column,children:[e.jsx(p,{children:"Group data"}),e.jsxs("div",{children:[e.jsx(g,{children:"Colour"}),e.jsx(Q,{name:"colour",value:t.colour,handleChange:n})]}),e.jsx(L,{field:"title",label:"Title",initialValue:t.title,submitHandler:n}),e.jsx(G,{field:"note",label:"Note",initialValue:t.note,submitHandler:n})]}),e.jsxs("div",{className:u.column,children:[e.jsxs(p,{children:["Custom Fields",o&&e.jsx(W,{search:"settings=manage__custom",children:"Manage Custom Fields"})]}),e.jsx(X,{fields:s,handleSubmit:n,entry:t})]})]})}function Ht({milestone:t}){const{data:s}=J(),{updateEntry:a}=T(),n=m.useCallback((l,i)=>{if(typeof l=="string"&&l.startsWith("custom-")){const c=l.split("custom-")[1];a({id:t.id,custom:{[c]:i}});return}return a({id:t.id,[l]:i})},[t.id,a]),o=window.location.pathname.includes("editor");return e.jsxs("div",{className:u.content,children:[e.jsxs("div",{className:u.column,children:[e.jsx(p,{children:"Milestone data"}),e.jsxs("div",{className:u.splitTwo,children:[e.jsxs("div",{children:[e.jsx(g,{htmlFor:"entryId",children:"Milestone ID (read only)"}),e.jsx(B,{id:"entryId","data-testid":"input-textfield",value:t.id,readOnly:!0,fluid:!0})]}),e.jsx(L,{field:"cue",label:"Cue",initialValue:t.cue,submitHandler:n,maxLength:10})]}),e.jsxs("div",{children:[e.jsx(g,{children:"Colour"}),e.jsx(Q,{name:"colour",value:t.colour,handleChange:n})]}),e.jsx(L,{field:"title",label:"Title",initialValue:t.title,submitHandler:n}),e.jsx(G,{field:"note",label:"Note",initialValue:t.note,submitHandler:n})]}),e.jsxs("div",{className:u.column,children:[e.jsxs(p,{children:["Custom Fields",o&&e.jsx(W,{search:"settings=manage__custom",children:"Manage Custom Fields"})]}),e.jsx(X,{fields:s,handleSubmit:n,entry:t})]})]})}export{De as A,At as E,Ot as G,Ht as M,V as T,Xe as a,u as s,le as u};
|
|
2
|
-
//# sourceMappingURL=MilestoneEditor-
|
|
1
|
+
import{j as e,h as m,bj as Z,bk as oe,am as de,bl as ue,bm as U,bn as K,bo as me,bp as he,ah as xe,ba as je,bq as be}from"./vendor-9UkPSc5K.js";import{L as g,T as p}from"./EditorUtils-CFE106qQ.js";import{T as S,A as W,s as ge}from"./TimeInput-DU09ewqh.js";import{u as T,m as ve}from"./dateConfig-WYqMzV9D.js";import{u as J}from"./useCustomFields-Da0Li7nQ.js";import{T as O,E as P}from"./validateEvent-BJMwP_mq.js";import{af as B,aA as fe,i as A,ai as F,r as ye,y as w,T as H,B as _e,b8 as pe,w as z,bg as ee}from"./index-njXwwjfn.js";import{S as R}from"./Select-BLA-yQMq.js";import{S as ae}from"./useProjectData-DW06zQvF.js";import{T as I}from"./Tooltip-C0rGHLsB.js";import{p as ie}from"./parseUserTime-Bc1pSJR2.js";import{S as Q,u as re,T as te}from"./Modal-krcwDRb-.js";import{g as Ee}from"./offset-D1q-72D-.js";import{T as ke}from"./editorSettings-CCHx-wCx.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},s=new t.Error().stack;s&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[s]="0bb767ec-02a3-42da-88b2-9b7c211addb0",t._sentryDebugIdIdentifier="sentry-dbid-0bb767ec-02a3-42da-88b2-9b7c211addb0")}catch{}})();var N=(t=>(t.onLoad="onLoad",t.onStart="onStart",t.onPause="onPause",t.onStop="onStop",t.onClock="onClock",t.onUpdate="onUpdate",t.onFinish="onFinish",t.onWarning="onWarning",t.onDanger="onDanger",t))(N||{});const Ce=Object.keys(N);function Ne(t){return t.replaceAll(" ","").replaceAll(",",".")}const Te="_imageContainer_1k5qa_17",we="_imageOverlay_1k5qa_25",ne={imageContainer:Te,imageOverlay:we};function Ie({src:t}){return e.jsxs("div",{className:ne.imageContainer,children:[!!t&&e.jsx("img",{loading:"lazy",src:t}),e.jsx("div",{className:ne.imageOverlay})]})}function De({value:t,inputref:s,...a}){return m.useEffect(()=>{const n=s.current;return Z(s.current),()=>{Z.destroy(n)}},[s,t]),e.jsx(ke,{ref:s,value:t,...a})}function le(t,s,a,n){const[o,l]=m.useState(t),i=m.useRef(!1);m.useEffect(()=>{l(typeof t>"u"?"":t)},[t]);const c=m.useCallback(d=>{d!==o&&l(d)},[o]),h=m.useCallback(d=>{var j;if(d===t&&!(n!=null&&n.allowSubmitSameValue))(j=n==null?void 0:n.onCancelUpdate)==null||j.call(n);else{const r=d.trim();s(r),r!==d&&l(r)}setTimeout(()=>{var r,f,y;n!=null&&n.allowKeyboardNavigation?(f=(r=a.current)==null?void 0:r.parentElement)==null||f.focus():(y=a.current)==null||y.blur()})},[t,n,a,s]),x=m.useCallback(()=>{var d;l(t),a.current&&(a.current.value=t),(d=n==null?void 0:n.onCancelUpdate)==null||d.call(n),setTimeout(()=>{var j;return(j=a.current)==null?void 0:j.blur()})},[t,n,a]),b=m.useMemo(()=>{const d=[["Escape",r=>{r.preventDefault(),x()},{preventDefault:!0}]];n!=null&&n.submitOnEnter&&d.push(["Enter",()=>{i.current=!0,h(o),setTimeout(()=>{i.current=!1},0)}]),n!=null&&n.submitOnCtrlEnter&&d.push(["mod + Enter",()=>{i.current=!0,h(o),setTimeout(()=>{i.current=!1},0)}]);const j=oe(d);return r=>{(r.key==="ArrowLeft"||r.key==="ArrowRight"||r.key==="ArrowUp"||r.key==="ArrowDown")&&r.stopPropagation(),j(r)}},[x,h,n==null?void 0:n.submitOnCtrlEnter,n==null?void 0:n.submitOnEnter,o]);return{value:o,onChange:d=>c(d.target.value),onBlur:d=>{i.current||h(d.target.value)},onKeyDown:b}}function G({className:t,field:s,label:a,initialValue:n,style:o,submitHandler:l}){const i=m.useRef(null),c=m.useCallback(j=>l(s,j),[s,l]),{value:h,onChange:x,onBlur:b,onKeyDown:d}=le(n,c,i,{submitOnCtrlEnter:!0});return e.jsxs("div",{children:[e.jsx(g,{className:t,htmlFor:s,style:o,children:a}),e.jsx(De,{id:s,inputref:i,rows:1,"data-testid":"input-textarea",fluid:!0,value:h,onChange:x,onBlur:b,onKeyDown:d})]})}function L({className:t,field:s,label:a,initialValue:n,style:o,submitHandler:l,maxLength:i,placeholder:c}){const h=m.useRef(null),x=m.useCallback(f=>l(s,f),[s,l]),{value:b,onChange:d,onBlur:j,onKeyDown:r}=le(n,x,h,{submitOnEnter:!0});return e.jsxs("div",{children:[e.jsx(g,{className:t,htmlFor:s,style:o,children:a}),e.jsx(B,{id:s,ref:h,maxLength:i,fluid:!0,"data-testid":"input-textfield",value:b,placeholder:c,onChange:d,onBlur:j,onKeyDown:r})]})}const Le="_rundownEditor_nbvvy_19",Se="_content_nbvvy_29",Fe="_column_nbvvy_48",Ae="_decorated_nbvvy_57",Oe="_delayLabel_nbvvy_65",He="_switchLabel_nbvvy_73",$e="_inline_nbvvy_83",Ve="_splitTwo_nbvvy_89",qe="_splitThree_nbvvy_96",Me="_tooltipIcon_nbvvy_103",We="_customImage_nbvvy_110",Re="_textLikeInput_nbvvy_117",Be="_inactive_nbvvy_125",Ge="_active_nbvvy_129",u={rundownEditor:Le,content:Se,column:Fe,decorated:Ae,delayLabel:Oe,switchLabel:He,inline:$e,splitTwo:Ve,splitThree:qe,tooltipIcon:Me,customImage:We,textLikeInput:Re,inactive:Be,active:Ge};function X({fields:t,handleSubmit:s,entry:a}){return e.jsx(m.Fragment,{children:Object.keys(t).map(n=>{const o=`${a.id}-${n}`,l=`custom-${n}`,i=a.custom[n]??"",{backgroundColor:c,color:h}=fe(t[n].colour),x=t[n].label;return t[n].type==="text"?e.jsx(G,{field:l,label:x,initialValue:i,submitHandler:s,className:u.decorated,style:{"--decorator-bg":c,"--decorator-color":h}},o):t[n].type==="image"?e.jsxs("div",{className:u.customImage,children:[e.jsx(L,{field:l,label:x,initialValue:i,placeholder:"Paste image URL",submitHandler:s,className:u.decorated,maxLength:255,style:{"--decorator-bg":c,"--decorator-color":h}},o),e.jsx(Ie,{src:i})]},o):null})})}const Pe="_inputGroup_1e1jq_17",Ue="_delayed_1e1jq_24",se={inputGroup:Pe,delayed:Ue};function q({hasDelay:t,children:s}){return e.jsx("div",{className:A([se.inputGroup,t&&se.delayed]),children:s})}const Ke="_fourtyfive_w3aej_13",ze="_timerNote_w3aej_21",Je="_inactive_w3aej_27",Qe="_active_w3aej_31",C={fourtyfive:Ke,timerNote:ze,inactive:Je,active:Qe},Xe=m.memo(Ye);function Ye({eventId:t,countToEnd:s,timeStart:a,timeEnd:n,duration:o,timeStrategy:l,linkStart:i,delay:c,showLabels:h}){const{updateEntry:x,updateTimer:b}=T(),d=(k,_)=>{b(t,k,_)},j=k=>{x({id:t,timeStrategy:k})},r=k=>{x({id:t,linkStart:k})},f=[];a+o>ye&&f.push("Over midnight"),s&&f.push("Count to End");const y=c!==0,v=l===O.LockEnd,E=l===O.LockDuration;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[h&&e.jsx(g,{className:C.sectionTitle,children:"Start time"}),e.jsxs(q,{hasDelay:y,children:[e.jsx(S,{name:"timeStart",submitHandler:d,time:a,placeholder:"Start",align:"left",disabled:i}),e.jsx(I,{text:"Link start to previous end",onClick:()=>r(!i),render:e.jsx(F,{variant:"subtle-white",className:i?C.active:C.inactive}),children:e.jsx("span",{className:C.fourtyfive,children:i?e.jsx(de,{}):e.jsx(ue,{})})})]})]}),e.jsxs("div",{children:[h&&e.jsx(g,{children:"End time"}),e.jsxs(q,{hasDelay:y,children:[e.jsx(S,{name:"timeEnd",submitHandler:d,time:n,placeholder:"End",align:"left",disabled:E}),e.jsx(I,{text:"Lock end",render:e.jsx(F,{variant:"subtle-white",className:v?C.active:C.inactive}),onClick:()=>j(O.LockEnd),"data-testid":"lock__end",children:v?e.jsx(U,{}):e.jsx(K,{})})]})]}),e.jsxs("div",{children:[h&&e.jsx(g,{children:"Duration"}),e.jsxs(q,{hasDelay:y,children:[e.jsx(S,{name:"duration",submitHandler:d,time:o,placeholder:"Duration",align:"left",disabled:v}),e.jsx(I,{text:"Lock duration",render:e.jsx(F,{variant:"subtle-white",className:E?C.active:C.inactive}),onClick:()=>j(O.LockDuration),"data-testid":"lock__duration",children:E?e.jsx(U,{}):e.jsx(K,{})})]})]}),f.length>0&&e.jsx(I,{text:f.join(" - "),className:C.timerNote,"data-testid":"event-warning",render:e.jsx("span",{}),children:e.jsx(me,{})})]})}const Ze=m.memo(et);function et({eventId:t,timeStart:s,timeEnd:a,duration:n,timeStrategy:o,linkStart:l,countToEnd:i,delay:c,endAction:h,timerType:x,timeWarning:b,timeDanger:d}){const{updateEntry:j}=T(),r=(v,E)=>{if(v==="countToEnd"){j({id:t,countToEnd:E});return}if(v==="timeWarning"||v==="timeDanger"){const k=ie(E);j({id:t,[v]:k});return}if(v==="timerType"||v==="endAction"){j({id:t,[v]:E});return}},y=c!==0?`Event is ${ve(c,"expanded")}. New schedule ${w(s+c)} → ${w(a+c)}`:"";return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:u.column,children:[e.jsx(p,{children:"Event schedule"}),e.jsxs("div",{children:[e.jsx("div",{className:u.inline,children:e.jsx(Xe,{eventId:t,timeStart:s,timeEnd:a,duration:n,timeStrategy:o,linkStart:l,delay:c,countToEnd:i,showLabels:!0})}),e.jsx("div",{className:u.delayLabel,children:y})]})]}),e.jsxs("div",{className:u.column,children:[e.jsx(p,{children:"Event Behaviour"}),e.jsxs("div",{className:u.splitTwo,children:[e.jsxs("div",{children:[e.jsx(g,{htmlFor:"endAction",children:"End Action"}),e.jsx(R,{value:h,onValueChange:v=>r("endAction",v),options:[{value:P.None,label:"None"},{value:P.LoadNext,label:"Load next event"},{value:P.PlayNext,label:"Play next event"}]})]}),e.jsxs("div",{children:[e.jsx(g,{htmlFor:"countToEnd",children:"Count to End"}),e.jsxs(g,{className:u.switchLabel,children:[e.jsx(ae,{id:"countToEnd",checked:i,onCheckedChange:v=>r("countToEnd",v)}),i?"On":"Off"]})]})]})]}),e.jsxs("div",{className:u.column,children:[e.jsx(p,{children:e.jsxs(I,{text:"Changes how the timer is displayed in different views. It is not reflected in the rundown",render:e.jsx("span",{}),children:["Display Options",e.jsx(he,{className:u.tooltipIcon})]})}),e.jsxs("div",{className:u.splitTwo,children:[e.jsxs("div",{children:[e.jsx(g,{htmlFor:"timerType",children:"Timer Type"}),e.jsx(R,{value:x,onValueChange:v=>r("timerType",v),options:[{value:H.CountDown,label:"Count down"},{value:H.CountUp,label:"Count up"},{value:H.Clock,label:"Clock"},{value:H.None,label:"None"}]})]}),e.jsxs("div",{className:u.inline,children:[e.jsxs("div",{children:[e.jsx(g,{htmlFor:"timeWarning",children:"Warning Time"}),e.jsx(S,{id:"timeWarning",name:"timeWarning",submitHandler:r,time:b,placeholder:"Duration"})]}),e.jsxs("div",{children:[e.jsx(g,{htmlFor:"timeDanger",children:"Danger Time"}),e.jsx(S,{id:"timeDanger",name:"timeDanger",submitHandler:r,time:d,placeholder:"Duration"})]})]})]})]})]})}const tt=m.memo(nt);function nt({eventId:t,cue:s,flag:a,title:n,note:o,colour:l}){const{updateEntry:i}=T(),c=(b,d)=>{i({id:t,cue:Ne(d)})},h=b=>{i({id:t,flag:b})},x=(b,d)=>{i({id:t,[b]:d})};return e.jsxs("div",{className:u.column,children:[e.jsx(p,{children:"Event Data"}),e.jsxs("div",{className:u.splitThree,children:[e.jsxs("div",{children:[e.jsx(g,{htmlFor:"eventId",children:"Event ID (read only)"}),e.jsx(B,{id:"eventId","data-testid":"input-textfield",value:t,readOnly:!0,fluid:!0})]}),e.jsx(L,{field:"cue",label:"Cue",initialValue:s,submitHandler:c,maxLength:10}),e.jsxs("div",{children:[e.jsx(g,{htmlFor:"flag",children:"Flag"}),e.jsxs(g,{className:u.switchLabel,children:[e.jsx(ae,{id:"flag",checked:a,onCheckedChange:h}),a?"On":"Off"]})]})]}),e.jsxs("div",{children:[e.jsx(g,{children:"Colour"}),e.jsx(Q,{name:"colour",value:l,handleChange:x})]}),e.jsx(L,{field:"title",label:"Title",initialValue:n,submitHandler:x}),e.jsx(G,{field:"note",label:"Note",initialValue:o,submitHandler:x})]})}const st=[N.onLoad,N.onStart,N.onPause,N.onFinish,N.onWarning,N.onDanger],at="_triggerForm_l7413_17",it="_trigger_l7413_17",rt="_errorLabel_l7413_38",lt="_success_l7413_42",M={triggerForm:at,trigger:it,errorLabel:rt,success:lt};function ct({triggers:t,eventId:s}){const a=t.length>0;return e.jsxs(e.Fragment,{children:[a&&e.jsx(dt,{triggers:t,eventId:s}),e.jsx(ot,{triggers:t,eventId:s})]})}function ot({eventId:t,triggers:s}){const{data:a}=re(),{updateEntry:n}=T(),[o,l]=m.useState(void 0),[i,c]=m.useState(N.onStart),h=(r,f)=>{const y=s??new Array,v=pe();y.push({id:v,title:"",trigger:r,automationId:f}),n({id:t,triggers:y})},b=((r,f)=>{if(f===void 0)return"Select an automation";if(!Object.keys(a.automations).includes(f))return"This automation does not exist";if(s!==void 0)return Object.values(s).some(y=>y.automationId===f&&y.trigger===r)?"Automation can only be used once":void 0})(i,o),d=m.useMemo(()=>[{value:null,label:"Select Trigger"},...st.map(r=>({value:r,label:r}))],[]),j=m.useMemo(()=>[{value:null,label:"Select Automation"},...Object.values(a.automations).map(({id:r,title:f})=>({value:r,label:f}))],[a.automations]);return e.jsxs("div",{className:M.triggerForm,children:[e.jsx(R,{value:i,onValueChange:r=>{r!==null&&c(r)},options:d}),e.jsx(R,{value:o??null,onValueChange:r=>{r!==null&&l(r)},options:j}),e.jsx(_e,{disabled:b!==void 0,onClick:()=>o&&h(i,o),children:"Add"}),b!==void 0?e.jsx(I,{text:b,render:e.jsx("span",{}),children:e.jsx(je,{className:M.errorLabel})}):e.jsx(be,{className:M.success})]})}function dt({eventId:t,triggers:s}){const{updateEntry:a}=T(),{data:n}=re(),o=m.useCallback(i=>{const c=s.filter(h=>h.id!==i);a({id:t,triggers:c})},[t,s,a]),l={};return Ce.forEach(i=>{const c=s.filter(h=>h.trigger===i);c.length&&Object.assign(l,{[i]:c})}),e.jsx("div",{children:Object.entries(l).map(([i,c])=>e.jsx(m.Fragment,{children:c.map(h=>{var j;const{id:x,automationId:b}=h,d=((j=n.automations[b])==null?void 0:j.title)??"<MISSING AUTOMATION>";return e.jsxs("div",{className:M.trigger,children:[e.jsx(te,{children:i}),e.jsx(te,{children:d}),e.jsx(F,{variant:"ghosted-destructive",onClick:()=>o(x),children:e.jsx(xe,{})})]},x)})},i))})}function At({event:t}){const{data:s}=J(),{updateEntry:a}=T(),n=window.location.pathname.includes("editor"),o=m.useCallback((l,i)=>{if(l.startsWith("custom-")){const c=l.split("custom-")[1];a({id:t.id,custom:{[c]:i}})}else a({id:t.id,[l]:i})},[t.id,a]);return e.jsxs("div",{className:u.content,children:[e.jsx(Ze,{eventId:t.id,timeStart:t.timeStart,timeEnd:t.timeEnd,duration:t.duration,timeStrategy:t.timeStrategy,linkStart:t.linkStart,countToEnd:t.countToEnd,delay:t.delay,endAction:t.endAction,timerType:t.timerType,timeWarning:t.timeWarning,timeDanger:t.timeDanger},`${t.id}-times`),e.jsx(tt,{eventId:t.id,cue:t.cue,flag:t.flag,title:t.title,note:t.note,colour:t.colour},`${t.id}-titles`),e.jsxs("div",{className:u.column,children:[e.jsxs(p,{children:["Custom Fields",n&&e.jsx(W,{search:"settings=manage__custom",children:"Manage Custom Fields"})]}),e.jsx(X,{fields:s,handleSubmit:o,entry:t})]}),e.jsxs("div",{className:u.column,children:[e.jsxs(p,{children:["Automations",n&&e.jsx(W,{search:"settings=automation",children:"Manage Automations"})]}),e.jsx(ct,{triggers:t.triggers,eventId:t.id})]})]})}const ut="_blink_1qqxl_1",mt="_fourtyfive_1qqxl_13",ht="_textInput_1qqxl_18",xt="_under_1qqxl_31",jt="_over_1qqxl_34",bt="_muted_1qqxl_37",gt="_disabled_1qqxl_40",$={blink:ut,fourtyfive:mt,textInput:ht,under:xt,over:jt,muted:bt,disabled:gt},ce=m.forwardRef(({offset:t,muted:s,disabled:a,children:n,className:o,...l},i)=>{const c=m.useRef(null),h=A([$.textInput,t&&$[t],s&&$.muted,a&&$.disabled,o]);return m.useImperativeHandle(i,()=>({focusParentElement(){var x,b;(b=(x=c.current)==null?void 0:x.parentElement)==null||b.focus()}})),e.jsx("div",{className:h,tabIndex:a?-1:0,...l,ref:c,children:n})});ce.displayName="TextLikeInput";const V=m.memo(ce);function vt({id:t,name:s,submitHandler:a,time:n,emptyDisplay:o,placeholder:l,disabled:i,align:c="center",className:h}){const x=m.useRef(null),[b,d]=m.useState(""),j=m.useRef(!1),r=m.useCallback(()=>{typeof n!="number"||isNaN(n)?d(o):d(w(n))},[o,n]),f=m.useCallback(()=>{var _;(_=x.current)==null||_.select()},[]),y=m.useCallback(_=>{if(_===""&&n===null)return!1;const D=ie(_);return D===n?!1:(a(s,D),!0)},[s,a,n]),v=m.useCallback(_=>{y(_)||r()},[y,r]),E=m.useCallback(_=>{var D,Y;_.key==="Enter"&&((D=x.current)==null||D.blur()),_.key==="Escape"&&(j.current=!0,(Y=x.current)==null||Y.blur(),r())},[r]),k=m.useCallback(_=>{if(j.current){j.current=!1;return}v(_.target.value)},[v]);return m.useEffect(()=>{r()},[r]),e.jsx(B,{id:t,disabled:i,ref:x,"data-testid":`time-input-${s}`,className:A([ge.timeInput,h]),placeholder:l,onFocus:f,onChange:_=>d(_.target.value),onBlur:k,onKeyDown:E,value:b,maxLength:8,autoComplete:"off",style:{textAlign:c}})}function ft({duration:t,targetDuration:s,submitHandler:a}){const n=s!==null;return e.jsxs("div",{children:[e.jsx(g,{htmlFor:"targetDuration",children:"Target duration"}),e.jsxs(q,{hasDelay:n&&s!==t,children:[e.jsx(vt,{name:"targetDuration",time:s,submitHandler:a,emptyDisplay:z,className:n?"":u.inactive}),e.jsx(I,{text:"Lock to target duration",className:A([u.timeAction,n&&u.active]),onClick:()=>a("targetDuration",n?null:t),"data-testid":"lock__duration",render:e.jsx(F,{variant:"subtle-white",className:n?u.active:u.inactive}),children:n?e.jsx(U,{}):e.jsx(K,{})})]})]})}function Ot({group:t}){const{data:s}=J(),{updateEntry:a}=T(),n=m.useCallback((c,h)=>{if(typeof c=="string"&&c.startsWith("custom-")){const x=c.split("custom-")[1];a({id:t.id,custom:{[x]:h}});return}return a(c==="targetDuration"?{id:t.id,targetDuration:h}:{id:t.id,[c]:h})},[t.id,a]),o=window.location.pathname.includes("editor"),l=t.targetDuration===null?null:t.duration-t.targetDuration,i=l!==null?Ee(l):null;return e.jsxs("div",{className:u.content,children:[e.jsxs("div",{className:u.column,children:[e.jsx(p,{children:"Group schedule"}),e.jsxs("div",{className:u.inline,children:[e.jsxs("div",{children:[e.jsx(g,{children:"First event start"}),e.jsx(V,{className:u.textLikeInput,disabled:!0,children:w(t.timeStart,{fallback:ee})})]}),e.jsxs("div",{children:[e.jsx(g,{children:"Last event end"}),e.jsx(V,{className:u.textLikeInput,disabled:!0,children:w(t.timeEnd,{fallback:ee})})]}),e.jsxs("div",{children:[e.jsx(g,{htmlFor:"duration",children:"Scheduled duration"}),e.jsx(V,{className:u.textLikeInput,disabled:!0,children:w(t.duration,{fallback:z})})]})]}),e.jsxs("div",{className:u.inline,children:[e.jsxs("div",{children:[e.jsx(g,{htmlFor:"eventId",children:"Plan offset"}),e.jsxs(V,{offset:i,className:A([u.textLikeInput,l===null&&u.inactive]),disabled:!0,children:[l!==null&&l>0?"+":"",w(l,{fallback:z})]})]}),e.jsx(ft,{duration:t.duration,targetDuration:t.targetDuration,submitHandler:n})]})]}),e.jsxs("div",{className:u.column,children:[e.jsx(p,{children:"Group data"}),e.jsxs("div",{children:[e.jsx(g,{children:"Colour"}),e.jsx(Q,{name:"colour",value:t.colour,handleChange:n})]}),e.jsx(L,{field:"title",label:"Title",initialValue:t.title,submitHandler:n}),e.jsx(G,{field:"note",label:"Note",initialValue:t.note,submitHandler:n})]}),e.jsxs("div",{className:u.column,children:[e.jsxs(p,{children:["Custom Fields",o&&e.jsx(W,{search:"settings=manage__custom",children:"Manage Custom Fields"})]}),e.jsx(X,{fields:s,handleSubmit:n,entry:t})]})]})}function Ht({milestone:t}){const{data:s}=J(),{updateEntry:a}=T(),n=m.useCallback((l,i)=>{if(typeof l=="string"&&l.startsWith("custom-")){const c=l.split("custom-")[1];a({id:t.id,custom:{[c]:i}});return}return a({id:t.id,[l]:i})},[t.id,a]),o=window.location.pathname.includes("editor");return e.jsxs("div",{className:u.content,children:[e.jsxs("div",{className:u.column,children:[e.jsx(p,{children:"Milestone data"}),e.jsxs("div",{className:u.splitTwo,children:[e.jsxs("div",{children:[e.jsx(g,{htmlFor:"entryId",children:"Milestone ID (read only)"}),e.jsx(B,{id:"entryId","data-testid":"input-textfield",value:t.id,readOnly:!0,fluid:!0})]}),e.jsx(L,{field:"cue",label:"Cue",initialValue:t.cue,submitHandler:n,maxLength:10})]}),e.jsxs("div",{children:[e.jsx(g,{children:"Colour"}),e.jsx(Q,{name:"colour",value:t.colour,handleChange:n})]}),e.jsx(L,{field:"title",label:"Title",initialValue:t.title,submitHandler:n}),e.jsx(G,{field:"note",label:"Note",initialValue:t.note,submitHandler:n})]}),e.jsxs("div",{className:u.column,children:[e.jsxs(p,{children:["Custom Fields",o&&e.jsx(W,{search:"settings=manage__custom",children:"Manage Custom Fields"})]}),e.jsx(X,{fields:s,handleSubmit:n,entry:t})]})]})}export{De as A,At as E,Ot as G,Ht as M,V as T,Xe as a,u as s,le as u};
|
|
2
|
+
//# sourceMappingURL=MilestoneEditor-DcWPGKNK.js.map
|
|
Binary file
|
|
Binary file
|