@expofp/floorplan
Version:
Interactive floor plan library for expos and events
2 lines (1 loc) • 11.4 kB
JavaScript
import{__decorate as s}from"tslib";import{action as a,computed as o,observable as u}from"mobx";import{LANGUAGE_TYPE as y,MOBILE_BREAKPOINT as x}from"../constants";import c from"../data";import{goBack as d}from"../services/url-sync";import p from"../tools/settings";import{t as l}from"../utils/i18n";import{sanitizeSearch as B}from"../utils/sanitizeText";import{Route as n}from"./RouteStore";class r{static closeDetails(t){return t.details?(t.details=null,!0):!1}static closeMultiPointTour(t){return t.rootStore.fp.hidePathways(),!0}static clearSearchAndFocus(t){return t.searchText?(t.setSearchText(""),t.setFocused(!0),!0):!1}static returnToSearch(t,i=!1){t.list={type:"search",text:"",focused:i}}static returnToSessions(t,i=!1){t.list={type:"sessions",text:"",focused:i}}static returnToTours(t,i=!1){t.list={type:"tours",text:"",focused:i}}static openMenu(t){t.menu=!0}static closeMenu(t){t.menu=!1}static clearListScroll(t,i){t.clearListScroll(i)}static resetActiveListIndex(t){t.activeListIndex=-1}}export default class e{constructor(t){this.searchText="",this.isFocused=!1,this.isClearMode=!1,this.skipInputFocus=!1,this.rootStore=t}get uiState(){return this.rootStore.uiState}get searchBoxConfig(){return this.uiState.searchBoxConfig}get searchBoxMode(){return this.searchBoxConfig.mode}get searchBoxTitle(){return this.searchBoxConfig.title}get searchBoxSubtitle(){return this.searchBoxConfig.subtitle}get searchBoxBadge(){return this.searchBoxConfig.badge}get searchBoxIcon(){return this.searchBoxConfig.icon}get searchBoxActions(){return this.uiState.searchBoxActions}get shouldShowSearchInput(){return this.searchBoxMode==="search"}get shouldShowCloseButton(){const{menu:t,details:i,list:h}=this.uiState,S=c.isRebooking&&h.type==="exhibitors";return!this.shouldShowSearchInput||h.type==="sessions"||h.type==="tours"||h.type==="speakers"||h.type==="exhibitors"&&!S?!0:t||i!==null||!!this.searchText||this.isClearMode||this.isFocused}get closeButtonAction(){return!this.shouldShowSearchInput||this.searchBoxMode==="details"||this.uiState.list.type==="sessions"||this.uiState.list.type==="speakers"||this.uiState.list.type==="exhibitors"&&!c.isRebooking?"close":this.searchText?"clear":"close"}get shouldShowShadow(){const{menu:t,details:i,list:h}=this.uiState,S=h.type==="search"&&!!h.text;return!(this.rootStore.fp.alwaysShowSidebar||t||i!==null||h.type!=="search"||S||this.isFocused||this.uiState.heatmap)}get placeholder(){const{list:t,heatmapYah:i}=this.uiState;return t.type==="sessions"?l("Search sessions"):t.type==="tours"?l("Search Guided Tours"):t.type==="exhibitors"?l("Search exhibitors"):t.type==="speakers"?l("Search speakers"):p.EXPO.startsWith("lenzerheidemotorclassics")?"SUCHE":p.EXPO.startsWith("jetlag")?"Search location or artist":i?l("Find values greater than"):this.uiState.hasAppliedFilters?l("Search"):c.searchText||l("Search")}get searchBoxClass(){return{"is-details":this.searchBoxMode==="details"&&!(this.uiState.details instanceof n),"is-interface":this.searchBoxMode==="interface","has-shadow":this.shouldShowShadow,"has-subtitle":!!this.searchBoxConfig.subtitle,"has-badge":!!this.searchBoxConfig.badge,"has-icon":!!this.searchBoxConfig.icon,"is-overlay-full":this.uiState.isOverlayOpen&&this.uiState.overlaySize==="full","is-featured-exhibitor":this.uiState.isFeaturedExhibitorActive,"is-route":this.uiState.details instanceof n,"is-guided-tours":this.uiState.isGuidedToursActive,"is-overlay-scrolled":this.uiState.isOverlayScrolled,"overlay-pulse":this.uiState.kiosk&&this.uiState.inIdle&&!this.uiState.setKioskModeEnabled}}get ariaLabel(){return!this.shouldShowSearchInput||this.searchBoxMode==="details"?l("Close"):this.searchText?l("Clear search"):l("Close")}selectSearch(t){window.__resett&&window.__resett(),this.uiState.details=null;const i=B(t||"",Object.keys(this.uiState.mapSettings).map(h=>`${h}=`));this.setSearchText(i),this.uiState.activeListIndex=-1}selectSearchAndFocus(t){this.selectSearch(t),this.setFocused(!0)}setSearchText(t){this.searchText=t,this.uiState.hasAppliedFilters?this.rootStore.moveToList():this.uiState.centerMap=!0,this.uiState.activeListIndex=t?0:-1,this.uiState.list.type!=="sessions"&&this.uiState.list.type!=="tours"&&this.uiState.list.type!=="speakers"&&this.uiState.list.type!=="exhibitors"?this.uiState.list={type:"search",text:t,focused:this.isFocused}:this.uiState.list.type==="exhibitors"&&(this.uiState.list={type:"exhibitors",text:t,focused:this.isFocused}),this.uiState.searchClearMode=this.isClearMode}setFocused(t){this.isFocused=t,this.isClearMode=!1,this.skipInputFocus=!1,this.uiState.searchFocused=t,this.uiState.searchClearMode=!1,this.uiState.desiredOverlaySize="full"}handleBackAction(){const{uiState:t}=this,{list:i}=t;if(t.desiredOverlaySize="full",this.backMode==="menu"){this.resetSearchButtonState(),r.openMenu(t);return}if(i.type==="route-planner"){this.rootStore.routePlannerStore.close(),this.rootStore.selectBookmarks(),d();return}if(i.type==="multi-point-tour"&&!t.details){r.returnToTours(t,!1),this.rootStore.fp.hidePathways();return}if(t.details){t.details=null,d();return}if(t.menu){i.type==="sessions"?t.list={type:"sessions",text:"",focused:!0}:i.type==="exhibitors"?t.list={type:"exhibitors",text:"",focused:!0}:t.list={type:"search",text:"",focused:!0},this.setFocused(!0),this.isClearMode=!0,r.closeMenu(t);return}if(i.type==="tours"&&t.details instanceof n){t.details=null;return}if(i.type==="sessions"||i.type==="tours"||i.type==="exhibitors"){if(r.closeDetails(t))return;this.clearActiveFilters(),r.returnToSearch(t,!1),this.selectSearchAndFocus();return}switch(i.type){case"filter":t.details=null;return;case"multi-point-tour":this.rootStore.fp.hidePathways(),r.closeDetails(t)?r.returnToTours(t,!1):d();return;case"category":this.rootStore.selectCategory(i.category);return;case"speakers":if(r.closeDetails(t))return;r.returnToSessions(t,!1);return;case"bookmarks":case"visited":if(r.closeDetails(t))return;this.selectSearchAndFocus();return;case y:r.returnToSearch(t,!1),r.openMenu(t);return}r.closeDetails(t)||r.clearSearchAndFocus(this)||r.openMenu(t)}closeSearch(){const{uiState:t}=this,{list:i}=t;if(i.type==="route-planner"){this.rootStore.routePlannerStore.close(),r.returnToSearch(t,!1),this.resetSearchBox();return}if(r.closeDetails(t),r.clearListScroll(t,i.type),r.closeMultiPointTour(t),i.type==="bookmarks"){r.returnToSearch(t,!1),this.resetSearchBox();return}if(t.selectedCategory){r.returnToSearch(t,!1),this.resetSearchBox();return}if(i.type==="sessions"){this.closeSessions();return}if(i.type==="exhibitors"){if(c.isRebooking){this.searchBoxMode==="search"&&this.searchText?(this.setSearchText(""),this.isClearMode=!0,this.clearActiveFilters()):this.resetSearchBox();return}this.closeExhibitors();return}if(t.menu){r.closeMenu(t),this.resetSearchBox();return}if(this.searchBoxMode==="search"&&!t.details&&this.searchText){this.setSearchText(""),this.isClearMode=!0,this.clearActiveFilters();return}r.returnToSearch(t,!1),this.searchText="",this.resetSearchBox(),t.details=null,this.clearActiveFilters()}clearActiveFilters(){this.rootStore.searchButtonsStore.setPoiFilterId(null),this.rootStore.uiState.selectedPoiTypeFilters=[],this.rootStore.uiState.selectedCategoryFilters=[],this.rootStore.categoryFilterStore.state.selectedItems=[],this.rootStore.categoryFilterStore.state.pendingItems=[],this.rootStore.searchButtonsStore.searchShortcutState.activeParentId=null,this.rootStore.searchButtonsStore.searchShortcutState.activeChildren.clear(),this.rootStore.searchButtonsStore.searchShortcutState.isShortcutsVisible=!1,this.rootStore.urlFilterManager&&this.rootStore.urlFilterManager.isInitialized&&this.rootStore.urlFilterManager.clearAllFilters()}resetSearchButtonState(){const{uiState:t}=this;this.rootStore.searchButtonsStore.clearAllFilters(),this.rootStore.searchButtonsStore.setSubButtonId(null),this.rootStore.searchButtonsStore.hideSubButtons(),t.selectedTrack=null,this.searchText="",this.isClearMode=!1}handleSearchAction(){this.isFocused||this.setFocused(!0)}openOverlayWithoutInputFocus(){this.skipInputFocus=!0,this.isFocused=!0,this.isClearMode=!1,this.uiState.searchFocused=!0,this.uiState.searchClearMode=!1,this.uiState.desiredOverlaySize="full"}closeSessions(){this.searchText="",r.returnToSearch(this.uiState,!1),this.uiState.details=null,r.resetActiveListIndex(this.uiState),this.uiState.selectedTrack=null,this.rootStore.searchButtonsStore.setSubButtonId(null),this.rootStore.searchButtonsStore.hideSubButtons()}closeExhibitors(){this.searchText="",r.returnToSearch(this.uiState,!1),this.uiState.details=null,r.resetActiveListIndex(this.uiState)}resetSearchBox(){this.setFocused(!1),this.isClearMode=!1,this.syncWithUIState()}syncWithUIState(){this.searchText=(this.uiState.list.type==="search"||this.uiState.list.type==="exhibitors")&&this.uiState.list.text||"",this.isFocused=this.uiState.searchFocused,this.isClearMode=this.uiState.searchClearMode}get actionButtonIcon(){return this.shouldShowSearchInput?this.shouldShowCloseButton?"icon-close":"icon-search":"icon-close"}clearAndSelectSearch(){this.selectSearch(""),this.setFocused(!1)}get backMode(){const t=this.uiState.list.type;return(t==="bookmarks"||t==="visited")&&!this.uiState.details&&!this.uiState.menu||this.shouldShowSearchInput&&!this.searchText?"menu":"back"}get isMobileDetailsMode(){return window.innerWidth<x&&this.uiState.details!==null&&this.uiState.overlaySize==="full"&&!(this.uiState.details instanceof n)}get shouldShowTitle(){return!this.shouldShowSearchInput}get searchState(){return{text:this.searchText,isFocused:this.isFocused,isClearMode:this.isClearMode,mode:this.searchBoxMode,title:this.searchBoxConfig.title,subtitle:this.searchBoxConfig.subtitle,badge:this.searchBoxConfig.badge,icon:this.searchBoxConfig.icon}}}s([u],e.prototype,"searchText",void 0),s([u],e.prototype,"isFocused",void 0),s([u],e.prototype,"isClearMode",void 0),s([u],e.prototype,"skipInputFocus",void 0),s([o],e.prototype,"searchBoxConfig",null),s([o],e.prototype,"searchBoxMode",null),s([o],e.prototype,"searchBoxTitle",null),s([o],e.prototype,"searchBoxSubtitle",null),s([o],e.prototype,"searchBoxBadge",null),s([o],e.prototype,"searchBoxIcon",null),s([o],e.prototype,"searchBoxActions",null),s([o],e.prototype,"shouldShowSearchInput",null),s([o],e.prototype,"shouldShowCloseButton",null),s([o],e.prototype,"closeButtonAction",null),s([o],e.prototype,"shouldShowShadow",null),s([o],e.prototype,"placeholder",null),s([o],e.prototype,"searchBoxClass",null),s([o],e.prototype,"ariaLabel",null),s([a],e.prototype,"selectSearch",null),s([a],e.prototype,"selectSearchAndFocus",null),s([a],e.prototype,"setSearchText",null),s([a],e.prototype,"setFocused",null),s([a],e.prototype,"handleBackAction",null),s([a],e.prototype,"closeSearch",null),s([a],e.prototype,"clearActiveFilters",null),s([a],e.prototype,"resetSearchButtonState",null),s([a],e.prototype,"handleSearchAction",null),s([a],e.prototype,"openOverlayWithoutInputFocus",null),s([a],e.prototype,"closeSessions",null),s([a],e.prototype,"closeExhibitors",null),s([a],e.prototype,"resetSearchBox",null),s([a],e.prototype,"syncWithUIState",null),s([o],e.prototype,"actionButtonIcon",null),s([a],e.prototype,"clearAndSelectSearch",null),s([o],e.prototype,"backMode",null),s([o],e.prototype,"isMobileDetailsMode",null),s([o],e.prototype,"shouldShowTitle",null),s([o],e.prototype,"searchState",null);