UNPKG

@expofp/floorplan

Version:

Interactive floor plan library for expos and events

68 lines 2.86 kB
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