@expofp/floorplan
Version:
Interactive floor plan library for expos and events
2 lines (1 loc) • 4.22 kB
JavaScript
import{__esDecorate as i,__runInitializers as p}from"tslib";import{action as b,computed as S,observable as g}from"mobx";import{generateUniqueSlug as v}from"../tools/slug";let y=(()=>{let r,n=[],c=[];return class{static{const a=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;r=[g],i(null,null,r,{kind:"field",name:"bookmarked",static:!1,private:!1,access:{has:s=>"bookmarked"in s,get:s=>s.bookmarked,set:(s,l)=>{s.bookmarked=l}},metadata:a},n,c),a&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:a})}id;externalId;name;company;jobTitle;photoFile;entity;slug;bookmarked=p(this,n,!1);constructor(a,s,l,m,k,u,h={type:"speaker"}){p(this,c),this.id=a,this.externalId=s,this.name=l,this.company=m,this.jobTitle=k,this.photoFile=u,this.entity=h,this.slug=v(l||`speaker-${a}`)}get displayName(){return this.name}get fullTitle(){const a=[this.name];return this.jobTitle&&a.push(this.jobTitle),this.company&&a.push(this.company),a.join(" - ")}get hasPhoto(){return!!this.photoFile}get hasCompany(){return!!this.company}get hasJobTitle(){return!!this.jobTitle}}})();export{y as SpeakerItem};let j=(()=>{let r=[],n,c=[],f=[],a,s,l,m,k,u,h;return class{static{const t=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;n=[g],a=[S],s=[S],l=[S],m=[b],k=[S],u=[b],h=[b],i(this,null,a,{kind:"getter",name:"speakers",static:!1,private:!1,access:{has:e=>"speakers"in e,get:e=>e.speakers},metadata:t},null,r),i(this,null,s,{kind:"getter",name:"companies",static:!1,private:!1,access:{has:e=>"companies"in e,get:e=>e.companies},metadata:t},null,r),i(this,null,l,{kind:"getter",name:"jobTitles",static:!1,private:!1,access:{has:e=>"jobTitles"in e,get:e=>e.jobTitles},metadata:t},null,r),i(this,null,m,{kind:"method",name:"selectSpeaker",static:!1,private:!1,access:{has:e=>"selectSpeaker"in e,get:e=>e.selectSpeaker},metadata:t},null,r),i(this,null,k,{kind:"getter",name:"bookmarked",static:!1,private:!1,access:{has:e=>"bookmarked"in e,get:e=>e.bookmarked},metadata:t},null,r),i(this,null,u,{kind:"method",name:"replaceBookmarked",static:!1,private:!1,access:{has:e=>"replaceBookmarked"in e,get:e=>e.replaceBookmarked},metadata:t},null,r),i(this,null,h,{kind:"method",name:"clearSelectedSpeaker",static:!1,private:!1,access:{has:e=>"clearSelectedSpeaker"in e,get:e=>e.clearSelectedSpeaker},metadata:t},null,r),i(null,null,n,{kind:"field",name:"selectedSpeaker",static:!1,private:!1,access:{has:e=>"selectedSpeaker"in e,get:e=>e.selectedSpeaker,set:(e,d)=>{e.selectedSpeaker=d}},metadata:t},c,f),t&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:t})}rootStore=p(this,r);speakersMap=new Map;selectedSpeaker=p(this,c,null);constructor(t){p(this,f),this.rootStore=t}get speakers(){return Array.from(this.speakersMap.values()).sort((t,e)=>t.name.localeCompare(e.name))}getSpeakerById(t){return this.speakersMap.get(t)}getSpeakerBySlug(t){return Array.from(this.speakersMap.values()).find(e=>e.slug===t)}addSpeaker(t){if(this.speakersMap.has(t.id))return this.speakersMap.get(t.id);const e=new y(t.id,t.externalId,t.name,t.company,t.jobTitle,t.photoFile);return this.speakersMap.set(t.id,e),e}get companies(){const t=new Set;return this.speakers.forEach(e=>{e.company&&t.add(e.company)}),Array.from(t).sort()}get jobTitles(){const t=new Set;return this.speakers.forEach(e=>{e.jobTitle&&t.add(e.jobTitle)}),Array.from(t).sort()}getSpeakersByCompany(t){return this.speakers.filter(e=>e.company===t)}getSpeakersByJobTitle(t){return this.speakers.filter(e=>e.jobTitle===t)}getEventsBySpeaker(t){return this.rootStore.eventStore.eventItems.filter(e=>e.speakers.some(d=>d.id===t))}findBySlug(t){return this.getSpeakerBySlug(t)}selectSpeaker(t,e=!0){this.selectedSpeaker=t,this.rootStore.uiState.details=t,this.rootStore.uiState.desiredOverlaySize="medium"}get bookmarked(){return this.speakers.filter(t=>t.bookmarked)}replaceBookmarked(t){const e=(t||[]).map(o=>this.speakersMap.get(o)).filter(o=>o),d=new Set(e),_=this.bookmarked.filter(o=>!d.has(o));for(const o of _)o.bookmarked=!1;for(const o of e)o.bookmarked=!0}clearSelectedSpeaker(){this.selectedSpeaker=null,this.rootStore.uiState.details=null}}})();export default j;