@expofp/floorplan
Version:
Interactive floor plan library for expos and events
2 lines (1 loc) • 6.17 kB
JavaScript
import{__decorate as s}from"tslib";import{action as l}from"mobx";import{MOBILE_BREAKPOINT as a}from"../../constants";import{PREFIXES as h,SearchButtonType as r}from"./constants";import{extractPoiTypeId as n,getButtonConfig as c}from"./utils";export class SearchButtonsActions{constructor(t,e,i){this.rootStore=t,this.state=e,this.filters=i}handleSearchButtonClick(t){const i={[r.BOOKMARKS]:()=>this.handleBookmarksClick(),[r.VISITED]:()=>this.handleVisitedClick(),[r.SESSIONS]:()=>this.handleSessionsClick(),[r.TOURS]:()=>this.handleToursClick(),[r.CATEGORIES]:()=>this.handleCategoriesClick(),[r.EXHIBITORS]:()=>this.handleExhibitorsClick()}[t];if(i){i();return}t.startsWith(h.POI_TYPE)&&this.handlePoiTypeClick(t)}handleExtendedSearchButtonClick(t){const e=c(t);if(!e)return;if(e.type==="link"){this.handleLinkClick(e);return}const i=e.children?.filter(o=>o.visible)||[];if(i.length===1&&i[0].type==="poi_types"&&i[0].name===e.name){this.handleSearchButtonClick(t);return}e.children&&i.length>0?this.handleParentButton(t,e):this.handleSearchButtonClick(t)}handleMainButtonClick(t){this.handleSearchButtonClick(t)}handleSessionsClick(){const{uiState:t}=this.rootStore;t.list.type==="sessions"?this.switchToSearch():(this.resetAllFilters(),t.details=null,t.menu=!1,t.list={type:"sessions",text:"",focused:!1},this.state.setSubButton(null),t.selectedTrack=null,this.state.subButtonsEnabled&&this.showSubButtons("sessions"),this.isMobile&&(t.desiredOverlaySize="full"))}togglePoiType(t){this.handleSearchButtonClick(`${h.POI_TYPE}${t}`)}clearAllFilters(){this.switchToSearch()}showSubButtons(t){this.state.subButtonsEnabled&&(this.state.setSubButtonParent(t),this.state.setSubButton(null),this.rootStore.uiState.subButtonsVisible=!0)}hideSubButtons(){this.state.setSubButtonParent(null),this.state.setSubButton(null),this.rootStore.uiState.subButtonsVisible=!1}handleSubButtonClick(t){this.state.activeSubButtonId!==t&&this.state.setSubButton(t)}toggleListView(t,e){this.rootStore.uiState.list.type===t?this.switchToSearch():(this.resetAllFilters(),e())}handleBookmarksClick(){this.toggleListView("bookmarks",()=>{this.rootStore.clickBookmarks()})}handleVisitedClick(){this.toggleListView("visited",()=>{this.rootStore.clickVisited()})}handleToursClick(){const{uiState:t}=this.rootStore;t.list.type==="tours"?this.switchToSearch():(this.resetAllFilters(),t.details=null,t.menu=!1,t.list={type:"tours",text:"",focused:!1},this.isMobile&&(t.desiredOverlaySize="full"))}handleCategoriesClick(){const{uiState:t}=this.rootStore;t.list.type!=="search"?this.switchToSearch():this.state.activePoiFilterId&&this.filters.clearPoiTypeFilters(),this.state.searchShortcutState.activeParentId&&(this.state.setActiveParentId(null),this.state.clearChildren(),this.state.showShortcuts(!1),this.filters.clearAllChildFilters()),this.rootStore.categoryFilterStore.openFilter()}handleExhibitorsClick(){const{uiState:t}=this.rootStore;t.list.type==="exhibitors"?this.switchToSearch():(this.resetAllFilters(),t.details=null,t.menu=!1,t.list={type:"exhibitors",text:"",focused:!1},this.isMobile&&(t.desiredOverlaySize="full"))}handlePoiTypeClick(t){const{uiState:e}=this.rootStore,i=e.list.type==="search"&&e.list.text||"";e.list.type!=="search"?this.switchToSearch(!0):e.selectedCategoryFilters.length>0&&this.filters.clearCategoryFilters(),this.state.searchShortcutState.activeParentId&&(this.state.setActiveParentId(null),this.state.clearChildren(),this.state.showShortcuts(!1),this.filters.clearAllChildFilters()),this.state.activePoiFilterId===t?this.filters.clearPoiTypeFilters():this.setPoiFilterFromString(t),i&&e.list.type==="search"&&(e.list={type:"search",text:i,focused:!1}),this.rootStore.searchStore.selectSearchAndFocus(i)}handleLinkClick(t){const e=t.children?.find(i=>i.type==="link");e&&"linkUrl"in e&&window.open(e.linkUrl,"_blank")}handleParentButton(t,e){const{uiState:i}=this.rootStore;if(this.state.searchShortcutState.activeParentId===t){this.state.setActiveParentId(null),this.state.clearChildren(),this.state.showShortcuts(!1),this.filters.clearAllChildFilters(),this.rootStore.urlFilterManager.clearAllFilters(),i.centerMap=!0,i.overlaySize==="full"&&i.searchFocused&&this.rootStore.searchStore.setFocused(!1);return}i.list.type!=="search"&&this.switchToSearch(),this.state.activePoiFilterId&&this.state.setPoiFilter(null),this.state.setActiveParentId(t),this.state.showShortcuts(!0),this.state.clearChildren(),this.filters.applyAllChildrenFilters(e),this.rootStore.searchStore.selectSearchAndFocus()}preserveSearchText(t){const{uiState:e}=this.rootStore,i=e.list.type==="search"&&e.list.text||"";t(),e.list.type==="search"&&i&&(e.list={type:"search",text:i,focused:!1})}switchToSearch(t=!1){const e=()=>{this.resetAllFilters(),this.rootStore.uiState.details=null,this.rootStore.uiState.menu=!1,this.rootStore.uiState.list={type:"search",text:"",focused:!1}};t?this.preserveSearchText(e):e()}resetAllFilters(){this.state.reset(),this.rootStore.uiState.selectedPoiTypeFilters=[],this.rootStore.uiState.selectedCategoryFilters=[],this.rootStore.uiState.categoryFilterOpen=!1,this.rootStore.categoryFilterStore.state.selectedItems=[],this.rootStore.categoryFilterStore.state.pendingItems=[],this.rootStore.urlFilterManager.clearAllFilters(),this.rootStore.fp.hidePathways()}setPoiFilterFromString(t){this.state.setPoiFilter(t);const e=n(t);if(e!==null){const i=this.rootStore.poiTypeStore.poiTypes.find(o=>o.id===e);i&&(this.rootStore.uiState.selectedPoiTypeFilters=[i],this.rootStore.urlFilterManager.setPoiType(i.name))}}get isMobile(){return typeof window<"u"&&window.innerWidth<=a}}s([l],SearchButtonsActions.prototype,"handleSearchButtonClick",null),s([l],SearchButtonsActions.prototype,"handleExtendedSearchButtonClick",null),s([l],SearchButtonsActions.prototype,"handleMainButtonClick",null),s([l],SearchButtonsActions.prototype,"handleSessionsClick",null),s([l],SearchButtonsActions.prototype,"togglePoiType",null),s([l],SearchButtonsActions.prototype,"clearAllFilters",null),s([l],SearchButtonsActions.prototype,"showSubButtons",null),s([l],SearchButtonsActions.prototype,"hideSubButtons",null),s([l],SearchButtonsActions.prototype,"handleSubButtonClick",null);