@expofp/floorplan
Version:
Interactive floor plan library for expos and events
2 lines (1 loc) • 991 B
JavaScript
function a(t){if(!t)return null;const n=Date.parse(t);return isNaN(n)?null:n}export function calculateTimeUntilStart(t,n){const e=a(t);if(e===null)return{minutes:0,seconds:0,totalSeconds:0,isLessThan10Minutes:!1};const r=e-n;if(r<=0)return{minutes:0,seconds:0,totalSeconds:0,isLessThan10Minutes:!1};const s=Math.floor(r/1e3),o=Math.floor(s/60),u=s%60;return{minutes:o,seconds:u,totalSeconds:s,isLessThan10Minutes:s<600}}export function formatTimeUntilStart(t){if(t.totalSeconds<=0)return"Started";if(t.isLessThan10Minutes){const n=t.minutes.toString().padStart(2,"0"),e=t.seconds.toString().padStart(2,"0");return`Starts in ${n}:${e}`}else return`Starts in ${t.minutes} min`}export function getEventStatus(t,n,e){const r=a(t.startDate),s=a(t.endDate)??Number.POSITIVE_INFINITY;if(r===null||s===null)return"none";if(n>s)return"past";if(r-n<=1e3&&n<=s||n>=r&&n<=s)return"live";if(e.totalSeconds>0&&e.totalSeconds<=3600)return"starting-soon";const o=n+360*60*1e3;return r<=o?"upcoming":"none"}