@expofp/floorplan
Version:
Interactive floor plan library for expos and events
2 lines (1 loc) • 2.56 kB
JavaScript
import{jsx as a,jsxs as F}from"react/jsx-runtime";import"./Sessions.scss";import{OverlayHeaderContext as L}from"@expofp/ui";import N from"fuse.js";import{observer as I}from"mobx-react-lite";import{use as C,useMemo as b}from"react";import{createPortal as H}from"react-dom";import i,{searchStore as _,uiState as m}from"../store";import{SESSIONS_LIST_TYPE as B}from"../store/types";import{t as w}from"../utils/i18n";import P from"./SessionsList";import{ShortcutsToolbar as x}from"./Shortcuts";const R=I(({showFilters:f=!0})=>{const k=C(L),y=i.eventStore.eventItems,{filters:{date:{value:n},timeOfDay:{value:v},sortOrder:{value:S},showBookmarksOnly:{value:T},showLiveOnly:{value:g},selectedTracks:{value:h},selectedVenues:{value:D}}}=i.sessionsFilterStore.state,{searchText:l}=_,{selectedTrack:c}=m,p=T?i.eventStore.bookmarked:null,O=b(()=>{const o=new Date;o.setHours(0,0,0,0);const u=new Date(o);u.setDate(o.getDate()+1);let t=y;if(n!=="all"&&(t=t.filter(e=>{const s=new Date(e.startDate);if(s.setHours(0,0,0,0),n==="today")return s.getTime()===o.getTime();if(n==="tomorrow")return s.getTime()===u.getTime();if(n==="past"){const r=new Date;return new Date(e.endDate)<r}return!0})),v!=="all"&&n==="today"&&(t=t.filter(e=>{const r=new Date(e.startDate).getHours();switch(v){case"morning":return r>=6&&r<12;case"midday":return r>=12&&r<18;case"afternoon":return r>=18&&r<=23;default:return!0}})),c&&(t=t.filter(e=>e.tracks.some(s=>s.id===c.id))),p){const e=new Set(p);t=t.filter(s=>e.has(s))}if(g){const e=new Date;t=t.filter(s=>{const r=new Date(s.startDate),d=new Date(s.endDate);return r<=e&&e<=d})}if(h.length>0&&(t=t.filter(e=>e.tracks.some(s=>h.includes(s.id)))),D.length>0&&(t=t.filter(e=>e.boothId&&D.includes(e.boothId))),l){const e={keys:["name"],threshold:.3,ignoreLocation:!0,includeScore:!0};t=new N(t,e).search(l).map(d=>d.item)}return t},[y,l,n,v,c,p,g,h,D]),E=b(()=>[...O].sort((o,u)=>{const t=new Date(o.startDate).getTime(),e=new Date(u.startDate).getTime();return S==="asc"?e-t:t-e}),[O,S]),j=o=>{m.setListScrollItemId(B,o.id),i.selectEventItem(o,!0)};return F("div",{className:"efp-sessions-content",children:[f&&(k?H(a(x,{interfaceId:"sessions"}),k):a(x,{interfaceId:"sessions"})),E.length>0?a(P,{events:E,onEventClick:j}):a("div",{className:"efp-sessions-empty",children:i.sessionsFilterStore.activeFiltersCount>0||l||c?T?w("No bookmarked events found. Try adjusting your filters."):w("No events found. Try adjusting your filters."):w("No events found")})]})}),V=I(f=>m.list.type!=="sessions"||m.details?null:a(R,{...f}));export default V;