@getontime/cli
Version:
Time keeping for live events
3 lines (2 loc) • 17.4 kB
JavaScript
import{r as m,j as t,aX as Ae,aY as Pe,aZ as Le,aF as te,aG as ne,bf as se,cd as Me,t as Fe,f as Be,bp as Oe,ce as Ue,cf as Ge,bP as ze,bL as de,bM as Ke,bR as Ve,cg as We,x as Xe,bQ as Ze,bq as Qe,aL as Ye,bO as He,ch as Je,am as et,bk as tt,ci as nt,ah as ee,aD as st,S as rt,K as ot,aK as it}from"./vendor-DFNUfA2K.js";import{S as q,i as at,g as lt,l as ct}from"./useRundown-DgZv-crd.js";import{w as M,af as pe,i as A,B as ae,l as ut,bg as fe,E as re,bf as me,be as dt,ai as Z,bM as G,H as pt,b as le,T as Q,bN as ft,aA as ye,bO as mt}from"./index-BNit4nUw.js";import{u as F}from"./dateConfig-B62K3AL_.js";import{T as yt,u as oe,a as _e,g as _t,c as vt}from"./RundownExport-Dz40gwc-.js";import{p as bt}from"./parseUserTime-COEUAmmZ.js";import{E as Y}from"./validateEvent-d8SZfbc8.js";import{T as w}from"./Tooltip-CMnbeNS3.js";import{d as gt,u as xt}from"./GroupEditor-Fr9zvH2i.js";import{u as ht}from"./useReport-C6WYCwpP.js";import{i as ve}from"./playbackstate-DRK4geZP.js";import{g as Et}from"./getProgress-Dgt_8BYF.js";import"./useProjectData-BfKJevmX.js";import"./isNewLatest-Bui5Tm3U.js";import"./editorSettings-CK-Psf7E.js";import"./EditorUtils-QotOv0b5.js";import"./ProtectRoute-CmcGN6gV.js";import"./DropdownMenu-BV41kjSA.js";import"./TimeInput-BWc6ixac.js";import"./useCustomFields-C60U2vqf.js";import"./Empty-BLJKwoJq.js";import"./useFollowComponent-2C-gde3X.js";import"./offset-DC4blUxG.js";import"./Select-Bp_h4xvR.js";(function(){try{var n=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new n.Error().stack;e&&(n._sentryDebugIds=n._sentryDebugIds||{},n._sentryDebugIds[e]="68a9cf8e-10e1-4adf-a565-b33413015b27",n._sentryDebugIdIdentifier="sentry-dbid-68a9cf8e-10e1-4adf-a565-b33413015b27")}catch{}})();function jt(n){const e=m.useRef(n);e.current=m.useMemo(()=>n,[n]);const s=m.useRef(void 0);return s.current||(s.current=function(...o){return e.current.apply(this,o)}),s.current}const kt="_radioGroup_1a3sr_17",It="_item_1a3sr_23",St="_radio_1a3sr_17",Ct="_indicator_1a3sr_55",z={radioGroup:kt,item:It,radio:St,indicator:Ct};function wt({items:n,onValueChange:e,...s}){return t.jsx(Ae,{onValueChange:o=>e==null?void 0:e(o),className:z.radioGroup,...s,children:n.map(o=>t.jsxs("label",{className:z.item,children:[t.jsx(Pe,{value:o.value.toString(),className:z.radio,children:t.jsx(Le,{className:z.indicator})}),o.label]},o.value.toString()))})}const Nt="_delayInput_ksn92_17",Tt="_inputField_ksn92_23",ce={delayInput:Nt,inputField:Tt};function Rt(n){const{eventId:e,duration:s}=n,{updateEntry:o}=F(),[c,i]=m.useState(""),l=m.useRef(null);let u=!1;m.useEffect(()=>{typeof s>"u"||i(M(s))},[s]);const d=r=>{if(u){u=!1;return}const b=r.startsWith("-");let _=bt(r);b&&(_=_*-1),_!==s&&(p(_),i(M(_)))},p=r=>{o({id:e,duration:r})},y=()=>{var r;return(r=l.current)==null?void 0:r.select()},f=r=>{var b,_;r.key==="Enter"?((b=l.current)==null||b.blur(),d(r.target.value)):r.key==="Tab"?d(r.target.value):r.key==="Escape"&&(u=!0,i(M(s)),(_=l.current)==null||_.blur())},h=r=>{r==="add"?s<0&&p(s*-1):r==="subtract"&&s>0&&p(s*-1)},v=c.startsWith("-")?"subtract":"add";return t.jsxs("div",{className:ce.delayInput,children:[t.jsx(pe,{ref:l,"data-testid":"delay-input",className:ce.inputField,placeholder:"-",onFocus:y,onChange:r=>i(r.target.value),onBlur:r=>d(r.target.value),onKeyDown:f,value:c,maxLength:9}),t.jsx(wt,{onValueChange:h,value:v,items:[{value:"add",label:"Add time"},{value:"subtract",label:"Subtract time"}]})]})}const $t="_delay_tel5v_17",Dt="_hasCursor_tel5v_34",qt="_drag_tel5v_38",H={delay:$t,hasCursor:Dt,drag:qt};function At({data:n,hasCursor:e}){const{applyDelay:s,deleteEntry:o}=F(),c=m.useRef(null),{attributes:i,listeners:l,setNodeRef:u,isDragging:d,transform:p,transition:y}=te({id:n.id,data:{type:"delay"},animateLayoutChanges:()=>!1}),f={zIndex:d?2:"inherit",cursor:d?"grabbing":"grab",transform:ne.Translate.toString(p),transition:y};m.useEffect(()=>{var r;e&&((r=c==null?void 0:c.current)==null||r.focus())},[e]);const h=()=>{s(n.id)},v=()=>{o([n.id])};return t.jsxs("div",{className:A([H.delay,e?H.hasCursor:null]),ref:u,style:f,"data-testid":"rundown-delay",children:[t.jsx("span",{className:H.drag,ref:c,...i,...l,children:t.jsx(se,{})}),t.jsx(Rt,{eventId:n.id,duration:n.duration}),t.jsxs(ae,{onClick:h,variant:"ghosted-white",children:[t.jsx(Me,{})," Make permanent"]}),t.jsxs(ae,{onClick:v,variant:"ghosted-white",children:[t.jsx(Fe,{}),"Cancel"]})]})}const Pt=Be(n=>({selectedEventId:null,setSelectedEventId:e=>n(()=>({selectedEventId:e})),clearSelectedEventId:()=>n(()=>({selectedEventId:null}))})),Lt="_blink_1imw4_1",Mt="_fourtyfive_1imw4_13",Ft="_chip_1imw4_17",Bt="_over_1imw4_23",Ot="_under_1imw4_26",Ut="_due_1imw4_29",V={blink:Lt,fourtyfive:Mt,chip:Ft,over:Bt,under:Ot,due:Ut};function Gt({timeStart:n,delay:e,dayOffset:s,isPast:o,isLoaded:c,className:i,totalGap:l,id:u,duration:d,isLinkedToLoaded:p}){const{playback:y}=ut();if(c)return null;const f=ve(y);return!f||o?t.jsx(Kt,{className:i,id:u,duration:d}):f?t.jsx(w,{text:"Expected time until start",render:t.jsx("span",{}),className:i,children:t.jsx(zt,{timeStart:n,delay:e,dayOffset:s,totalGap:l,isLinkedToLoaded:p})}):null}function zt(n){const{timeStart:e,delay:s,dayOffset:o,totalGap:c,isLinkedToLoaded:i}=n,l=dt({timeStart:e,delay:s,dayOffset:o},{totalGap:c,isLinkedToLoaded:i}),u=l<fe,d=u?"DUE":`${re(Math.abs(l),l>2*me)}`;return t.jsx("div",{className:A([V.chip,u&&V.due]),children:d})}function Kt(n){const{className:e,id:s,duration:o}=n,{data:c}=ht(),i=c[s],[l,u,d]=m.useMemo(()=>{if(!i)return[null,"none",""];const{startedAt:p,endedAt:y}=i;if(!p||!y)return[null,"none",""];const h=y-p-o,v=Math.abs(h);if(v<fe)return["ontime","under","Event finished on time"];const r=h>0,b=M(v),_=`Event ran ${r?"over":"under"} time by ${b}`;return[`${r?"+":"-"}${re(v,v>2*me)}`,r?"over":"under",_]},[i,o]);return l?t.jsx(w,{text:d,render:t.jsx("span",{}),className:A([V.chip,V[u],e]),children:l==="ontime"?t.jsx(Oe,{size:"1.1rem"}):l}):null}const Vt="_blink_11qy8_1",Wt="_fourtyfive_11qy8_13",Xt="_rundownEvent_11qy8_17",Zt="_loaded_11qy8_39",Qt="_play_11qy8_42",Yt="_roll_11qy8_47",Ht="_pause_11qy8_52",Jt="_selected_11qy8_57",en="_hasCursor_11qy8_60",tn="_past_11qy8_63",nn="_skip_11qy8_63",sn="_timerNote_11qy8_63",rn="_statusElements_11qy8_64",on="_eventTitle_11qy8_65",an="_eventNote_11qy8_66",ln="_eventTimers_11qy8_67",cn="_eventStatus_11qy8_68",un="_playbackActions_11qy8_69",dn="_binder_11qy8_70",pn="_drag_11qy8_97",fn="_cue_11qy8_113",mn="_chipSection_11qy8_141",yn="_titleSection_11qy8_145",_n="_nextTag_11qy8_151",vn="_progressBg_11qy8_164",bn="_hidden_11qy8_173",gn="_flip_11qy8_177",xn="_statusIcon_11qy8_211",hn="_active_11qy8_215",En="_disabled_11qy8_218",a={blink:Vt,fourtyfive:Wt,rundownEvent:Xt,loaded:Zt,play:Qt,roll:Yt,pause:Ht,selected:Jt,hasCursor:en,past:tn,skip:nn,timerNote:sn,statusElements:rn,eventTitle:on,eventNote:an,eventTimers:ln,eventStatus:cn,playbackActions:un,binder:dn,drag:pn,cue:fn,chipSection:mn,titleSection:yn,nextTag:_n,progressBg:vn,hidden:bn,flip:gn,statusIcon:xn,active:hn,disabled:En},jn=m.memo(kn);function kn({eventId:n,skip:e,isPlaying:s,isPaused:o,loaded:c,disablePlayback:i}){const{updateEntry:l}=F(),u=f=>{f.stopPropagation(),l({id:n,skip:!e})},d=f=>{f.stopPropagation(),s?G.pause():o?G.start():G.startEvent(n)},p=f=>{f.stopPropagation(),G.loadEvent(n)},y=o?{tooltip:"Continue event",backgroundColor:"#339E4E"}:s?{tooltip:"Pause event",backgroundColor:"#c05621"}:{tooltip:"Start event",backgroundColor:void 0};return t.jsxs("div",{className:a.playbackActions,children:[t.jsx(w,{text:"Skip event",render:t.jsx(Z,{variant:"subtle-white"}),onClick:u,tabIndex:-1,disabled:c,style:{background:e?"#9A0000":void 0},"aria-label":"Skip event",children:e?t.jsx(Ue,{}):t.jsx(Ge,{})}),t.jsx(w,{text:"Load event",render:t.jsx(Z,{variant:"subtle-white"}),onClick:p,tabIndex:-1,disabled:i,"aria-label":"Load event",children:t.jsx(ze,{className:a.flip})}),t.jsx(w,{text:y.tooltip,render:t.jsx(Z,{variant:"subtle-white"}),onClick:d,tabIndex:-1,disabled:i,style:{backgroundColor:y.backgroundColor},"aria-label":s?"Pause event":"Start event",children:s?t.jsx(Ke,{}):t.jsx(de,{})})]})}const In="_progressBar_1glmb_17",Sn={progressBar:In};function Cn(){const n=pt(),e=Et(n.current,n.duration);return t.jsx("div",{className:Sn.progressBar,style:{width:`${e}%`}})}const wn=m.memo(Nn);function Nn({eventId:n,timeStart:e,timeEnd:s,duration:o,timeStrategy:c,linkStart:i,countToEnd:l,endAction:u,timerType:d,title:p,note:y,delay:f,isNext:h,skip:v=!1,loaded:r,playback:b,isRolling:_,dayOffset:I,isPast:S,totalGap:R,isLinkedToLoaded:E,hasTriggers:j}){const[k,P]=m.useState(!1);m.useEffect(()=>{P(!0)},[]);const $=b===le.Play,L=b===le.Pause;return k?t.jsxs(t.Fragment,{children:[t.jsx("div",{className:a.eventTimers,children:t.jsx(gt,{eventId:n,timeStart:e,timeEnd:s,duration:o,delay:f,timeStrategy:c,linkStart:i,countToEnd:l})}),t.jsxs("div",{className:a.titleSection,children:[t.jsx(yt,{title:p,entryId:n,placeholder:"Event title",className:a.eventTitle}),h&&t.jsx("span",{className:a.nextTag,children:"UP NEXT"})]}),t.jsx(jn,{eventId:n,skip:v,isPlaying:$,isPaused:L,loaded:r,disablePlayback:v||_}),!v&&t.jsx(Gt,{className:a.chipSection,id:n,timeStart:e,delay:f,dayOffset:I,isLinkedToLoaded:E,isPast:S,isLoaded:r,totalGap:R,duration:o}),t.jsxs("div",{className:a.statusElements,id:"entry-status","data-timertype":d,children:[t.jsx("span",{className:a.eventNote,children:y}),t.jsx("div",{className:r?a.progressBg:`${a.progressBg} ${a.hidden}`,children:r&&t.jsx(Cn,{})}),t.jsxs("div",{className:a.eventStatus,tabIndex:-1,children:[t.jsx(w,{text:`Time type: ${d}`,render:t.jsx("span",{}),children:t.jsx(Rn,{type:d,className:a.statusIcon})}),t.jsx(w,{text:`End action: ${u}`,render:t.jsx("span",{}),children:t.jsx(Tn,{action:u,className:a.statusIcon})}),t.jsx(w,{text:`${l?"Count to End":"Count duration"}`,render:t.jsx("span",{}),children:t.jsx(Ve,{className:`${a.statusIcon} ${l?a.active:a.disabled}`})}),t.jsx(w,{text:"Event has Triggers",render:t.jsx("span",{}),children:t.jsx(We,{className:`${a.statusIcon} ${j?a.active:a.disabled}`})})]})]})]}):null}function Tn(n){const{action:e,className:s}=n,o=A([e!==Y.None&&a.active,s]);return e===Y.LoadNext?t.jsx(He,{className:o}):e===Y.PlayNext?t.jsx(Je,{className:o}):t.jsx(de,{className:s})}function Rn(n){const{type:e,className:s}=n;return e===Q.CountUp?t.jsx(Xe,{className:s}):e===Q.Clock?t.jsx(Ze,{className:s}):e===Q.None?t.jsx(Qe,{className:s}):t.jsx(Ye,{className:s})}function $n(n,e){if(!e)return;const s=Math.max(0,n+e);return`New start ${ft(M(s))}`}function Dn(n,e){if(n===0)return e?"(next day)":void 0;const s=re(Math.abs(n),!1);return`${n<0?"Overlap":"Gap"} ${s}${e?" (next day)":""}`}const qn="_indicators_duajo_18",An="_delay_duajo_29",Pn="_gap_duajo_36",J={indicators:qn,delay:An,gap:Pn};function Ln({timeStart:n,delay:e,gap:s,isNextDay:o}){const c=Dn(s,o),i=$n(n,e);return t.jsxs("div",{className:J.indicators,children:[i&&t.jsx("div",{className:J.delay,children:i}),c&&t.jsx("div",{className:J.gap,children:c})]})}function Mn({eventId:n,cue:e,timeStart:s,timeEnd:o,duration:c,timeStrategy:i,linkStart:l,flag:u,countToEnd:d,eventIndex:p,endAction:y,timerType:f,title:h,note:v,delay:r,colour:b,isPast:_,isNext:I,skip:S=!1,parent:R,loaded:E,hasCursor:j,playback:k,isRolling:P,gap:$,isNextDay:L,dayOffset:B,totalGap:O,isLinkedToLoaded:g,actionHandler:x,hasTriggers:U}){const{selectedEventId:D,setSelectedEventId:be,clearSelectedEventId:ge}=Pt(),{selectedEvents:W,setSelectedEvents:xe}=oe(),N=m.useRef(null),[he,Ee]=m.useState(!1),[je]=_e(W.size>1?[{type:"item",label:"Link to previous",icon:et,onClick:()=>x("update",{field:"linkStart",value:"true"})},{type:"item",label:"Unlink from previous",icon:tt,onClick:()=>x("update",{field:"linkStart",value:null})},{type:"divider"},{type:"item",label:"Group",icon:nt,onClick:()=>x("make-group")},{type:"divider"},{type:"item",label:"Delete",icon:ee,onClick:()=>x("delete")}]:[{type:"item",label:u?"Remove flag":"Add flag",icon:st,onClick:()=>x("update",{field:"flag",value:!u})},{type:"divider"},{type:"item",label:"Add to swap",icon:rt,onClick:()=>be(n)},{type:"item",label:`Swap this event with ${D??""}`,icon:ot,onClick:()=>{x("swap",{field:"id",value:D}),ge()},disabled:D==null||D===n},{type:"item",label:"Clone",icon:it,onClick:()=>x("clone")},{type:"divider"},{type:"item",label:"Delete",icon:ee,onClick:()=>x("delete")}]),{isDragging:ie,attributes:ke,listeners:Ie,setNodeRef:Se,transform:Ce,transition:we}=te({id:n,data:{type:"event",parent:R},animateLayoutChanges:()=>!1}),Ne={zIndex:ie?2:"inherit",cursor:ie?"grabbing":"grab",transform:ne.Translate.toString(Ce),transition:we},Te=b&&ye(b);m.useEffect(()=>{if(!j||(N==null?void 0:N.current)==null)return;const T=document.activeElement,C=N.current.closest("#event-group");C&&!C.contains(T)&&N.current.focus()},[j]),m.useLayoutEffect(()=>{const T=new IntersectionObserver(([X])=>{X.isIntersecting&&Ee(!0)},{root:null,threshold:1}),C=N.current;return C&&T.observe(C),()=>{C&&T.unobserve(C)}},[N]);const Re=W.has(n),$e=A([a.rundownEvent,S?a.skip:null,_?a.past:null,E?a.loaded:null,k?a[k]:null,Re?a.selected:null,j?a.hasCursor:null]),De=T=>{if(T.stopPropagation(),W.size>1&&T.button===2)return;const C=p-1,X=_t(T);xe({id:n,index:C,selectMode:X})},qe=k?ve(k):!1;return t.jsxs("div",{className:$e,ref:Se,style:Ne,onClick:De,onContextMenu:je,"data-testid":"rundown-event",...qe?{"data-running":!0}:{},children:[t.jsx(Ln,{timeStart:s,delay:r,gap:$,isNextDay:L}),t.jsxs("div",{className:a.binder,style:{...Te},tabIndex:-1,children:[t.jsx("span",{className:a.drag,ref:N,...ke,...Ie,children:t.jsx(se,{})}),t.jsx("span",{className:a.cue,children:e})]}),he&&t.jsx(wn,{timeStart:s,timeEnd:o,duration:c,linkStart:l,countToEnd:d,timeStrategy:i,eventId:n,eventIndex:p,endAction:y,timerType:f,title:h,note:v,delay:r,isNext:I,skip:S,loaded:E,playback:k,isRolling:P,dayOffset:B,isPast:_,totalGap:O,isLinkedToLoaded:g,hasTriggers:U})]})}const Fn="_milestone_1ysuo_17",Bn="_hasCursor_1ysuo_36",On="_binder_1ysuo_40",Un="_drag_1ysuo_48",K={milestone:Fn,hasCursor:Bn,binder:On,drag:Un};function Gn({colour:n,cue:e,entryId:s,hasCursor:o,title:c}){const i=m.useRef(null),{updateEntry:l,deleteEntry:u}=F(),{selectedEvents:d,setSingleEntrySelection:p}=oe(),[y]=_e([{type:"item",label:"Delete",icon:ee,onClick:()=>u([s])}]),{attributes:f,listeners:h,setNodeRef:v,isDragging:r,transform:b,transition:_}=te({id:s,data:{type:"milestone"},animateLayoutChanges:()=>!1}),I=j=>{j.stopPropagation(),!(d.size>1&&j.button===2)&&p({id:s})},S=(j,k)=>{l({id:s,[j]:k})},R={zIndex:r?2:"inherit",cursor:r?"grabbing":"grab",transform:ne.Translate.toString(b),transition:_},E=n&&ye(n);return t.jsxs("div",{className:A([K.milestone,o?K.hasCursor:null]),ref:v,onClick:I,onContextMenu:y,style:R,"data-testid":"rundown-milestone",children:[t.jsx("div",{className:K.binder,style:{...E},children:t.jsx("span",{className:K.drag,ref:i,...f,...h,children:t.jsx(se,{})})}),t.jsx(ue,{field:"cue",initialValue:e,placeholder:"Cue",submitHandler:S}),t.jsx(ue,{field:"title",initialValue:c,placeholder:"Title",submitHandler:S})]})}function ue({field:n,initialValue:e,placeholder:s,submitHandler:o}){const c=m.useRef(null),i=m.useCallback(y=>o(n,y),[n,o]),{value:l,onChange:u,onBlur:d,onKeyDown:p}=xt(e,i,c,{submitOnEnter:!0});return t.jsx(pe,{id:n,ref:c,fluid:!0,value:l,placeholder:s,onChange:u,onBlur:d,onKeyDown:p})}function ms({isPast:n,data:e,loaded:s,hasCursor:o,isNext:c,previousEntryId:i,previousEventId:l,playback:u,isRolling:d,eventIndex:p,isNextDay:y,totalGap:f,isLinkedToLoaded:h}){const{emitError:v}=mt(),{addEntry:r,updateEntry:b,batchUpdateEvents:_,deleteEntry:I,groupEntries:S,swapEvents:R}=F(),{selectedEvents:E,unselect:j,clearSelectedEvents:k}=oe(),P=m.useCallback(()=>{j(e.id)},[j,e.id]),$=m.useCallback(()=>{k()},[k]),L=jt((B,O)=>{switch(B){case"event":{const g={type:q.Event},x={after:e.id,lastEventId:l};return r(g,x)}case"event-before":{const g={type:q.Event};return r(g,{after:i})}case"delay":return r({type:q.Delay},{after:e.id});case"delay-before":return r({type:q.Delay},{after:i});case"group":return r({type:q.Group},{after:e.id});case"group-before":return r({type:q.Group},{after:i});case"swap":{const{value:g}=O;return R({from:g,to:e.id})}case"delete":return E.size>1?($(),I(Array.from(E))):(P(),I([e.id]));case"clone":{const g=vt(e);r(g,{after:e.id});break}case"make-group":{if(E.size>1)return $(),S(Array.from(E));break}case"update":{const{field:g,value:x}=O;if(g===void 0||x===void 0)return;const U={id:e.id};if(E.size>1){const D={[g]:x};_(D,Array.from(E));return}return g in e?(U[g]=x,b(U)):v(`Unknown field: ${g}`)}default:throw new Error(`Unhandled event ${B}`)}});return at(e)?t.jsx(Mn,{eventId:e.id,eventIndex:p,cue:e.cue,timeStart:e.timeStart,timeEnd:e.timeEnd,duration:e.duration,timeStrategy:e.timeStrategy,linkStart:e.linkStart,flag:e.flag,countToEnd:e.countToEnd,endAction:e.endAction,timerType:e.timerType,title:e.title,note:e.note,delay:e.delay,colour:e.colour,isPast:n,isNext:c,skip:e.skip,parent:e.parent,loaded:s,hasCursor:o,playback:u,isRolling:d,gap:e.gap,isNextDay:y,dayOffset:e.dayOffset,totalGap:f,isLinkedToLoaded:h,actionHandler:L,hasTriggers:e.triggers.length>0}):lt(e)?t.jsx(At,{data:e,hasCursor:o}):ct(e)?t.jsx(Gn,{colour:e.colour,cue:e.cue,entryId:e.id,hasCursor:o,title:e.title}):null}export{ms as default};
//# sourceMappingURL=RundownEntry-C6xlMhcp.js.map