@expofp/floorplan
Version:
Interactive floor plan library for expos and events
2 lines (1 loc) • 1.15 kB
JavaScript
import{autorun as a}from"mobx";import b from"../../data";import d from"../../tools/logger";import{generateUniqueSlug as k}from"../../tools/slug";import{getStorage as s,saveStorage as m}from"../../utils/entity-storage";import n from"../../utils/preview-exhibitor";import{Exhibitor as c,RebookingState as u}from"../ExhibitorStore";export default function f(r){const{exhibitorStore:i}=r,o=[...b.exhibitors||[]];if(n){const t=o.findIndex(e=>e.id===n.id);t!==-1?o.splice(t,1,n):o.push(n)}o.sort((t,e)=>Number(e.featured)-Number(t.featured));for(const t of o){const e=new c;Object.assign(e,t),e.slug=k(e.name),e.rebookingState=e.rebookingState||u.Unasked,e.categories=[],e.booths=[],e.store=i,i.exhibitors.push(e),e.schedule=null}d.log("initExhibitors",i.exhibitors.length),h(i),p(i)}function h(r){const i=s("bookmarked");r.replaceBookmarked(i.exhibitors),a(()=>{const o=s("bookmarked");m("bookmarked",{exhibitors:r.bookmarked?.map(t=>t.id),events:o.events,speakers:o.speakers,booths:o.booths})})}function p(r){const i=s("visited");r.replaceVisited(i.exhibitors),a(()=>{const o=s("visited");m("visited",{exhibitors:r.visited.map(t=>t.id),events:o.events})})}