@getontime/cli
Version:
Time keeping for live events
3 lines (2 loc) • 10.1 kB
JavaScript
import{h as p,l as R,j as i,o as U}from"./vendor-q6fv0YT2.js";import{s as S,P as W,I as E,k as N,M as C,f as O,J as F,e as _,K as G,q as V,d as M,w as q,b as J,L as K,o as Q,g as X,O as Y,v as Z}from"./index-B81u4hxi.js";import{E as tt}from"./EmptyPage-Bc358YpE.js";import{V as et}from"./ViewLogo-G7EosFIr.js";import{O as B,V as nt}from"./ViewParamsEditor-C2-TRP6e.js";import{u as st}from"./useWindowTitle-Bpmo_HzW.js";import{S as it}from"./SuperscriptTime-CA6S2R55.js";import{i as w,a as b,d as ot,u as at}from"./useRundown-Bn6ZPsz0.js";import{g as rt,a as lt}from"./viewLoader.utils-b42scp-I.js";import{i as I}from"./viewUtils-B8Dr4GHH.js";import{g as ct,a as D,b as ut,c as mt}from"./rundownUtils-CtVGQDQn.js";import{g as dt}from"./getProgress-cLuBFPjh.js";import{u as ft}from"./useProjectData-DdgKoYzk.js";import"./Empty-CJbZxh45.js";import"./Select-BGGVCKqU.js";import"./SwatchPicker-Cm5Eicvv.js";/* empty css */(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]="0655c698-dd40-435e-9824-6720185c4711",e._sentryDebugIdIdentifier="sentry-dbid-0655c698-dd40-435e-9824-6720185c4711")}catch{}})();function ht(e,t){if(!t)return 0;const n=e.timeStart+e.dayOffset*S,s=t.timeStart+t.duration+t.dayOffset*S;return n===s?0:(n>s,n-s)}function z(e,t,n){if(!t.current)return;if(!(e!=null&&e.current)){t.current.scrollTo({left:0,behavior:"smooth"});return}const s=e.current.getBoundingClientRect(),a=t.current.getBoundingClientRect(),o=s.left-a.left+t.current.scrollLeft-n;t.current.scrollTo({left:o,behavior:"smooth"})}function pt({followRef:e,scrollRef:t,doFollow:n,selectedEventId:s,leftOffset:a=0,setScrollFlag:o}){return p.useEffect(()=>{!n||!t.current||(o==null||o(!0),window.requestAnimationFrame(()=>{z(s!==null?e:null,t,a),o==null||o(!1)}))},[e,t,n,a,o,s]),p.useCallback((m=e,u=t,c=a)=>{u.current&&z(s!==null?m:null,u,c)},[e,t,a,s])}const xt=e=>[{title:B.ClockOptions,collapsible:!0,options:[rt(e)]},{title:B.ElementVisibility,collapsible:!0,options:[{id:"hidePast",title:"Hide Past Events",description:"Whether to hide events that have passed",type:"boolean",defaultValue:!1},{id:"fixedSize",title:"Fixed timeline size",description:"Timeline will have a fixed size to prevent scrolling",type:"boolean",defaultValue:!1}]}];function yt(e,t){const n=s=>(t==null?void 0:t.get(s))??e.get(s);return{hidePast:I(n("hidePast")),fixedSize:I(n("fixedSize"))}}function $(){const[e]=R(),t=p.use(W);return p.useMemo(()=>{const s=t?new URLSearchParams(t.search):void 0;return yt(e,s)},[t,e])}function gt(e,t,n,s,a){const r=(t<e?t+S:t)-e,m=s*a/r;return{left:(n-e)*a/r,width:m}}function _t(e){return Math.floor(e/E)}function Tt(e){return Math.ceil(e/E)}function jt(e,t){const n=[];for(let s=e;s<t;s++)n.push(s);return n}function wt(e,t){return t==="done"||t==="live"?t:e<=0?"pending":N(e,e>C*10)}function St(e,t){const{hidePast:n}=$();return p.useMemo(()=>{if(e.length===0)return{scopedRundown:[],firstStart:0,totalDuration:0};const a=[];let o=t?1/0:-1,r=null,m=0,u=null;for(let c=0;c<e.length;c++){const l=e[c];if(w(l)&&b(l)){if(l.id===t&&(o=c),n&&c<o)continue;a.push(l),r===null&&(r=l.timeStart);const d=ht(l,u);d===0?m+=l.duration:d>0?m+=d+l.duration:d<0&&(m+=Math.max(l.duration+d,0)),ot(l,u)&&(u=l)}}return{scopedRundown:a,firstStart:r??0,totalDuration:m}},[n,e,t])}function vt(e,t){var o,r;if(e.length===0)return{now:null,next:null,followedBy:null};let n=t?ct(e,t):null;w(n)||(n=null);const s=n?(o=D(e,n.id))==null?void 0:o.nextEvent:ut(e).firstEvent,a=s?(r=D(e,s.id))==null?void 0:r.nextEvent:null;return{now:n,next:s,followedBy:a}}function bt(e,t,n,s,a,o=100){let r=1/0;const m=e.map(({start:l,duration:d})=>{const y=gt(t,n,l,d,s);return r=Math.min(r,y.width),y});if(!a)return{positions:m,scale:1,totalWidth:s};const u=r<o?o/r:1;return u===1?{positions:m,scale:1,totalWidth:s}:{positions:m.map(l=>({left:l.left*u,width:l.width*u})),scale:u,totalWidth:s*u}}const Et="_markers_gfywu_17",Nt={markers:Et};function Pt(e){const{startHour:t,endHour:n}=e,s=jt(t,n);return i.jsx("div",{className:Nt.markers,children:s.map(a=>i.jsx("span",{},a))})}const Lt="_timelineContainer_1qyn0_21",kt="_scroll_1qyn0_26",Ct="_timeline_1qyn0_21",Ot="_column_1qyn0_37",qt="_maybeInline_1qyn0_45",Mt="_timelineBlock_1qyn0_52",Bt="_smallArea_1qyn0_64",It="_content_1qyn0_64",Dt="_timeOverview_1qyn0_68",zt="_hide_1qyn0_72",Ht="_status_1qyn0_98",At="_due_1qyn0_112",Vt="_delay_1qyn0_116",$t="_cross_1qyn0_126",Rt="_separeLeft_1qyn0_132",h={timelineContainer:Lt,scroll:kt,timeline:Ct,column:Ot,maybeInline:qt,timelineBlock:Mt,smallArea:Bt,content:It,timeOverview:Dt,hide:zt,status:Ht,due:At,delay:Vt,cross:$t,separeLeft:Rt},H={format12:"h:mm a",format24:"HH:mm"};function Ut({colour:e,delay:t,duration:n,hasLink:s,left:a,status:o,start:r,dayOffset:m,totalGap:u,isLinkedToLoaded:c,title:l,width:d,cue:y,ref:v}){const P=O(r,H),L=N(n),T=r+t,j=t>0,f=F(e,.7),x=d>25,g=d<40;return i.jsxs("div",{ref:v,className:_([h.column,g&&h.smallArea]),style:{"--color":e,"--lighter":f??"",left:`${a}px`,width:`${d}px`},"data-testid":y,children:[o==="live"?i.jsx(Wt,{}):i.jsx("div",{"data-status":o,className:h.timelineBlock}),i.jsxs("div",{className:_([h.content,d<20&&h.hide,!s&&h.separeLeft]),"data-status":o,style:{"--color":e},children:[i.jsxs("div",{className:h.maybeInline,children:[i.jsx("div",{className:_([j&&h.cross]),children:P}),j&&i.jsx("div",{className:h.delay,children:O(T,H)}),g&&i.jsx(A,{delay:t,start:r,dayOffset:m,totalGap:u,isLinkedToLoaded:c,status:o})]}),x&&i.jsxs(i.Fragment,{children:[!g&&i.jsx(A,{delay:t,start:r,dayOffset:m,totalGap:u,isLinkedToLoaded:c,status:o}),i.jsx("div",{children:l})]})]}),i.jsx("div",{className:h.timeOverview,"data-status":o,children:o!=="done"&&i.jsx("div",{className:h.duration,children:L})})]})}function A({delay:e,start:t,dayOffset:n,totalGap:s,isLinkedToLoaded:a,status:o}){const r=V(),{getLocalizedString:m}=M(),{timeToStart:u}=q({timeStart:t,delay:e,dayOffset:n,totalGap:s,isLinkedToLoaded:a,countToEnd:!1,duration:0},r);let c=wt(u,o);c==="live"?c=m("timeline.live"):c==="pending"&&(c=m("timeline.due"));const l=o==="future"&&u<=0;return i.jsx("div",{className:_([h.status,l&&h.due]),children:c})}function Wt(){const{current:e,duration:t}=G(),n=dt(e,t);return i.jsx("div",{"data-status":"live",className:h.timelineBlock,style:{"--progress":`${n}%`}})}const Ft=p.memo(Gt);function Gt({firstStart:e,rundown:t,selectedEventId:n,totalDuration:s}){const{width:a}=U(),{hidePast:o,fixedSize:r}=$(),m=p.useRef(null),u=p.useRef(null),{lastEvent:c}=mt(t),l=_t(e),d=Tt(e+s+((c==null?void 0:c.delay)??0)),y=l*E,v=d*E;pt({followRef:m,scrollRef:u,doFollow:!r,selectedEventId:n,leftOffset:o?0:a/6});const{positions:P,totalWidth:L}=p.useMemo(()=>{const f=t.filter(x=>w(x)&&b(x)).map(x=>({start:x.timeStart+(x.dayOffset??0)*S+(x.delay??0),duration:x.duration}));return bt(f,y,v,a,!r)},[t,y,v,a,r]);if(s===0)return null;let T=n?"done":"future";const j={};return t.forEach(f=>{w(f)&&b(f)&&(T==="live"&&(T="future"),f.id===n&&(T="live"),j[f.id]=T)}),i.jsx("div",{ref:u,className:_([h.timelineContainer,!r&&h.scroll]),children:i.jsxs("div",{className:h.timeline,style:{width:L},children:[i.jsx(Pt,{startHour:l,endHour:d}),t.map((f,x)=>{if(!w(f)||!b(f))return null;const g=P[x];return g?i.jsx(Ut,{ref:f.id===n?m:void 0,colour:f.colour,delay:f.delay??0,duration:f.duration,hasLink:!!f.linkStart,left:g.left,status:j[f.id],start:f.timeStart+(f.dayOffset??0)*S,totalGap:f.totalGap,isLinkedToLoaded:f.isLinkedToLoaded,dayOffset:f.dayOffset,title:f.title,cue:f.cue,width:g.width},f.id):null})]})})}const k=p.memo(Jt);function Jt({category:e,content:t,title:n,status:s}){const a=_(["section",e==="now"&&"section--now"]),o=_(["section-content",t?`section-content--${e}`:"section-content--subdue"]);return i.jsxs("div",{className:a,"data-testid":e,children:[i.jsxs("div",{className:"section-title",children:[i.jsx("span",{className:"section-title__label",children:n}),s&&i.jsx("span",{className:"section-title__status",children:s})]}),i.jsx("div",{className:o,children:t??"-"})]})}function Kt({now:e,next:t,followedBy:n}){const{getLocalizedString:s}=M(),a=V(),o=(e==null?void 0:e.title)??"-",r=s("timeline.due").toUpperCase(),m=t!==null?t.title:"-",u=n!==null?n.title:"-";let c,l;if(t!==null){const{timeToStart:d}=q(t,a);d<=0?c=r:c=N(d,d>C*10)}if(n!==null){const{timeToStart:d}=q(n,a);d<=0?l=r:l=N(d,d>C*10)}return i.jsxs("div",{className:"title-grid",children:[i.jsx(k,{title:s("timeline.live"),content:o,category:"now"}),i.jsx(k,{title:s("common.next"),status:c,content:m,category:"next"}),i.jsx(k,{title:s("timeline.followedby"),status:l,content:u,category:"followedBy"})]})}function Qt(){const{data:e,status:t}=at(),{data:n,status:s}=ft(),{data:a,status:o}=J();return{data:{events:e,projectData:n,settings:a},status:lt([t,s,o])}}function xe(){const{data:e,status:t}=Qt();return st("Timeline"),t==="pending"?i.jsx(K,{}):t==="error"?i.jsx(tt,{text:"There was an error fetching data, please refresh the page."}):i.jsx(Xt,{...e})}function Xt({events:e,projectData:t,settings:n}){const{selectedEventId:s}=Q(),{scopedRundown:a,firstStart:o,totalDuration:r}=St(e,s),{now:m,next:u,followedBy:c}=p.useMemo(()=>vt(a,s),[a,s]),l=X(n==null?void 0:n.timeFormat),d=p.useMemo(()=>xt(l),[l]);return i.jsxs("div",{className:"timeline","data-testid":"timeline-view",children:[i.jsx(nt,{target:Y.Timeline,viewOptions:d}),i.jsxs("div",{className:"project-header",children:[(t==null?void 0:t.logo)&&i.jsx(et,{name:t.logo,className:"logo"}),i.jsx("div",{className:"title",children:t.title}),i.jsx(Yt,{})]}),i.jsx(Kt,{now:m,next:u,followedBy:c}),i.jsx(Ft,{firstStart:o,rundown:a,selectedEventId:s,totalDuration:r})]})}function Yt(){const{getLocalizedString:e}=M(),{clock:t}=Z(),n=O(t);return i.jsxs("div",{className:"clock-container",children:[i.jsx("div",{className:"label",children:e("common.time_now")}),i.jsx(it,{time:n,className:"time"})]})}export{xe as default};
//# sourceMappingURL=TimelinePage-Cgtl1qNp.js.map