@expofp/floorplan
Version:
Interactive floor plan library for expos and events
68 lines • 2.86 kB
TypeScript
import 'maplibre-gl/dist/maplibre-gl.css';
import { Renderer, type SceneDef } from '@expofp/renderer';
import { type LngLatBoundsLike, Map as MaplibreMap, type StyleSpecification } from 'maplibre-gl';
export declare const MAP_DIM_LAYER_ID = "expofp-map-dim";
/**
* Configuration for the map tile source.
* Abstracted so we can swap between online and offline (PMTiles) later
* without touching MaplibreWrapper.
*/
export interface TileSourceConfig {
/** Maplibre style URL or inline style JSON object */
style: string | StyleSpecification;
}
export interface CameraPaddingOptions {
top: number;
bottom: number;
left: number;
right: number;
}
/** Geographic configuration derived from fpGeo.properties */
export interface GeoConfig {
/** Center of the venue in [lng, lat] */
center: [number, number];
/** Map bearing in degrees */
bearing: number;
/** Initial zoom level */
zoom: number;
/** Optional initial bounds. When present, MapLibre computes the initial zoom. */
bounds?: LngLatBoundsLike;
/** Padding used with initial bounds. */
fitPadding?: CameraPaddingOptions;
/** Small correction after bounds-based initial fit. */
zoomAdjustment?: number;
}
export interface MapOptions {
pitch?: number;
maxPitch?: number;
minZoom?: number;
maxZoom?: number;
maxBounds?: LngLatBoundsLike;
}
export interface MaplibreWrapperProps {
/** The scene definition to render inside the map */
sceneDef: SceneDef;
/** Geographic configuration for map positioning and floorplan locking */
geoConfig: GeoConfig;
/** Static SVG-to-Mercator transform prepared by the adapter */
staticTransform: number[];
/** Tile source configuration (online style URL for now) */
tileSource: TileSourceConfig;
/** Map camera constraints and defaults */
mapOptions?: MapOptions;
/** Called when the renderer instance is ready for external interaction */
onRendererReady?: (renderer: Renderer, map: MaplibreMap, sceneDef: SceneDef, requestRepaint: () => void) => void;
/** Called when the dim overlay layer is available for paint updates. */
onMapDimLayerReady?: (map: MaplibreMap) => void;
/** Called when the map style cannot be loaded. */
onMapLoadError?: (error: unknown) => void;
}
/**
* A pure, state-agnostic React component that renders a Maplibre map
* with the ExpoFP floorplan embedded via CustomLayerInterface.
*
* This component does NOT import MobX or any application state.
* All state synchronization is done externally via the onRendererReady callback.
*/
export default function MaplibreWrapper({ sceneDef, geoConfig, staticTransform, tileSource, mapOptions, onRendererReady, onMapDimLayerReady, onMapLoadError, }: MaplibreWrapperProps): import("react").JSX.Element;
//# sourceMappingURL=MaplibreWrapper.d.ts.map