UNPKG

@expofp/floorplan

Version:

Interactive floor plan library for expos and events

2 lines (1 loc) 1.66 kB
import{jsx as r,jsxs as h}from"react/jsx-runtime";import"./Speakers.scss";import k from"fuse.js";import{useObserver as S}from"mobx-react-lite";import{observer as p}from"mobx-react-lite";import{useMemo as b,useRef as T}from"react";import t,{uiState as m}from"../store";import{t as d}from"../utils/i18n";import x from"./EntityItemContainer";import{ShortcutsToolbar as y}from"./Shortcuts";const v=p(({showFilters:i=!0})=>{const f=T(),l=t.speakerStore.speakers,{filters:{selectedCompanies:{value:a},selectedJobTitles:{value:n}}}=t.speakerFilterStore.state,c=b(()=>{let e=l;a.length>0&&(e=e.filter(s=>a.includes(s.company))),n.length>0&&(e=e.filter(s=>n.includes(s.jobTitle)));const o=t.searchStore.searchText;if(o){const s={keys:["name","company","jobTitle"],threshold:.3,ignoreLocation:!0,includeScore:!0};e=new k(e,s).search(o).map(u=>u.item)}return e},[l,t.searchStore.searchText,a,n,t.speakerFilterStore.state]);return S(()=>h("div",{className:"efp-speakers-content",children:[i&&r(y,{interfaceId:"speakers"}),c.length>0?r("div",{className:"efp-speakers-list",ref:f,children:c.map(e=>{const o=t.speakerStore.getEventsBySpeaker(e.id),s=[];return e.jobTitle&&s.push({type:"text",text:e.jobTitle}),r(x,{id:e.id.toString(),kind:"speaker",title:e.name,subtitle:e.company,image:e.photoFile,itemsCount:o.length,additionalInfo:s,bookmarked:e.bookmarked,onClick:()=>t.selectSpeaker(e,!0)},e.id)})}):r("div",{className:"list-empty",children:t.speakerFilterStore.activeFiltersCount>0||t.searchStore.searchText?d("No speakers found. Try adjusting your filters."):d("No speakers found")})]}))}),g=p(i=>m.list.type!=="speakers"||m.details?null:r(v,{...i}));export default g;