@expofp/floorplan
Version:
Interactive floor plan library for expos and events
91 lines • 3.5 kB
TypeScript
import { Box } from '@expofp/geometry';
import { ImageDef } from '@expofp/renderer';
import { RawPoiType, RawRegularBooth } from '@expofp/schema';
import { PathInfo, ShapeBgDef } from '../types/drawing.types';
import { EventItem } from './EventStore';
import { Exhibitor } from './ExhibitorStore';
import { Layer } from './LayerStore';
import RootStore from './RootStore';
export default class BoothStore {
readonly rootStore: RootStore;
booths: Booth[];
highlightedByExternalIds: never[];
get boothById(): Map<number, Booth>;
get boothByExternalId(): Map<string, Booth>;
get boothByName(): Map<string, Booth>;
get boothBySlug(): Map<string, Booth>;
get borderWidth(): number;
constructor(rootStore: RootStore);
get bookmarked(): Booth[];
getNearestBooth(point: Point): Booth;
getBoothAtPoint(point: Point): Booth;
findBooth(str: string): Booth | undefined;
replaceBookmarked(ids: number[]): void;
}
export declare abstract class BoothBase {
protected readonly store: BoothStore;
readonly id: number;
readonly name: string;
readonly externalId: string;
readonly title: string;
/**
* Unrotated, axis-aligned footprint of the booth (a geometry {@link Box}).
* The booth's orientation is stored SEPARATELY in {@link rotate}; the two are
* intentionally kept apart. The dominant access pattern is the unrotated
* footprint (center, width/height, bounds-union, axis-aligned hit-test), so
* `rect` stays an AABB and the rotation is only combined with it at the few
* rotation-sensitive render/geometry sites (a rotated `Rect` is built there
* from `rect` + `rotate` on demand).
*/
readonly rect: Box;
readonly borderWidth: number;
readonly borderColor: string;
noLabels: boolean;
/** Booth orientation in radians, positive = clockwise. Applied to {@link rect}
* only at the rotation-sensitive render/geometry sites; the footprint
* itself ({@link rect}) is axis-aligned and never carries this rotation. */
readonly rotate: number;
readonly paths: PathInfo[];
readonly pathsWithRect: boolean;
readonly slug: string;
readonly error: boolean;
readonly description: string;
readonly exhibitors: Exhibitor[];
readonly labelColor: string;
readonly schedule: EventItem[];
readonly poiTypeId: number;
readonly poiType: RawPoiType;
readonly poiIcon: string;
readonly meta: Record<string, string>;
layer: Layer;
bookmarkedDirectly: boolean;
get bookmarked(): boolean;
private get uiState();
get fullName(): string;
get visible(): boolean;
get hover(): boolean;
get selected(): boolean;
get skipDim(): boolean;
}
export type Booth = RegularBooth | SpecialBooth;
export declare class RegularBooth extends BoothBase implements Omit<RawRegularBooth, 'exhibitors'> {
readonly buyUrl: string;
readonly reserveUrl: string;
readonly type: string;
readonly status: 'onhold' | 'reserved';
readonly price: string;
readonly entity: Entity;
readonly size: string;
readonly availColor: string;
readonly soldColor: string;
readonly holdColor: string;
readonly onHold: boolean;
readonly reserved: boolean;
shapes: (ShapeBgDef | ImageDef)[];
}
export declare class SpecialBooth extends BoothBase {
readonly color: string;
shapes: (ShapeBgDef | ImageDef)[];
readonly entity: Entity;
}
//# sourceMappingURL=BoothStore.d.ts.map