UNPKG

@expofp/floorplan

Version:

Interactive floor plan library for expos and events

91 lines 3.5 kB
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