UNPKG

@expofp/floorplan

Version:

Interactive floor plan library for expos and events

2 lines (1 loc) 3.35 kB
import{__decorate as o}from"tslib";import{action as h,computed as n,observable as a}from"mobx";import{buildRebookingUrl as l,getRebookingToken as u}from"../tools/rebookingUrl";import b from"../tools/settings";import g from"../utils/is-debug";export var RebookingState;(function(r){r[r.Unasked=0]="Unasked",r[r.Accepted=1]="Accepted",r[r.Rejected=2]="Rejected",r[r.Undecided=3]="Undecided"})(RebookingState||(RebookingState={}));export default class i{constructor(e){this.exhibitors=[],this.highlightedByExternalIds=[],this.rebookingStateChangeRequested=!1,this.rebookingStateSaved=!1,this.rootStore=e}get exhibitorById(){return new Map(this.exhibitors.map(e=>[e.id,e]))}get exhibitorByExternalId(){return new Map(this.exhibitors.map(e=>[e.externalId,e]))}get exhibitorByName(){return new Map(this.exhibitors.map(e=>[e.name.toLowerCase(),e]))}get exhibitorBySlug(){return new Map(this.exhibitors.map(e=>[e.slug,e]))}get bookmarked(){return this.exhibitors.filter(e=>e.bookmarked)}get visited(){return this.exhibitors.filter(e=>e.visited)}get advertised(){return this.exhibitors.filter(e=>e.advertise&&e.logo?.url)}replaceBookmarked(e){if(!Array.isArray(e))return;const s=(e||[]).map(t=>this.exhibitorById.get(t)).filter(t=>t),d=new Set(s),p=this.bookmarked.filter(t=>!d.has(t));for(const t of p)t.bookmarked=!1;for(const t of s)t.bookmarked=!0}replaceVisited(e){if(!Array.isArray(e))return;const s=(e||[]).map(t=>this.exhibitorById.get(t)).filter(t=>t),d=new Set(s),p=this.visited.filter(t=>!d.has(t));for(const t of p)t.visited=!1;for(const t of s)t.visited=!0}setRebookingState(e,s,d){clearTimeout(this.timeout),this.rebookingStateChangeRequested=!1,e.rebookingState=s,e.rebookingNote=d;const p=l("api/v1/set-rebooking-state",{rt:u(),expoKey:this.rootStore.fp.eventId});fetch(p,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({expoKey:b.EXPO,exhibitorId:e.id,rebookingState:s,rebookingNote:d})}).then(t=>{t.ok&&(this.rebookingStateSaved=!0),!t.ok&&!g&&(e.rebookingState=RebookingState.Unasked,this.rebookingStateSaved=!1)}).catch(()=>{e.rebookingState=RebookingState.Unasked,this.rebookingStateSaved=!1}).finally(()=>{this.rebookingStateChangeRequested=!0,this.timeout=setTimeout(()=>{this.rebookingStateChangeRequested=!1},5e3)})}findExhibitor(e){return this.exhibitorByExternalId.get(e)||this.exhibitorByName.get(e.toLowerCase())||this.exhibitorBySlug.get(e)}}o([a],i.prototype,"highlightedByExternalIds",void 0),o([a],i.prototype,"rebookingStateChangeRequested",void 0),o([a],i.prototype,"rebookingStateSaved",void 0),o([n({keepAlive:!0})],i.prototype,"exhibitorById",null),o([n({keepAlive:!0})],i.prototype,"exhibitorByExternalId",null),o([n({keepAlive:!0})],i.prototype,"exhibitorByName",null),o([n({keepAlive:!0})],i.prototype,"exhibitorBySlug",null),o([n],i.prototype,"bookmarked",null),o([n],i.prototype,"visited",null),o([n({keepAlive:!0})],i.prototype,"advertised",null),o([h],i.prototype,"replaceBookmarked",null),o([h],i.prototype,"replaceVisited",null),o([h],i.prototype,"setRebookingState",null);export class Exhibitor{constructor(){this.entity={type:"exhibitor"}}}o([a],Exhibitor.prototype,"featured",void 0),o([a],Exhibitor.prototype,"bookmarked",void 0),o([a],Exhibitor.prototype,"visited",void 0),o([a],Exhibitor.prototype,"rebookingState",void 0),o([a],Exhibitor.prototype,"rebookingNote",void 0);