@mappedin/mappedin-js 6.19.0 → 6.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@ import * as _mappedin_mvf_v22 from "@mappedin/mvf-v2";
2
2
  import { AnnotationCollection, AnnotationSymbol, AreaCollection, AreaId, BaseTextAreaProperties, Category, CategoryId, Connection as Connection$1, Details, EnterpriseCategory as EnterpriseCategory$1, EnterpriseCategoryId, EnterpriseLocation as EnterpriseLocation$1, EnterpriseLocationId, EnterpriseLocationInstance, EnterpriseTexture, EnterpriseVenue as EnterpriseVenue$1, EnterpriseVenueType, EntranceCollection, EntranceFeature, Facade as Facade$1, Feature as Feature$1, FeatureCollection as FeatureCollection$1, FloatingFloorTextProperties, FloorCollection, FloorId, FloorProperties, FloorStack as FloorStack$1, FloorTextCommonProperties, Geometry as Geometry$1, Hyperlink as Hyperlink$1, Image, Language, LineStringStyle, LineStringStyle as TMVFLineStringStyle, Location, LocationId, LocationLink, LocationSocial, LocationSocial as LocationSocial$1, LocationState, LocationState as LocationState$1, MVFv2_STANDARD_MVFv3, MultiPolygon as MultiPolygon$1, NavigationFlagDeclarations, NodeCollection, NodeId, ObstructionCollection, ObstructionCollection as ObstructionCollection$1, ObstructionFeature, ObstructionId, OpeningHoursSpecification, OperationHours, OperationHours as OperationHours$1, ParsedMVF, ParsedMVF as TMVF, ParsedMVFLocalePack, Point as Point$1, PointStyle, PointStyle as TMVFPointStyle, Polygon as Polygon$1, PolygonStyle, PolygonStyle as TMVFPolygonStyle, SiblingGroup, SiblingGroup as SiblingGroup$1, SpaceCollection, SpaceCollection as SpaceCollection$1, SpaceFeature, SpaceId, SpaceProperties, Style as TMVFStyle, StyleCollection, StyleCollection as TMVFStyleCollection, TilesetStyle } from "@mappedin/mvf-v2";
3
3
  import { MVFv2_STANDARD_MVFv3 as MVFv2_STANDARD_MVFv3$1, ParsedMVF as ParsedMVF$1, RawMVF } from "@mappedin/mvf-v2/no-validator-lite";
4
4
  import * as _mappedin_renderer_three0 from "@mappedin/renderer-three";
5
- import { AddLabelOptionsInternal, AddText3DOptions, AddText3DOptions as AddText3DOptions$1, AddText3DPointOptions, CameraSystemState, ColorString, DebugState, DebugState as DebugState$1, EntityId, EnvMapOptions, EnvMapOptions as EnvMapOptions$1, GLTFExportOptions as GLTFExportOptions$1, GroupContainerState, ISystemPlugin, ISystemPlugin as ISystemPlugin$1, ImagePlacementOptions, InitializeModelState, InitializeModelState as InitializeModelState$1, InitializeText3DState, InsetPadding, InsetPadding as InsetPadding$1, InsetPaddingOption, InsetPaddingOption as InsetPaddingOption$1, InterpolateOn, Interpolation, LabelAppearance as LabelAppearance$1, LabelRenderedState, LabelTextPlacement as LabelTextPlacement$1, LineStyle, LineStyle as LineStyle$1, MapViewState, MarkerState, OutlinesOptions, PaintStyle, PaintStyle as PaintStyle$1, PathState, PathWidth, PathWidth as PathWidth$1, PixelWidth, Position as Position$1, RendererCore, RendererCoreOptions, RendererCoreOptions as RendererCoreOptions$1, Shading, Text3DState, WatermarkUpdateOptions } from "@mappedin/renderer-three";
5
+ import { AddLabelOptionsInternal, AddText3DOptions, AddText3DOptions as AddText3DOptions$1, AddText3DPointOptions, CameraSystemState, ColorString, DebugState, DebugState as DebugState$1, EntityId, EnvMapOptions, EnvMapOptions as EnvMapOptions$1, GLTFExportOptions as GLTFExportOptions$1, GroupContainerState, ISystemPlugin, ISystemPlugin as ISystemPlugin$1, ImagePlacementOptions, InitializeModelState, InitializeModelState as InitializeModelState$1, InitializeText3DState, InsetPadding, InsetPadding as InsetPadding$1, InsetPaddingOption, InsetPaddingOption as InsetPaddingOption$1, InterpolateOn, Interpolation, LabelRenderedState, LineStyle, LineStyle as LineStyle$1, MapViewState, MarkerState, OutlinesOptions, PaintStyle, PaintStyle as PaintStyle$1, PathState, PathWidth, PathWidth as PathWidth$1, PixelWidth, Position as Position$1, RendererCore, RendererCoreOptions, RendererCoreOptions as RendererCoreOptions$1, Shading, Text3DState, WatermarkUpdateOptions } from "@mappedin/renderer-three";
6
6
  import * as _tweenjs_tween_js0 from "@tweenjs/tween.js";
7
7
  import { Group, Tween } from "@tweenjs/tween.js";
8
8
  import { CustomLayerInterface, IControl, Map as Map$1, MapEventType } from "@mappedin/outdoor-context";
@@ -209,6 +209,11 @@ type TSearchOptions = {
209
209
  */
210
210
  enabled: boolean;
211
211
  };
212
+ /**
213
+ * Options shared by every {@link getMapData} call regardless of authentication mode.
214
+ * Carries the target `mapId` and optional overrides such as environment, base URL,
215
+ * and language preferences.
216
+ */
212
217
  type TGetMapDataSharedOptions = {
213
218
  /**
214
219
  * Mappedin map ID.
@@ -304,8 +309,12 @@ type TGetMapDataSharedOptions = {
304
309
  */
305
310
  prefetchTokens?: boolean;
306
311
  /**
307
- * @hidden
308
- * @internal
312
+ * Load draft (unpublished) enterprise map instead of the live version.
313
+ * Set to `"draft"` to fetch the latest unpublished changes.
314
+ * Leave unspecified to load the published live data.
315
+ *
316
+ * Requires an Enterprise API key. Only applicable to maps made in Mappedin CMS.
317
+ * @default undefined
309
318
  */
310
319
  layoutId?: 'draft';
311
320
  /**
@@ -344,6 +353,8 @@ type TGetMapDataWithCredentialsOptions = {
344
353
  secret: string;
345
354
  } & TGetMapDataSharedOptions;
346
355
  /**
356
+ * {@link getMapData} options that authenticate with a pre-issued access token,
357
+ * as opposed to a `key`/`secret` pair.
347
358
  * @interface
348
359
  */
349
360
  type TGetMapDataWithAccessTokenOptions = {
@@ -352,6 +363,10 @@ type TGetMapDataWithAccessTokenOptions = {
352
363
  */
353
364
  accessToken: string;
354
365
  } & TGetMapDataSharedOptions;
366
+ /**
367
+ * Options accepted by {@link getMapData}. Either credentials (`key`/`secret`) or an
368
+ * `accessToken` may be supplied alongside the shared options.
369
+ */
355
370
  type TGetMapDataOptions = TGetMapDataWithCredentialsOptions | TGetMapDataWithAccessTokenOptions;
356
371
  /**
357
372
  * @internal
@@ -399,9 +414,21 @@ type ParsedMVFResult = {
399
414
  mvf2: ParsedMVF$1;
400
415
  mvf3?: MVFv2_STANDARD_MVFv3$1;
401
416
  };
417
+ /**
418
+ * Decompress and parse a binary MVF (Mappedin Venue Format) payload into the
419
+ * structured `ParsedMVFResult` consumed by {@link hydrateMapData}.
420
+ *
421
+ * @param data - The gzipped MVF binary payload.
422
+ * @param inputVersion - The MVF schema version to parse against.
423
+ */
402
424
  declare function unzipAndParseMVFv2(data: Uint8Array, inputVersion?: string): Promise<ParsedMVFResult>;
403
425
  //#endregion
404
426
  //#region src/hydrate-map-data.d.ts
427
+ /**
428
+ * Pre-fetched MVF data passed to {@link hydrateMapData} so a map can be constructed
429
+ * without going to the network. Supports both binary (`Uint8Array`) and JSON forms,
430
+ * optional language packs, and matches the shape produced by Mappedin's CDN.
431
+ */
405
432
  type THydrateMapDataBundle = {
406
433
  type: 'binary';
407
434
  options?: {
@@ -599,8 +626,19 @@ type CaptureEventsPayloadMap = {
599
626
  * Optional array of result IDs (hits).
600
627
  */
601
628
  hits?: string[];
629
+ /**
630
+ * Total number of results returned for the query across all result categories
631
+ * (places + enterprise locations + enterprise categories). Useful for identifying
632
+ * queries that return no results (`resultCount === 0`).
633
+ */
634
+ resultCount?: number;
602
635
  };
603
636
  };
637
+ /**
638
+ * Sends user interaction analytics events to Mappedin's analytics backend.
639
+ * Captures map loads, search queries, directions, and custom user events so
640
+ * usage of an indoor map can be measured and tuned.
641
+ */
604
642
  declare class Analytics {
605
643
  #private;
606
644
  /**
@@ -635,6 +673,12 @@ declare class Analytics {
635
673
  analyticsBaseUrl: string;
636
674
  /** Flag to disable authentication. */
637
675
  noAuth: boolean;
676
+ /**
677
+ * Marks the tenant as an enterprise venue. Only enterprise venues are allowed to send
678
+ * `x-mappedin-key` / `x-mappedin-secret` headers to the analytics gateway — non-enterprise
679
+ * tenants must use `accessToken` (Bearer) auth, otherwise the gateway returns 401.
680
+ */
681
+ enterprise: boolean;
638
682
  /** Flag to enable geolocation mode. */
639
683
  geolocationMode: boolean;
640
684
  /** The context in which the analytics are being used. */
@@ -689,6 +733,12 @@ type AnalyticState = {
689
733
  analyticsBaseUrl: string;
690
734
  /** Flag to disable authentication. */
691
735
  noAuth: boolean;
736
+ /**
737
+ * Marks the tenant as an enterprise venue. Only enterprise venues are allowed to send
738
+ * `x-mappedin-key` / `x-mappedin-secret` headers to the analytics gateway — non-enterprise
739
+ * tenants must use `accessToken` (Bearer) auth, otherwise the gateway returns 401.
740
+ */
741
+ enterprise: boolean;
692
742
  /** Flag to enable geolocation mode. */
693
743
  geolocationMode: boolean;
694
744
  /** @internal The device ID to be used for analytics. */
@@ -3056,6 +3106,15 @@ declare const LABEL_TEXT_PLACEMENT: {
3056
3106
  readonly CENTER: "center";
3057
3107
  };
3058
3108
  declare const LABEL_LOW_PRIORITY = "low-priority";
3109
+ /**
3110
+ * The placement of a label's text relative to its pin.
3111
+ *
3112
+ * - `'right'` — text appears to the right of the pin.
3113
+ * - `'left'` — text appears to the left of the pin.
3114
+ * - `'top'` — text appears above the pin.
3115
+ * - `'hidden'` — text is hidden, only the pin is visible.
3116
+ * - `'center'` — text is centered at the pin location and the pin is hidden.
3117
+ */
3059
3118
  type LabelTextPlacement = (typeof LABEL_TEXT_PLACEMENT)[keyof typeof LABEL_TEXT_PLACEMENT];
3060
3119
  type LabelTextPlacementInternal = LabelTextPlacement | typeof LABEL_LOW_PRIORITY;
3061
3120
  type EasingCurve$1 = string;
@@ -3108,7 +3167,66 @@ declare const labelAppearanceSchemaBase: ZodObject<{
3108
3167
  __EXPERIMENTAL_wrapperShadowOffsetX: ZodDefault<ZodNumber>;
3109
3168
  __EXPERIMENTAL_wrapperShadowOffsetY: ZodDefault<ZodNumber>;
3110
3169
  __EXPERIMENTAL_wrapperShadowBlur: ZodDefault<ZodNumber>;
3170
+ __EXPERIMENTAL_wrapperOpacity: ZodDefault<ZodNumber>;
3111
3171
  }, $strip>;
3172
+ /**
3173
+ * Options to control how a label is rendered.
3174
+ *
3175
+ * | Option | Type | Description | Default |
3176
+ * |--------|------|-------------|---------|
3177
+ * | `margin` | `number` | Margin around the label text and pin in pixels. This will affect label density. Minimum is 6px. | 6 |
3178
+ * | `maxLines` | `number` | Number of lines to display when text spans multiple lines. | 2 |
3179
+ * | `textSize` | `number` | Text size in pixels | 11.5 |
3180
+ * | `maxWidth` | `number` | Maximum width of text in pixels. | 150 |
3181
+ * | `lineHeight` | `number` | Line height sets the height of a line box. It's commonly used to set the distance between lines of text. | 1.2 |
3182
+ * | `color` | `string` | A color string for the label text and pin. | `#333` |
3183
+ * | `outlineColor` | `string` | A color string for the outline around the label text and pin. | `white` |
3184
+ * | `textColor` | `string` | A color string representing just the text color. Defaults to the same as `color`. | - |
3185
+ * | `textOutlineColor` | `string` | A color string representing just the text outline. Defaults to the same as `outlineColor`. | - |
3186
+ * | `pinColor` | `string` | A color string representing just the pin color. Defaults to the same as `color`. | - |
3187
+ * | `pinOutlineColor` | `string` | A color string representing just the pin outline. Defaults to the same as `outlineColor`. | - |
3188
+ * | `pinColorInactive` | `string` | A color string representing just the pin color when the label is inactive. Defaults to the same as `pinColor`. | - |
3189
+ * | `pinOutlineColorInactive` | `string` | A color string representing just the pin outline when the label is inactive. Defaults to the same as `pinOutlineColor`. | - |
3190
+ * | `icon` | `string` | An icon to be placed inside the label pin. Can be an SVG string or a path to a PNG or JPEG. | - |
3191
+ * | `iconSize` | `number` | Size of the icon in pixels. Requires `icon` to be set. | 20 |
3192
+ * | `iconScale` | `number` \| {@link Interpolation} | Scale the icon uniformly. Specify a number or an {@link Interpolation} object. | 1 |
3193
+ * | `iconPadding` | `number` | Padding between the icon and the pin's border in pixels. | 2 |
3194
+ * | `iconFit` | `'fill'` \| `'contain'` \| `'cover'` | How the icon should fit inside the pin. Options: `fill` (stretch to fill), `cover` (maintain aspect ratio and fill), `contain` (maintain aspect ratio and fit inside). | `cover` |
3195
+ * | `iconOverflow` | `'visible'` \| `'hidden'` | Whether the icon should overflow the circle of the pin. | `hidden` |
3196
+ * | `iconVisible` | `boolean` \| `number` | Controls icon visibility. If boolean, directly shows/hides the icon. If number, defines the zoom level at which the icon becomes visible. | `true` |
3197
+ * | `opacity` | `number` | The opacity of the Label when it is enabled and visible. | `1` |
3198
+ *
3199
+ * @example Render a label with an SVG icon
3200
+ * ```ts
3201
+ * mapView.Labels.add(space, "Label", {
3202
+ * appearance: {
3203
+ * icon: `<svg>...</svg>`,
3204
+ * },
3205
+ * });
3206
+ * ```
3207
+ *
3208
+ * @example Render a label with an image icon
3209
+ * ```ts
3210
+ * mapView.Labels.add(space, "Label", {
3211
+ * appearance: {
3212
+ * icon: 'https://example.com/icon.png',
3213
+ * },
3214
+ * });
3215
+ * ```
3216
+ *
3217
+ * @example Scale a label's icon with zoom level
3218
+ * ```ts
3219
+ * mapView.Labels.add(space, "Label", {
3220
+ * appearance: {
3221
+ * iconScale: {
3222
+ * on: 'zoom-level',
3223
+ * input: [19, 22],
3224
+ * output: [1, 3],
3225
+ * },
3226
+ * },
3227
+ * });
3228
+ * ```
3229
+ */
3112
3230
  type LabelAppearance = Partial<input<typeof labelAppearanceSchemaBase>> & {
3113
3231
  iconScale?: number | Interpolation$2<'zoom-level', number[]>;
3114
3232
  };
@@ -3156,6 +3274,7 @@ declare const labelAppearanceSchema: ZodPipe<ZodObject<{
3156
3274
  __EXPERIMENTAL_wrapperShadowOffsetX: ZodDefault<ZodNumber>;
3157
3275
  __EXPERIMENTAL_wrapperShadowOffsetY: ZodDefault<ZodNumber>;
3158
3276
  __EXPERIMENTAL_wrapperShadowBlur: ZodDefault<ZodNumber>;
3277
+ __EXPERIMENTAL_wrapperOpacity: ZodDefault<ZodNumber>;
3159
3278
  }, $strip>, ZodTransform<Required<LabelAppearance>, {
3160
3279
  margin: number;
3161
3280
  maxLines: number;
@@ -3183,6 +3302,7 @@ declare const labelAppearanceSchema: ZodPipe<ZodObject<{
3183
3302
  __EXPERIMENTAL_wrapperShadowOffsetX: number;
3184
3303
  __EXPERIMENTAL_wrapperShadowOffsetY: number;
3185
3304
  __EXPERIMENTAL_wrapperShadowBlur: number;
3305
+ __EXPERIMENTAL_wrapperOpacity: number;
3186
3306
  textColor?: string | undefined;
3187
3307
  textOutlineColor?: string | undefined;
3188
3308
  pinColor?: string | undefined;
@@ -3252,6 +3372,7 @@ declare class LabelComponent {
3252
3372
  interactive: boolean;
3253
3373
  isOccluded: boolean;
3254
3374
  offscreen: boolean;
3375
+ disposed: boolean;
3255
3376
  /**
3256
3377
  * Whether the label can be shown, which is decided by the collision engine
3257
3378
  */
@@ -4595,6 +4716,11 @@ type TNavigationOptions = {
4595
4716
  animated?: boolean;
4596
4717
  };
4597
4718
  };
4719
+ /**
4720
+ * Snapshot of the navigation system's state at a point in time, including the
4721
+ * active floors, paths, and directions. Returned by `Navigation.getState()` and
4722
+ * suitable for serialization or use in undo/redo flows.
4723
+ */
4598
4724
  type NavigationState = {
4599
4725
  isMultiFloor: boolean;
4600
4726
  floorStacks: FloorStack[];
@@ -4790,6 +4916,10 @@ declare class Navigation {
4790
4916
  get travelledFraction(): number | null;
4791
4917
  /**
4792
4918
  * Highlights path section between two coordinates. This can be used to highlight any section of the path or indicated the currently traveled path.
4919
+ *
4920
+ * In multi-destination mode the highlight is scoped to the active path so
4921
+ * that a `from`/`to` pair on the active route doesn't accidentally pull in
4922
+ * (or get matched to) segments from other destinations.
4793
4923
  */
4794
4924
  highlightPathSection(from: Coordinate, to: Coordinate, options?: TPathSectionHighlightOptions): {
4795
4925
  animation: Promise<unknown>;
@@ -4916,7 +5046,7 @@ declare class Footprint {
4916
5046
  /**
4917
5047
  * Builds the basement mask for elevation 0 floors
4918
5048
  */
4919
- buildBasementMask(): void;
5049
+ buildBasementMask(spacesOpenToBelow?: Feature$1<Polygon$1, SpaceProperties>[]): void;
4920
5050
  /**
4921
5051
  * Updates the state of the footprint geometry (walls and ceiling)
4922
5052
  * @param state Partial state to update
@@ -4954,6 +5084,12 @@ declare class FloorObject implements FloorProperties {
4954
5084
  shortName?: string | undefined;
4955
5085
  subtitle?: string | undefined;
4956
5086
  occluderId?: number;
5087
+ /**
5088
+ * Entity id of the per-floor geometry group container created in {@link load}.
5089
+ * Used to parent ancillary content (e.g. the focusable footprint) so visibility
5090
+ * is driven by the same container as the rest of the floor geometry.
5091
+ */
5092
+ geometryContainer?: EntityId<GroupContainerState>;
4957
5093
  private loaded;
4958
5094
  private styleMap;
4959
5095
  private obstructions?;
@@ -5002,6 +5138,14 @@ declare class FloorObject implements FloorProperties {
5002
5138
  * Add an occluder to the floor if it has a footprint.
5003
5139
  */
5004
5140
  addOccluder(): void;
5141
+ /**
5142
+ * Adds an invisible extruded footprint geometry to the floor that participates
5143
+ * in dynamic focus. Using a single merged feature gives the geometry-in-focus
5144
+ * system a stable bounding volume per floor without scanning every interior
5145
+ * space, and the resulting entity id `${FOCUSABLE_FOOTPRINT_PREFIX}${floorId}-merged`
5146
+ * is the canonical id resolved back to the floor by `getFacadeFromEntityId`.
5147
+ */
5148
+ addFocusFootprint(): void;
5005
5149
  /**
5006
5150
  * Whether the floor contains facade geometry.
5007
5151
  */
@@ -5332,6 +5476,7 @@ declare class Shapes {
5332
5476
  * ```ts
5333
5477
  * const shape = mapView.Shapes.add(geometry, {
5334
5478
  * color: 'green',
5479
+ * hoverColor: 'blue',
5335
5480
  * opacity: 0.7,
5336
5481
  * height: 2,
5337
5482
  * interactive: true
@@ -5369,6 +5514,11 @@ type InspectorState = {
5369
5514
  type InspectorOption = Partial<InspectorState>;
5370
5515
  //#endregion
5371
5516
  //#region src/debug.d.ts
5517
+ /**
5518
+ * Diagnostic utilities exposed at `MapView.Debug`. Provides toggles for
5519
+ * debug visualizations, snapshots of the current camera state, and other
5520
+ * inspection helpers useful while developing against Mappedin JS.
5521
+ */
5372
5522
  declare class Debug {
5373
5523
  #private;
5374
5524
  state: DebugState$1;
@@ -6290,6 +6440,10 @@ type PartialExcept<T$1, K$1 extends string> = { [P in keyof T$1 as P extends K$1
6290
6440
  type ExtractDeep<T$1, U$1, Depth extends readonly number[] = []> = Depth['length'] extends 3 ? any : { [K in keyof T$1 as T$1[K] extends U$1 ? K : T$1[K] extends object | undefined ? ExtractDeep<NonNullable<T$1[K]>, U$1, [...Depth, 0]> extends never ? never : K : never]: T$1[K] extends object | undefined ? undefined extends T$1[K] ? ExtractDeep<NonNullable<T$1[K]>, U$1, [...Depth, 0]> | undefined : ExtractDeep<NonNullable<T$1[K]>, U$1, [...Depth, 0]> : T$1[K] extends U$1 ? T$1[K] : never };
6291
6441
  //#endregion
6292
6442
  //#region src/api-geojson/auto/index.d.ts
6443
+ /**
6444
+ * Map view objects automatically created by `MapView.auto()` — typically labels
6445
+ * and markers generated from venue data for common element types.
6446
+ */
6293
6447
  type AutoElements = {
6294
6448
  labels: Label[];
6295
6449
  markers: Marker[];
@@ -7126,6 +7280,11 @@ declare class MapView {
7126
7280
  /**
7127
7281
  * Get the X and Y of a {@link Coordinate} measured from the top left corner of the map canvas.
7128
7282
  *
7283
+ * The projected altitude is derived from the floor's live state (via `coordinate.floorId`)
7284
+ * plus `coordinate.verticalOffset`. For coordinates without a `floorId`, `verticalOffset`
7285
+ * is used directly as an absolute scene altitude — useful for "what if" projections at
7286
+ * arbitrary altitudes without mutating the scene.
7287
+ *
7129
7288
  * @experimental
7130
7289
  */
7131
7290
  getScreenCoordinateFromCoordinate(coordinate: Coordinate): {
@@ -7634,6 +7793,24 @@ declare class Camera {
7634
7793
  * The current elevation of the camera in meters.
7635
7794
  */
7636
7795
  get elevation(): number;
7796
+ /**
7797
+ * The maximum elevation (in meters) the camera is allowed to reach.
7798
+ * @default Infinity
7799
+ */
7800
+ get maxElevation(): number;
7801
+ /**
7802
+ * Cap the camera's elevation in meters. Useful when `panMode` is
7803
+ * `'elevation'` (vertical drag) to prevent the camera from rising above a
7804
+ * building or floor stack. Pass `Infinity` to remove the cap.
7805
+ *
7806
+ * Applies to user pedestal drag, `setElevation`, and `animateElevation`.
7807
+ * If the current elevation is above the new cap it is snapped down to it.
7808
+ *
7809
+ * @experimental
7810
+ * @param maxElevation The new maximum elevation in meters.
7811
+ * @default Infinity
7812
+ */
7813
+ setMaxElevation(maxElevation: number): void;
7637
7814
  /**
7638
7815
  * Animate the camera's elevation to a specified elevation.
7639
7816
  * @experimental
@@ -8389,6 +8566,11 @@ declare class Paths {
8389
8566
  type CurrentMapGetter$2 = () => GeojsonApiMapObject | undefined;
8390
8567
  //#endregion
8391
8568
  //#region src/api-geojson/style.d.ts
8569
+ /**
8570
+ * Applies named visual style presets to the current map. Accessible from
8571
+ * {@link MapView.Style}, it supports loading a {@link StyleCollection} or
8572
+ * setting an individual style by id.
8573
+ */
8392
8574
  declare class Style {
8393
8575
  #private;
8394
8576
  /**
@@ -8416,9 +8598,11 @@ type HiddenOutdoorGeometry = [polygons: GeoJSON.Feature<GeoJSON.Polygon | GeoJSO
8416
8598
  * [MapLibre GL JS](https://maplibre.org/maplibre-gl-js/docs/) is a TypeScript library that uses WebGL to render interactive maps from vector tiles in a browser. The Mappedin SDK makes use of it to display the outdoor map.
8417
8599
  *
8418
8600
  * By providing access to the MapLibre map used to draw the outdoor map, the Mappedin SDK enables developers to draw on and manipulate the outdoor map.
8419
- * Developers can use most capabilities of MapLibre GL JS with key exceptions being Interactivity and Camera, which are not available.
8601
+ * Developers can use most capabilities of MapLibre GL JS. The key exception is Interactivity, which is not available; direct Camera control is discouraged because Mappedin JS owns the outdoor camera (see below).
8602
+ *
8603
+ * User touch and click events are handled by Mappedin JS and are not propagated to the outdoor map layer. Camera movement is also driven by Mappedin JS; moving the MapLibre camera directly is not supported and may be overridden.
8420
8604
  *
8421
- * User touch and click events are handled by Mappedin JS and are not propagated to the outdoor map layer. Camera movement is also handled by Mappedin JS and cannot be manipulated using MapLibre controls.
8605
+ * IMPORTANT: Moving the camera via `Outdoor.map` (for example `Outdoor.map.flyTo` / `easeTo` / `jumpTo` / `setZoom`) is not supported Mappedin JS controls the outdoor camera and may override these calls. Use {@link MapView.Camera} (for example {@link Camera.animateTo}, {@link Camera.set}, or {@link Camera.focusOn}) instead.
8422
8606
  *
8423
8607
  * Refer to the [Outdoor Map Guide](https://developer.mappedin.com/web-sdk/outdoor-map) for more information and interactive examples.
8424
8608
  */
@@ -8434,11 +8618,30 @@ declare class Outdoor {
8434
8618
  */
8435
8619
  setStyle(style: any): void;
8436
8620
  /**
8437
- * Returns a Maplibre map for advanced usage.
8621
+ * Returns the underlying MapLibre GL map for **advanced, non-camera** usage,
8622
+ * such as adding custom layers, sources, GeoJSON, or deck.gl overlays.
8438
8623
  *
8439
- * @returns {object} Maplibre map instance
8624
+ * IMPORTANT: Moving the camera through this object is not supported. Camera
8625
+ * control (center, zoom, bearing, pitch, elevation) is owned by Mappedin JS,
8626
+ * so MapLibre camera methods such as `flyTo`, `easeTo`, `jumpTo`, `panTo`,
8627
+ * `zoomTo`, `setZoom`, `setCenter`, `setBearing`, or `setPitch` may be
8628
+ * overridden. Use the {@link Camera} API instead — it is the supported,
8629
+ * fully-featured path (animation promises, collision-aware framing).
8630
+ *
8631
+ * To move the camera, use the {@link Camera} API instead:
8632
+ * - {@link Camera.animateTo} — smoothly move to a center / zoom / bearing / pitch
8633
+ * - {@link Camera.set} — instantly set the camera
8634
+ * - {@link Camera.focusOn} — frame one or more map elements
8635
+ *
8636
+ * @example Move the camera to a coordinate (correct — do NOT use `Outdoor.map.flyTo`)
8637
+ * ```ts
8638
+ * mapView.Camera.animateTo({ center: coordinate, zoomLevel: 19 }, { duration: 600 });
8639
+ * ```
8640
+ *
8641
+ * @returns The MapLibre GL `Map` instance, or `undefined` if the outdoor view is disabled.
8440
8642
  *
8441
8643
  * Limitations:
8644
+ * - Camera methods are not supported (see above) — use {@link MapView.Camera} to move the camera.
8442
8645
  * - Maplibre interaction events are not supported, use Mappedin JS interaction events.
8443
8646
  * - Maplibre markers and labels may overlap as they are not integrated with the Mappedin JS collision engine.
8444
8647
  */
@@ -8659,6 +8862,7 @@ declare class Text3D {
8659
8862
  }
8660
8863
  //#endregion
8661
8864
  //#region src/states/doors-state.d.ts
8865
+ /** @internal */
8662
8866
  declare const doorsStateSchemaPartial: ZodObject<{
8663
8867
  type: ZodOptional<ZodDefault<ZodLiteral<"doors">>>;
8664
8868
  color: ZodOptional<ZodDefault<ZodString>>;
@@ -8672,6 +8876,7 @@ declare const doorsStateSchemaPartial: ZodObject<{
8672
8876
  visible: ZodOptional<ZodDefault<ZodBoolean>>;
8673
8877
  opacity: ZodOptional<ZodDefault<ZodNumber>>;
8674
8878
  }, $strip>;
8879
+ /** @internal */
8675
8880
  declare const doorsStateSchemaStrict: ZodObject<{
8676
8881
  type: ZodDefault<ZodLiteral<"doors">>;
8677
8882
  color: ZodDefault<ZodString>;
@@ -8685,24 +8890,39 @@ declare const doorsStateSchemaStrict: ZodObject<{
8685
8890
  visible: ZodDefault<ZodBoolean>;
8686
8891
  opacity: ZodDefault<ZodNumber>;
8687
8892
  }, $strict>;
8893
+ /**
8894
+ * The serialized state of all doors in the map, including their colors and visibility.
8895
+ */
8688
8896
  type TDoorsState = output<typeof doorsStateSchemaStrict>;
8897
+ /**
8898
+ * A partial doors state used to apply incremental updates, where every field is optional.
8899
+ */
8689
8900
  type TDoorsUpdateState = output<typeof doorsStateSchemaPartial>;
8690
8901
  //#endregion
8691
8902
  //#region src/states/facade-state.d.ts
8903
+ /** @internal */
8692
8904
  declare const facadeStateSchemaPartial: ZodObject<{
8693
8905
  type: ZodOptional<ZodDefault<ZodLiteral<"facade">>>;
8694
8906
  opacity: ZodOptional<ZodDefault<ZodNumber>>;
8695
8907
  visible: ZodOptional<ZodDefault<ZodBoolean>>;
8696
8908
  }, $strip>;
8909
+ /** @internal */
8697
8910
  declare const facadeStateSchemaStrict: ZodObject<{
8698
8911
  type: ZodDefault<ZodLiteral<"facade">>;
8699
8912
  opacity: ZodDefault<ZodNumber>;
8700
8913
  visible: ZodDefault<ZodBoolean>;
8701
8914
  }, $strict>;
8915
+ /**
8916
+ * The serialized state of all building facades, including their materials and visibility.
8917
+ */
8702
8918
  type TFacadeState = output<typeof facadeStateSchemaStrict>;
8919
+ /**
8920
+ * A partial facades state used to apply incremental updates, where every field is optional.
8921
+ */
8703
8922
  type TFacadeUpdateState = output<typeof facadeStateSchemaPartial>;
8704
8923
  //#endregion
8705
8924
  //#region src/states/floor-state.d.ts
8925
+ /** @internal */
8706
8926
  declare const floorStateSchemaPartial: ZodObject<{
8707
8927
  geometry: ZodOptional<ZodObject<{
8708
8928
  type: ZodOptional<ZodDefault<ZodLiteral<"floor.geometry">>>;
@@ -8780,6 +9000,7 @@ declare const floorStateSchemaPartial: ZodObject<{
8780
9000
  visible: ZodOptional<ZodDefault<ZodBoolean>>;
8781
9001
  altitude: ZodOptional<ZodDefault<ZodNumber>>;
8782
9002
  }, $strip>;
9003
+ /** @internal */
8783
9004
  declare const floorStateSchemaStrict: ZodObject<{
8784
9005
  geometry: ZodObject<{
8785
9006
  type: ZodDefault<ZodLiteral<"floor.geometry">>;
@@ -8857,17 +9078,24 @@ declare const floorStateSchemaStrict: ZodObject<{
8857
9078
  visible: ZodDefault<ZodBoolean>;
8858
9079
  altitude: ZodDefault<ZodNumber>;
8859
9080
  }, $strict>;
9081
+ /**
9082
+ * The serialized state of a floor, including its geometry, labels, markers, paths, and visibility.
9083
+ */
8860
9084
  type TFloorState = output<typeof floorStateSchemaStrict>;
9085
+ /**
9086
+ * A partial floor state used to apply incremental updates, where every field is optional.
9087
+ */
8861
9088
  type TFloorUpdateState = output<typeof floorStateSchemaPartial>;
8862
9089
  //#endregion
8863
9090
  //#region src/states/geometry-state.d.ts
9091
+ /** @internal */
8864
9092
  declare const geometryStateSchemaPartial: ZodObject<{
8865
9093
  type: ZodOptional<ZodDefault<ZodLiteral<"geometry">>>;
8866
9094
  visible: ZodOptional<ZodDefault<ZodBoolean>>;
8867
9095
  color: ZodOptional<ZodDefault<ZodUnion<readonly [ZodString, ZodLiteral<"initial">]>>>;
8868
9096
  topColor: ZodOptional<ZodOptional<ZodUnion<readonly [ZodString, ZodLiteral<"initial">]>>>;
8869
9097
  hoverColor: ZodOptional<ZodOptional<ZodUnion<readonly [ZodString, ZodLiteral<"initial">]>>>;
8870
- interactive: ZodOptional<ZodDefault<ZodBoolean>>;
9098
+ interactive: ZodOptional<ZodDefault<ZodUnion<readonly [ZodBoolean, ZodLiteral<"pass-through">]>>>;
8871
9099
  opacity: ZodOptional<ZodDefault<ZodNumber>>;
8872
9100
  height: ZodOptional<ZodDefault<ZodNumber>>;
8873
9101
  altitude: ZodOptional<ZodDefault<ZodNumber>>;
@@ -8883,13 +9111,14 @@ declare const geometryStateSchemaPartial: ZodObject<{
8883
9111
  borderColor: ZodOptional<ZodOptional<ZodString>>;
8884
9112
  borderWidth: ZodOptional<ZodOptional<ZodNumber>>;
8885
9113
  }, $strip>;
9114
+ /** @internal */
8886
9115
  declare const geometryStateSchemaStrict: ZodObject<{
8887
9116
  type: ZodDefault<ZodLiteral<"geometry">>;
8888
9117
  visible: ZodDefault<ZodBoolean>;
8889
9118
  color: ZodDefault<ZodUnion<readonly [ZodString, ZodLiteral<"initial">]>>;
8890
9119
  topColor: ZodOptional<ZodUnion<readonly [ZodString, ZodLiteral<"initial">]>>;
8891
9120
  hoverColor: ZodOptional<ZodUnion<readonly [ZodString, ZodLiteral<"initial">]>>;
8892
- interactive: ZodDefault<ZodBoolean>;
9121
+ interactive: ZodDefault<ZodUnion<readonly [ZodBoolean, ZodLiteral<"pass-through">]>>;
8893
9122
  opacity: ZodDefault<ZodNumber>;
8894
9123
  height: ZodDefault<ZodNumber>;
8895
9124
  altitude: ZodDefault<ZodNumber>;
@@ -8906,12 +9135,17 @@ declare const geometryStateSchemaStrict: ZodObject<{
8906
9135
  borderWidth: ZodOptional<ZodNumber>;
8907
9136
  }, $strict>;
8908
9137
  /**
8909
- * Defines the state for geometry elements like {@link Space} when updated.
9138
+ * The serialized state of a geometry element such as a {@link Space}, including
9139
+ * its style, color, and visibility.
8910
9140
  */
8911
9141
  type TGeometryState = output<typeof geometryStateSchemaStrict>;
9142
+ /**
9143
+ * A partial geometry state used to apply incremental updates, where every field is optional.
9144
+ */
8912
9145
  type TGeometryUpdateState = output<typeof geometryStateSchemaPartial>;
8913
9146
  //#endregion
8914
9147
  //#region src/states/label-state.d.ts
9148
+ /** @internal */
8915
9149
  declare const labelStateSchema: ZodObject<{
8916
9150
  type: ZodDefault<ZodLiteral<"label">>;
8917
9151
  text: ZodString;
@@ -8934,6 +9168,7 @@ declare const labelStateSchema: ZodObject<{
8934
9168
  }>>]>>;
8935
9169
  occlude: ZodDefault<ZodBoolean>;
8936
9170
  }, $strip>;
9171
+ /** @internal */
8937
9172
  declare const labelStateSchemaPartial: ZodObject<{
8938
9173
  type: ZodOptional<ZodDefault<ZodLiteral<"label">>>;
8939
9174
  text: ZodOptional<ZodString>;
@@ -8956,10 +9191,18 @@ declare const labelStateSchemaPartial: ZodObject<{
8956
9191
  }>>]>>>;
8957
9192
  occlude: ZodOptional<ZodDefault<ZodBoolean>>;
8958
9193
  }, $strip>;
9194
+ /**
9195
+ * The serialized state of a label, including its position, appearance, and rank.
9196
+ * Returned by state APIs and used by extensions that need to inspect or persist label state.
9197
+ */
8959
9198
  type TLabelState = output<typeof labelStateSchema>;
9199
+ /**
9200
+ * A partial label state used to apply incremental updates, where every field is optional.
9201
+ */
8960
9202
  type TLabelUpdateState = output<typeof labelStateSchemaPartial>;
8961
9203
  //#endregion
8962
9204
  //#region src/states/marker-state.d.ts
9205
+ /** @internal */
8963
9206
  declare const markerStateSchema: ZodObject<{
8964
9207
  type: ZodDefault<ZodLiteral<"marker">>;
8965
9208
  rank: ZodCustom<"initial" | TCollisionRankingTier, "initial" | TCollisionRankingTier>;
@@ -9000,6 +9243,7 @@ declare const markerStateSchema: ZodObject<{
9000
9243
  occlude: ZodDefault<ZodBoolean>;
9001
9244
  animated: ZodDefault<ZodBoolean>;
9002
9245
  }, $strip>;
9246
+ /** @internal */
9003
9247
  declare const markerStateSchemaPartial: ZodObject<{
9004
9248
  type: ZodOptional<ZodDefault<ZodLiteral<"marker">>>;
9005
9249
  enabled: ZodOptional<ZodDefault<ZodBoolean>>;
@@ -9039,12 +9283,23 @@ declare const markerStateSchemaPartial: ZodObject<{
9039
9283
  contentHTML: ZodOptional<ZodString>;
9040
9284
  animated: ZodOptional<ZodDefault<ZodBoolean>>;
9041
9285
  }, $strip>;
9286
+ /**
9287
+ * The serialized state of a marker, including its anchor, HTML content, and rank.
9288
+ * Returned by state APIs and used by extensions that need to inspect or persist marker state.
9289
+ */
9042
9290
  type TMarkerState = output<typeof markerStateSchema>;
9291
+ /**
9292
+ * A partial marker state used to apply incremental updates, where every field is optional.
9293
+ */
9043
9294
  type TMarkerUpdateState = output<typeof markerStateSchemaPartial>;
9044
9295
  //#endregion
9045
9296
  //#region src/states/path-state.d.ts
9046
- /** Border color - 'darken' auto-darkens main color, or explicit hex color string */
9297
+ /**
9298
+ * Border color - 'darken' auto-darkens main color, or explicit hex color string.
9299
+ * @internal
9300
+ */
9047
9301
  type BorderColor = LiteralUnion<'darken', string>;
9302
+ /** @internal */
9048
9303
  declare const pathStateSchemaPartial: ZodObject<{
9049
9304
  type: ZodOptional<ZodDefault<ZodLiteral<"path">>>;
9050
9305
  color: ZodOptional<ZodDefault<ZodString>>;
@@ -9057,6 +9312,7 @@ declare const pathStateSchemaPartial: ZodObject<{
9057
9312
  highlightColor: ZodOptional<ZodDefault<ZodString>>;
9058
9313
  highlightWidthMultiplier: ZodOptional<ZodDefault<ZodNumber>>;
9059
9314
  highlightCompleteFraction: ZodOptional<ZodDefault<ZodNumber>>;
9315
+ highlightDisplayArrowsOnPath: ZodOptional<ZodDefault<ZodBoolean>>;
9060
9316
  xrayOpacity: ZodOptional<ZodDefault<ZodNumber>>;
9061
9317
  travelledEndFraction: ZodOptional<ZodDefault<ZodNumber>>;
9062
9318
  travelledColor: ZodOptional<ZodDefault<ZodString>>;
@@ -9095,6 +9351,7 @@ declare const pathStateSchemaPartial: ZodObject<{
9095
9351
  dithering: ZodOptional<ZodNumber>;
9096
9352
  }, $strip>>>;
9097
9353
  }, $strip>;
9354
+ /** @internal */
9098
9355
  declare const pathStateSchemaStrict: ZodObject<{
9099
9356
  type: ZodDefault<ZodLiteral<"path">>;
9100
9357
  color: ZodDefault<ZodString>;
@@ -9107,6 +9364,7 @@ declare const pathStateSchemaStrict: ZodObject<{
9107
9364
  highlightColor: ZodDefault<ZodString>;
9108
9365
  highlightWidthMultiplier: ZodDefault<ZodNumber>;
9109
9366
  highlightCompleteFraction: ZodDefault<ZodNumber>;
9367
+ highlightDisplayArrowsOnPath: ZodDefault<ZodBoolean>;
9110
9368
  xrayOpacity: ZodDefault<ZodNumber>;
9111
9369
  travelledEndFraction: ZodDefault<ZodNumber>;
9112
9370
  travelledColor: ZodDefault<ZodString>;
@@ -9145,18 +9403,27 @@ declare const pathStateSchemaStrict: ZodObject<{
9145
9403
  dithering: ZodOptional<ZodNumber>;
9146
9404
  }, $strip>>;
9147
9405
  }, $strict>;
9406
+ /**
9407
+ * The serialized state of a path, including its waypoints, style, and animation.
9408
+ * Returned by state APIs and used by extensions that need to inspect or persist path state.
9409
+ */
9148
9410
  type TPathState = output<typeof pathStateSchemaStrict>;
9411
+ /**
9412
+ * A partial path state used to apply incremental updates, where every field is optional.
9413
+ */
9149
9414
  type TPathUpdateState = input<typeof pathStateSchemaPartial>;
9150
9415
  //#endregion
9151
9416
  //#region src/states/shape-state.d.ts
9417
+ /** @internal */
9152
9418
  declare const shapeStateSchemaPartial: ZodObject<{
9153
9419
  type: ZodOptional<ZodDefault<ZodLiteral<"shape">>>;
9154
9420
  visible: ZodOptional<ZodDefault<ZodBoolean>>;
9155
9421
  altitude: ZodOptional<ZodDefault<ZodNumber>>;
9156
9422
  color: ZodOptional<ZodDefault<ZodString>>;
9423
+ hoverColor: ZodOptional<ZodOptional<ZodString>>;
9157
9424
  height: ZodOptional<ZodDefault<ZodNumber>>;
9158
9425
  opacity: ZodOptional<ZodDefault<ZodNumber>>;
9159
- interactive: ZodOptional<ZodDefault<ZodBoolean>>;
9426
+ interactive: ZodOptional<ZodDefault<ZodUnion<readonly [ZodBoolean, ZodLiteral<"pass-through">]>>>;
9160
9427
  bevel: ZodOptional<ZodOptional<ZodObject<{
9161
9428
  enabled: ZodOptional<ZodBoolean>;
9162
9429
  thickness: ZodOptional<ZodNumber>;
@@ -9166,14 +9433,16 @@ declare const shapeStateSchemaPartial: ZodObject<{
9166
9433
  }, $strip>>>;
9167
9434
  position: ZodOptional<ZodCustom<Coordinate, Coordinate>>;
9168
9435
  }, $strip>;
9436
+ /** @internal */
9169
9437
  declare const shapeStateSchemaStrict: ZodObject<{
9170
9438
  type: ZodDefault<ZodLiteral<"shape">>;
9171
9439
  visible: ZodDefault<ZodBoolean>;
9172
9440
  altitude: ZodDefault<ZodNumber>;
9173
9441
  color: ZodDefault<ZodString>;
9442
+ hoverColor: ZodOptional<ZodString>;
9174
9443
  height: ZodDefault<ZodNumber>;
9175
9444
  opacity: ZodDefault<ZodNumber>;
9176
- interactive: ZodDefault<ZodBoolean>;
9445
+ interactive: ZodDefault<ZodUnion<readonly [ZodBoolean, ZodLiteral<"pass-through">]>>;
9177
9446
  bevel: ZodOptional<ZodObject<{
9178
9447
  enabled: ZodOptional<ZodBoolean>;
9179
9448
  thickness: ZodOptional<ZodNumber>;
@@ -9184,12 +9453,16 @@ declare const shapeStateSchemaStrict: ZodObject<{
9184
9453
  position: ZodCustom<Coordinate, Coordinate>;
9185
9454
  }, $strict>;
9186
9455
  /**
9187
- * Represents the state of a shape.
9456
+ * The serialized state of a shape feature collection, including its geometry and styling.
9188
9457
  */
9189
9458
  type TShapeState = output<typeof shapeStateSchemaStrict>;
9459
+ /**
9460
+ * A partial shape state used to apply incremental updates, where every field is optional.
9461
+ */
9190
9462
  type TShapeUpdateState = output<typeof shapeStateSchemaPartial>;
9191
9463
  //#endregion
9192
9464
  //#region src/states/image-state.d.ts
9465
+ /** @internal */
9193
9466
  declare const imageStateSchema: ZodObject<{
9194
9467
  type: ZodDefault<ZodLiteral<"image3d">>;
9195
9468
  visible: ZodDefault<ZodBoolean>;
@@ -9202,6 +9475,7 @@ declare const imageStateSchema: ZodObject<{
9202
9475
  flipImagesToFaceCamera: ZodDefault<ZodBoolean>;
9203
9476
  interactive: ZodDefault<ZodBoolean>;
9204
9477
  }, $strip>;
9478
+ /** @internal */
9205
9479
  declare const imageStateSchemaPartial: ZodObject<{
9206
9480
  type: ZodOptional<ZodDefault<ZodLiteral<"image3d">>>;
9207
9481
  visible: ZodOptional<ZodDefault<ZodBoolean>>;
@@ -9214,10 +9488,17 @@ declare const imageStateSchemaPartial: ZodObject<{
9214
9488
  flipImagesToFaceCamera: ZodOptional<ZodDefault<ZodBoolean>>;
9215
9489
  interactive: ZodOptional<ZodDefault<ZodBoolean>>;
9216
9490
  }, $strip>;
9491
+ /**
9492
+ * The serialized state of a 3D image overlay, including its coordinate, size, and opacity.
9493
+ */
9217
9494
  type TImage3DState = output<typeof imageStateSchema>;
9495
+ /**
9496
+ * A partial 3D image state used to apply incremental updates, where every field is optional.
9497
+ */
9218
9498
  type TImage3DUpdateState = output<typeof imageStateSchemaPartial>;
9219
9499
  //#endregion
9220
9500
  //#region src/states/model-state.d.ts
9501
+ /** @internal */
9221
9502
  declare const modelStateUpdateSchema: ZodObject<{
9222
9503
  altitude: ZodOptional<ZodOptional<ZodNumber>>;
9223
9504
  id: ZodOptional<ZodOptional<ZodUnion<readonly [ZodNumber, ZodString]>>>;
@@ -9237,6 +9518,7 @@ declare const modelStateUpdateSchema: ZodObject<{
9237
9518
  scale: ZodOptional<ZodUnion<readonly [ZodNumber, ZodTuple<[ZodNumber, ZodNumber, ZodNumber], null>]>>;
9238
9519
  rotation: ZodOptional<ZodUnion<readonly [ZodNumber, ZodTuple<[ZodNumber, ZodNumber, ZodNumber], null>]>>;
9239
9520
  }, $strip>;
9521
+ /** @internal */
9240
9522
  declare const modelStateSchemaStrict: ZodObject<{
9241
9523
  altitude: ZodOptional<ZodNumber>;
9242
9524
  id: ZodOptional<ZodUnion<readonly [ZodNumber, ZodString]>>;
@@ -9257,12 +9539,16 @@ declare const modelStateSchemaStrict: ZodObject<{
9257
9539
  clippingPlaneTopVisible: ZodDefault<ZodBoolean>;
9258
9540
  }, $strict>;
9259
9541
  /**
9260
- * Represents the state of a model.
9542
+ * The serialized state of a 3D model, including its coordinate, rotation, and scale.
9261
9543
  */
9262
9544
  type TModelState = output<typeof modelStateSchemaStrict>;
9545
+ /**
9546
+ * A partial 3D model state used to apply incremental updates, where every field is optional.
9547
+ */
9263
9548
  type TModelUpdateState = output<typeof modelStateUpdateSchema>;
9264
9549
  //#endregion
9265
9550
  //#region src/states/text3d-state.d.ts
9551
+ /** @internal */
9266
9552
  declare const text3DUpdateStateSchema: ZodObject<{
9267
9553
  visible: ZodOptional<ZodOptional<ZodBoolean>>;
9268
9554
  color: ZodOptional<ZodOptional<ZodString>>;
@@ -9283,6 +9569,7 @@ declare const text3DUpdateStateSchema: ZodObject<{
9283
9569
  type: ZodOptional<ZodDefault<ZodLiteral<"text3d">>>;
9284
9570
  position: ZodOptional<ZodCustom<Coordinate, Coordinate>>;
9285
9571
  }, $strict>;
9572
+ /** @internal */
9286
9573
  declare const text3DStateSchemaStrict: ZodObject<{
9287
9574
  visible: ZodBoolean;
9288
9575
  color: ZodString;
@@ -9309,10 +9596,17 @@ declare const text3DStateSchemaStrict: ZodObject<{
9309
9596
  type: ZodDefault<ZodLiteral<"text3d">>;
9310
9597
  position: ZodCustom<Coordinate, Coordinate>;
9311
9598
  }, $strict>;
9599
+ /**
9600
+ * The serialized state of a 3D text element, including its coordinate, content, and appearance.
9601
+ */
9312
9602
  type TText3DState = output<typeof text3DStateSchemaStrict>;
9603
+ /**
9604
+ * A partial 3D text state used to apply incremental updates, where every field is optional.
9605
+ */
9313
9606
  type TText3DUpdateState = output<typeof text3DUpdateStateSchema>;
9314
9607
  //#endregion
9315
9608
  //#region src/states/walls-state.d.ts
9609
+ /** @internal */
9316
9610
  declare const wallsStateSchemaPartial: ZodObject<{
9317
9611
  type: ZodOptional<ZodDefault<ZodLiteral<"walls">>>;
9318
9612
  color: ZodOptional<ZodDefault<ZodString>>;
@@ -9327,6 +9621,7 @@ declare const wallsStateSchemaPartial: ZodObject<{
9327
9621
  height: ZodOptional<ZodDefault<ZodNumber>>;
9328
9622
  opacity: ZodOptional<ZodDefault<ZodNumber>>;
9329
9623
  }, $strip>;
9624
+ /** @internal */
9330
9625
  declare const wallsStateSchemaStrict: ZodObject<{
9331
9626
  type: ZodDefault<ZodLiteral<"walls">>;
9332
9627
  color: ZodDefault<ZodString>;
@@ -9341,7 +9636,13 @@ declare const wallsStateSchemaStrict: ZodObject<{
9341
9636
  height: ZodDefault<ZodNumber>;
9342
9637
  opacity: ZodDefault<ZodNumber>;
9343
9638
  }, $strict>;
9639
+ /**
9640
+ * The serialized state of all walls in the map, including their colors and visibility.
9641
+ */
9344
9642
  type TWallsState = output<typeof wallsStateSchemaStrict>;
9643
+ /**
9644
+ * A partial walls state used to apply incremental updates, where every field is optional.
9645
+ */
9345
9646
  type TWallsUpdateState = output<typeof wallsStateSchemaPartial>;
9346
9647
  //#endregion
9347
9648
  //#region src/states/state-utils.d.ts
@@ -10245,6 +10546,11 @@ declare class MappedinRenderError extends MappedinError {
10245
10546
  }
10246
10547
  //#endregion
10247
10548
  //#region src/events.d.ts
10549
+ /**
10550
+ * Free-form context string passed to `MapView.setFloor` (via {@link TSetFloorOptions})
10551
+ * that is forwarded to `floor-change` event listeners as `event.reason`. Useful for
10552
+ * distinguishing user-initiated floor changes from programmatic ones.
10553
+ */
10248
10554
  type TFloorChangeReason = string;
10249
10555
  /**
10250
10556
  * The payload for a user click event on the map.
@@ -10481,9 +10787,17 @@ type TEvents = {
10481
10787
  error: MappedinRenderError;
10482
10788
  };
10483
10789
  };
10790
+ /**
10791
+ * Resolves to the payload type for a given {@link TEvents} event name. Use this
10792
+ * to type the parameter of an event handler without depending on the internal
10793
+ * shape of `TEvents`.
10794
+ */
10484
10795
  type TEventPayload<EventName extends keyof TEvents> = TEvents[EventName] extends {
10485
10796
  data: null;
10486
10797
  } ? TEvents[EventName]['data'] : TEvents[EventName];
10798
+ /**
10799
+ * Events emitted by {@link MapData}, such as when the active language pack changes.
10800
+ */
10487
10801
  type TMapDataEvents = {
10488
10802
  'language-change': {
10489
10803
  code: string;
@@ -10525,12 +10839,22 @@ interface IGeoJSONData {
10525
10839
  }
10526
10840
  //#endregion
10527
10841
  //#region src/types/index.d.ts
10842
+ /**
10843
+ * Result of an animation that may have run to completion or been cancelled before finishing.
10844
+ */
10528
10845
  type TAnimateStateResult = {
10529
10846
  result: 'completed' | 'cancelled';
10530
10847
  };
10848
+ /**
10849
+ * A promise extended with a `cancel()` method. Calling `cancel()` aborts the in-flight
10850
+ * operation; the promise still settles, typically with a `'cancelled'` result.
10851
+ */
10531
10852
  type TCancellablePromise<T$1> = Promise<T$1> & {
10532
10853
  cancel: () => void;
10533
10854
  };
10855
+ /**
10856
+ * The action a user should take at a step of a {@link Directions} instruction.
10857
+ */
10534
10858
  declare enum ACTION_TYPE {
10535
10859
  Departure = "Departure",
10536
10860
  TakeConnection = "TakeConnection",
@@ -11288,6 +11612,7 @@ type TAddModelOptions = Omit<InitializeModelState$1, 'scale' | 'url'> & {
11288
11612
  scale?: number | [number, number, number];
11289
11613
  };
11290
11614
  /**
11615
+ * Options for adding a 3D text element to the map.
11291
11616
  * @interface
11292
11617
  */
11293
11618
  type TAddText3DOptions = AddText3DOptions$1;
@@ -11444,7 +11769,7 @@ type TAddLabelOptions = {
11444
11769
  /**
11445
11770
  * Customize the appearance of the {@link Label} and its pin
11446
11771
  */
11447
- appearance?: LabelAppearance$1;
11772
+ appearance?: LabelAppearance;
11448
11773
  /**
11449
11774
  * Whether the Label should be clickable.
11450
11775
  * @default false
@@ -11461,7 +11786,7 @@ type TAddLabelOptions = {
11461
11786
  /**
11462
11787
  * The placement of the text relative to the pin.
11463
11788
  */
11464
- textPlacement?: LabelTextPlacement$1[];
11789
+ textPlacement?: LabelTextPlacement[];
11465
11790
  /**
11466
11791
  * Whether the label should be occluded by 3D geometry.
11467
11792
  * @default true
@@ -11489,6 +11814,11 @@ type WithState<T$1> = T$1 extends {
11489
11814
  type TUpdateState<T$1 extends MapElementsWithState | string> = T$1 extends {
11490
11815
  __type: infer U;
11491
11816
  } ? U extends keyof MapElementToUpdateState ? MapElementToUpdateState[U] : never : T$1 extends string ? T$1 extends keyof MapElementToUpdateState ? MapElementToUpdateState[T$1] : Record<string, any> : never;
11817
+ /**
11818
+ * Maps each map element discriminator (`__type`) to the read-only rendered state
11819
+ * type the element exposes. Used internally by `getRenderedState` to derive a
11820
+ * precise return type from the element passed in.
11821
+ */
11492
11822
  type MapElementToGetRenderedState = {
11493
11823
  [Label.__type]: ReadonlyDeep<LabelRenderedState>;
11494
11824
  };
@@ -11503,6 +11833,11 @@ type MapElementWithRenderedState = WithState<Label>;
11503
11833
  type TGetRenderedState<T$1 extends MapElementWithRenderedState | string> = T$1 extends {
11504
11834
  __type: infer U;
11505
11835
  } ? U extends keyof MapElementToGetRenderedState ? MapElementToGetRenderedState[U] : never : T$1 extends string ? T$1 extends keyof MapElementToGetRenderedState ? MapElementToGetRenderedState[T$1] : Record<string, any> : never;
11836
+ /**
11837
+ * Map-wide state applied to all elements, such as the background color, hover
11838
+ * highlight color, and shared visibility flags. Returned by `MapView.getState`
11839
+ * and consumed by extensions that need a snapshot of the global render state.
11840
+ */
11506
11841
  type GlobalState = {
11507
11842
  /**
11508
11843
  * The color of the background, in hex format(#000000).
@@ -11664,6 +11999,10 @@ type TCameraInteractionsSetOptions = {
11664
11999
  */
11665
12000
  bearingAndPitch?: boolean;
11666
12001
  };
12002
+ /**
12003
+ * Options passed to `MapView.setFloor` to control how the floor change is performed
12004
+ * and to provide an optional reason that is propagated to `floor-change` event listeners.
12005
+ */
11667
12006
  type TSetFloorOptions = {
11668
12007
  /**
11669
12008
  * Optionally provide the context for the floor change which will be published as the `reason` for the `floor-change` event.
@@ -11873,6 +12212,16 @@ type TPathSectionHighlightOptions = {
11873
12212
  * @default 1500
11874
12213
  */
11875
12214
  animationDuration?: number;
12215
+ /**
12216
+ * Independently controls whether direction arrows are drawn inside the
12217
+ * highlighted section, regardless of the path-level `displayArrowsOnPath`.
12218
+ * If omitted, the highlighted section inherits the path-level setting.
12219
+ *
12220
+ * Animation still follows the path-level `animateArrowsOnPath`, so the
12221
+ * highlighted arrows will animate when the path was created with
12222
+ * `animateArrowsOnPath: true`.
12223
+ */
12224
+ displayArrowsOnPath?: boolean;
11876
12225
  };
11877
12226
  /**
11878
12227
  * Altitude and visual height data for a single floor elevation.
@@ -12391,6 +12740,12 @@ declare abstract class BaseMapData {
12391
12740
  }
12392
12741
  //#endregion
12393
12742
  //#region src/map-data-objects/detailed-map-data.d.ts
12743
+ /**
12744
+ * Abstract base class for map data objects that carry rich metadata (images,
12745
+ * hyperlinks, location profiles, and an external ID). Specific classes such as
12746
+ * {@link Space}, {@link PointOfInterest}, and {@link Connection} extend this
12747
+ * to expose typed accessors for their `details` payload.
12748
+ */
12394
12749
  declare abstract class DetailedMapData<MVFData extends Feature$1<Geometry$1, {
12395
12750
  id: string;
12396
12751
  externalId?: string;
@@ -13584,9 +13939,15 @@ declare class FloorStack extends BaseMapData implements IGeoJSONData, IFocusable
13584
13939
  */
13585
13940
  get floors(): [Floor, ...Floor[]];
13586
13941
  /**
13587
- * Get the default floor for this floor stack
13942
+ * Gets the default floor for this floor stack.
13943
+ *
13944
+ * Resolution order:
13945
+ * 1. The explicitly configured default floor, when it resolves to a known {@link Floor}.
13946
+ * 2. Otherwise, the floor whose elevation is nearest to ground level (zero).
13947
+ *
13948
+ * @returns The default {@link Floor}, or `undefined` when this floor stack has no floors.
13588
13949
  */
13589
- get defaultFloor(): Floor;
13950
+ get defaultFloor(): Floor | undefined;
13590
13951
  /**
13591
13952
  * Gets the facade ({@link Facade}) representing this floor stack, if it exists.
13592
13953
  */
@@ -14381,6 +14742,11 @@ declare class LocationCategory extends BaseMetaData implements Omit<Category, 'p
14381
14742
  }
14382
14743
  //#endregion
14383
14744
  //#region src/api-geojson/language.d.ts
14745
+ /**
14746
+ * Options passed to {@link findPreferredLanguageInVenue} controlling which language is
14747
+ * selected when more than one is available, and whether to fall back to the
14748
+ * browser's preferred language.
14749
+ */
14384
14750
  type TFindPreferredLanguageInVenueOptions = {
14385
14751
  /**
14386
14752
  * Preferred language code to use.
@@ -14736,6 +15102,10 @@ declare class InternalSearch {
14736
15102
  search(term: string, options?: SearchOptions): Promise<SearchResult>;
14737
15103
  suggest(term: string, options?: SuggestOptions): Promise<Suggestion[]>;
14738
15104
  }
15105
+ /**
15106
+ * A single search result returned by `MapData.search`. Wraps the matched
15107
+ * map data object along with its match metadata and relevance score.
15108
+ */
14739
15109
  type SearchResultItem<T$1 extends Places | EnterpriseLocation | EnterpriseCategory> = {
14740
15110
  type: T$1['__type'];
14741
15111
  match: SearchResult$1['match'];
@@ -14743,14 +15113,17 @@ type SearchResultItem<T$1 extends Places | EnterpriseLocation | EnterpriseCatego
14743
15113
  item: T$1;
14744
15114
  };
14745
15115
  /**
15116
+ * A search result wrapping a matched {@link EnterpriseCategory}.
14746
15117
  * @interface
14747
15118
  */
14748
15119
  type SearchResultEnterpriseCategory = SearchResultItem<EnterpriseCategory>;
14749
15120
  /**
15121
+ * A search result wrapping a matched {@link EnterpriseLocation}.
14750
15122
  * @interface
14751
15123
  */
14752
15124
  type SearchResultEnterpriseLocations = SearchResultItem<EnterpriseLocation>;
14753
15125
  /**
15126
+ * A search result wrapping a matched place (Space, PointOfInterest, etc.).
14754
15127
  * @interface
14755
15128
  */
14756
15129
  type SearchResultPlaces = SearchResultItem<Places>;
@@ -14805,6 +15178,8 @@ declare const suggestOptionsSchema: ZodObject<{
14805
15178
  }, $strip>>;
14806
15179
  }, $strip>;
14807
15180
  /**
15181
+ * Options passed to `MapData.search` to filter the searchable data sources
15182
+ * (places, enterprise locations, enterprise categories) and tune behavior.
14808
15183
  * @interface
14809
15184
  */
14810
15185
  type SearchOptions = output<typeof searchOptionsSchema>;
@@ -15771,6 +16146,7 @@ type Style$1 = {
15771
16146
  join: LineStyle$2['join'];
15772
16147
  cap: LineStyle$2['cap'];
15773
16148
  topColor?: string;
16149
+ hoverColor?: string;
15774
16150
  showImage: boolean;
15775
16151
  flipImageToFaceCamera: boolean;
15776
16152
  enableImageCollisions: boolean;
@@ -15808,6 +16184,11 @@ declare class StyleComponent implements Style$1 {
15808
16184
  opacity: number;
15809
16185
  width: number;
15810
16186
  height: number;
16187
+ /**
16188
+ * The height the geometry's vertices were baked at; the divisor for instance
16189
+ * height scaling (`height / initialHeight`). Provisional until the deferred bake:
16190
+ * re-anchored to the actual baked height in `BatchedMeshSystem.populateEntityMesh`.
16191
+ */
15811
16192
  initialHeight: number;
15812
16193
  altitude: number;
15813
16194
  join: LineStyle$2['join'];
@@ -16185,6 +16566,11 @@ type FeatureCollectionState = {
16185
16566
  * preserved for now.
16186
16567
  */
16187
16568
  topColor?: string;
16569
+ /**
16570
+ * Per-feature hover color. Setting this cascades to all children, and reads
16571
+ * back through to the first child.
16572
+ */
16573
+ hoverColor?: string;
16188
16574
  /**
16189
16575
  * @deprecated Per-feature property; read-through to the first child is
16190
16576
  * preserved for now.
@@ -16206,10 +16592,18 @@ type FeatureCollectionState = {
16206
16592
  */
16207
16593
  side?: MaterialSide;
16208
16594
  /**
16209
- * @deprecated Per-feature property; read-through to the first child is
16210
- * preserved for now.
16595
+ * Controls how the feature collection participates in pointer-event raycasting.
16596
+ * Setting this cascades to every child geometry.
16597
+ *
16598
+ * - `true`: hover and click handlers fire on the child geometries.
16599
+ * - `false` (default): each child geometry captures the raycast — clicks
16600
+ * land on whichever feature is in front and stop there — but no hover or
16601
+ * click handler fires. Children still shield anything rendered behind
16602
+ * them from receiving events.
16603
+ * - `'pass-through'`: raycasts skip every feature in the collection so
16604
+ * pointer events fall through to whatever is rendered behind.
16211
16605
  */
16212
- interactive?: boolean;
16606
+ interactive?: InteractiveMode;
16213
16607
  /**
16214
16608
  * Collection-level visibility. Maps directly to `Object3D.visible` on the
16215
16609
  * wrapping `FeatureCollectionObject3D`; toggling cascades to children via
@@ -16416,10 +16810,18 @@ declare class SimpleGeometryMaterial extends MeshLambertMaterial {
16416
16810
  }
16417
16811
  //#endregion
16418
16812
  //#region ../renderer-three/src/components/image.d.ts
16419
- declare class EntityMesh$1 extends Mesh {
16420
- userData: {
16421
- entityId: string | number;
16422
- };
16813
+ /** userData carried by an {@link ImageMesh}: the entity id plus per-asset metadata hoisted once at
16814
+ * creation so the per-frame update loop never recomputes it. */
16815
+ interface ImageMeshUserData {
16816
+ entityId: string | number;
16817
+ /** Cache key into the LOD controller; hoisted once in createImageMesh, read each frame. */
16818
+ cacheKey: string;
16819
+ /** Whether the asset URL supports server-side resizing; hoisted to avoid per-frame recompute. */
16820
+ isResizable: boolean;
16821
+ }
16822
+ /** Per-image Three.js mesh. Image-only — distinct from the generic `EntityMesh<T>` in `types/index.ts`. */
16823
+ declare class ImageMesh extends Mesh {
16824
+ userData: ImageMeshUserData;
16423
16825
  }
16424
16826
  type ImageStyle = {
16425
16827
  /**
@@ -16484,7 +16886,7 @@ type ImageState = {
16484
16886
  };
16485
16887
  declare class ImageComponent {
16486
16888
  mesh: Geometry3DObject3D;
16487
- imageMesh?: EntityMesh$1;
16889
+ imageMesh?: ImageMesh;
16488
16890
  outline?: LineSegments;
16489
16891
  readonly type = "image";
16490
16892
  instanceIndex: number;
@@ -16561,14 +16963,21 @@ type GeometryState = {
16561
16963
  */
16562
16964
  hoverColor?: string;
16563
16965
  /**
16564
- * Whether the geometry is interactive, which means it can be hovered over and clicked on.
16966
+ * Controls how the geometry participates in pointer-event raycasting.
16967
+ *
16968
+ * - `true`: hover and click handlers fire on this geometry.
16969
+ * - `false` (default): the geometry captures the raycast — clicks land on
16970
+ * it and stop there — but no hover or click handler fires. The geometry
16971
+ * still shields anything rendered behind it from receiving events.
16972
+ * - `'pass-through'`: raycasts skip this geometry entirely so pointer
16973
+ * events fall through to whatever is rendered behind it.
16565
16974
  *
16566
16975
  * @example
16567
16976
  * ```javascript
16568
16977
  * renderer.on('click', ({ geometry }) => {});
16569
16978
  * ```
16570
16979
  */
16571
- interactive: boolean;
16980
+ interactive: InteractiveMode;
16572
16981
  /**
16573
16982
  * Whether the geometry is outlined with a 30% darkened color. This effect adds lines around the geometry to make it stand out.
16574
16983
  */
@@ -16656,6 +17065,15 @@ declare class MeshComponent {
16656
17065
  textEntityId?: string;
16657
17066
  readonly type = "geometry";
16658
17067
  dirty: boolean;
17068
+ /**
17069
+ * Single source of truth for `interactive: 'pass-through'`. When true, the
17070
+ * interaction system excludes this mesh from `_hitBoxes` so the raycast
17071
+ * never hits it and pointer events fall through to whatever is rendered
17072
+ * behind. Set via `setState({ interactive: 'pass-through' })`. Distinct
17073
+ * from the presence of `InteractionComponent`, which represents
17074
+ * `interactive: true`.
17075
+ */
17076
+ pointerEventsPassThrough: boolean;
16659
17077
  shouldDetach: boolean;
16660
17078
  detached: boolean;
16661
17079
  instanceIndex: number;
@@ -16860,6 +17278,12 @@ type PathState$1 = {
16860
17278
  highlightColor: string;
16861
17279
  highlightWidthMultiplier: number;
16862
17280
  highlightCompleteFraction: number;
17281
+ /**
17282
+ * Independently controls whether arrows are drawn inside the highlighted
17283
+ * section of the path. When omitted on `addPath` it inherits from
17284
+ * `displayArrowsOnPath`. Animation still follows `animateArrowsOnPath`.
17285
+ */
17286
+ highlightDisplayArrowsOnPath: boolean;
16863
17287
  /**
16864
17288
  * The opacity of the path when it's behind geometry (x-ray effect). Value from 0 to 1.
16865
17289
  * @default 0.25
@@ -17021,6 +17445,12 @@ type AddPathOptions = {
17021
17445
  highlightColor?: string;
17022
17446
  highlightWidthMultiplier?: number;
17023
17447
  highlightCompleteFraction?: number;
17448
+ /**
17449
+ * Independently controls whether arrows are drawn inside the highlighted
17450
+ * section of the path. When omitted, it inherits from `displayArrowsOnPath`.
17451
+ * Animation still follows `animateArrowsOnPath`.
17452
+ */
17453
+ highlightDisplayArrowsOnPath?: boolean;
17024
17454
  /**
17025
17455
  * The opacity of the path when it's behind geometry (x-ray effect). Value from 0 to 1.
17026
17456
  * @default 0.25
@@ -17158,6 +17588,7 @@ declare class PathComponent {
17158
17588
  highlightCompleteFraction: number;
17159
17589
  highlightWidthMultiplier: number;
17160
17590
  highlightColor: string;
17591
+ highlightDisplayArrowsOnPath: boolean;
17161
17592
  xrayOpacity: number;
17162
17593
  xrayStyle?: XrayStyleConfig;
17163
17594
  travelledEndFraction: number;
@@ -17302,6 +17733,9 @@ type Text3DState$1 = {
17302
17733
  readonly rotation: number;
17303
17734
  } & Text3DStyle;
17304
17735
  /**
17736
+ * Initial state for a 3D text element when it is first added to the map.
17737
+ * Mirrors the shape of {@link TText3DState} with all fields optional and
17738
+ * with the auto-managed `id` and `type` fields omitted.
17305
17739
  * @interface
17306
17740
  */
17307
17741
  type InitializeText3DState$1 = Partial<Omit<Text3DState$1, 'id' | 'type'>>;
@@ -17316,7 +17750,7 @@ type Text3DProperties = {
17316
17750
  textArea?: MeshComponentProperties['textArea'];
17317
17751
  };
17318
17752
  /**
17319
- * Options for labeling a geometry with 3D text.
17753
+ * Options accepted when adding a 3D text element (for example to label a space).
17320
17754
  */
17321
17755
  type AddText3DOptions$2 = {
17322
17756
  appearance?: Partial<InitializeText3DState$1>;
@@ -17458,9 +17892,26 @@ type ClippingPlane = {
17458
17892
  verticalOffset: number;
17459
17893
  plane?: Plane;
17460
17894
  holeFillMesh?: Mesh;
17895
+ /**
17896
+ * Group containing the two stencil counting passes (mesh0/mesh1) that toggle
17897
+ * the clipping bit on cross-section pixels. Must be kept in sync with the
17898
+ * cap's visibility: when the cap isn't rendered, it can't clear the clipping
17899
+ * bit, so the counting passes must also be skipped to avoid leaving the bit
17900
+ * set and corrupting other stencil-based features (e.g. underground mask).
17901
+ */
17902
+ holeFillGroup?: Group$1;
17461
17903
  topColor?: string;
17462
17904
  needsRebuild: boolean;
17463
17905
  topVisible?: boolean;
17906
+ /**
17907
+ * World-space XY center of the model's bounding box. Used to size and position
17908
+ * the stencil bias / hole-fill plane to the model's footprint instead of a
17909
+ * giant screen-covering quad (which would corrupt other stencil features).
17910
+ */
17911
+ bboxCenter?: {
17912
+ x: number;
17913
+ y: number;
17914
+ };
17464
17915
  };
17465
17916
  declare class ClippingPlaneComponent implements ClippingPlane {
17466
17917
  readonly type: "clippingPlane";
@@ -17469,8 +17920,13 @@ declare class ClippingPlaneComponent implements ClippingPlane {
17469
17920
  verticalOffset: number;
17470
17921
  plane?: Plane;
17471
17922
  holeFillMesh?: Mesh;
17923
+ holeFillGroup?: Group$1;
17472
17924
  topColor?: string;
17473
17925
  topVisible: boolean;
17926
+ bboxCenter?: {
17927
+ x: number;
17928
+ y: number;
17929
+ };
17474
17930
  }
17475
17931
  //#endregion
17476
17932
  //#region ../renderer-three/src/entities/geometry3d.d.ts
@@ -17651,6 +18107,10 @@ interface PathUniforms {
17651
18107
  type: 'f';
17652
18108
  value: number;
17653
18109
  };
18110
+ highlightDisplayArrowsOnPath: {
18111
+ type: 'b';
18112
+ value: boolean;
18113
+ };
17654
18114
  travelledEndFraction: {
17655
18115
  type: 'f';
17656
18116
  value: number;
@@ -18571,6 +19031,18 @@ declare class CameraSystem extends PubSub<CameraEvents> {
18571
19031
  private createCameraPlane;
18572
19032
  private addEventListeners;
18573
19033
  private addMouseEventListeners;
19034
+ /**
19035
+ * Ends an in-progress drag only when the pointer actually leaves the browser
19036
+ * window. `mouseout` bubbles, so it also fires when the pointer merely moves
19037
+ * from the canvas onto another in-page element rendered above it — for
19038
+ * example an interactive HTML marker or a developer-owned overlay. Treating
19039
+ * those in-page transitions as drag-end froze pan/rotate gestures until the
19040
+ * mouse button was released and pressed again. When the pointer leaves the
19041
+ * window, `relatedTarget` is `null`; in-page transitions always carry a
19042
+ * non-null `relatedTarget`.
19043
+ * @param event - The `mouseout` event from the window listener.
19044
+ */
19045
+ private onWindowMouseOut;
18574
19046
  private addMouseMoveEventListeners;
18575
19047
  private removeMouseMoveEventListeners;
18576
19048
  private removeMouseUpEventListeners;
@@ -18797,6 +19269,21 @@ declare class Camera$2 extends PubSub<{
18797
19269
  * The camera's current elevation in meters from the ground.
18798
19270
  */
18799
19271
  get elevation(): number;
19272
+ /**
19273
+ * The maximum elevation (in meters) the camera is allowed to reach.
19274
+ * @default Infinity
19275
+ */
19276
+ get maxElevation(): number;
19277
+ /**
19278
+ * Cap the camera's elevation in meters. Applies to user pedestal drag (when
19279
+ * `panMode` is `'elevation'`), `setElevation`, and `animateElevation`. The
19280
+ * current elevation is snapped down to the cap if it exceeds the new
19281
+ * maximum.
19282
+ *
19283
+ * @param maxElevation The new maximum elevation in meters.
19284
+ * @default Infinity
19285
+ */
19286
+ setMaxElevation(maxElevation: number): void;
18800
19287
  /**
18801
19288
  * @param elevation The elevation in meters.
18802
19289
  */
@@ -19146,49 +19633,24 @@ declare class ImageSystem extends PubSub<{
19146
19633
  private naturalBearing;
19147
19634
  private imagePlacementOptions;
19148
19635
  private cameraFrustum;
19149
- private transformImageRequest?;
19150
19636
  private cameraWorldPosition;
19151
19637
  private debug;
19152
19638
  get debugLOD(): boolean;
19153
19639
  set debugLOD(value: boolean);
19154
19640
  /**
19155
- * Cache for tracking image LOD state. Stores the original image element
19156
- * and textures at each LOD level for memory-efficient switching.
19641
+ * The overlay LOD controller: owns all per-asset texture state and the download→promote upgrade
19642
+ * pipeline. ImageSystem holds only ECS/mesh/material/visibility and calls this seam
19643
+ * (register / get / requestUpgrade / drainPromotions / effectiveLOD / dispose). Not to be confused
19644
+ * with `TextureSystem`, which paints fixed-resolution surface textures onto polygon materials.
19157
19645
  */
19158
- private cache;
19646
+ private lod;
19159
19647
  constructor(rendererState: RendererState, convertTo3DMapPosition: Core['convertTo3DMapPosition'], projectToScreen: Core['project'], initialBearing?: number, naturalBearing?: number, imagePlacementOptions?: ImagePlacementOptions$1, transformImageRequest?: TransformImageRequest);
19160
19648
  private createImageMesh;
19161
- /**
19162
- * Gets or downloads an image texture. Cache entry must exist before calling.
19163
- * For resizable URLs (Mappedin CDN): uses server-side resizing with LOD levels.
19164
- * For non-resizable URLs: caps to the specified size once at load.
19165
- * @param cacheKey - Cache key (URL or URL|size for non-resizable images)
19166
- * @param url - The image URL for loading
19167
- * @param targetSize - Texture dimension in pixels
19168
- * @returns Promise that resolves to the texture
19169
- */
19170
- private getOrDownloadImage;
19171
- /**
19172
- * Returns the texture capped to maxSize. Only scales if the image exceeds maxSize.
19173
- * Used for external images to prevent VRAM exhaustion on mobile.
19174
- * @param sourceTexture - The loaded texture from TextureLoader
19175
- * @param maxSize - Maximum dimension in pixels
19176
- * @returns The original texture if within limits, or a new CanvasTexture if scaled
19177
- */
19178
- private createCappedTexture;
19179
- /**
19180
- * Updates the LOD for an image mesh based on camera distance.
19181
- * Only applies to resizable URLs (Mappedin CDN) - server handles the scaling.
19182
- * Non-resizable URLs use a fixed image size set at load time.
19183
- * @param url - The image URL
19184
- * @param imageMesh - The mesh to update
19185
- * @param position - The world position of the image
19186
- * @param maxImageSize - Maximum image size for non-resizable images (used for cache key)
19187
- */
19188
- private updateLODIfNeeded;
19189
19649
  /**
19190
19650
  * Applies debug LOD colors to all image materials when debug mode is enabled.
19191
- * Calculates LOD based on current camera position and applies appropriate color tinting.
19651
+ * Colors reflect the ACTUAL decoded resolution of the resident texture (`hi ?? base`), bucketed to
19652
+ * the ladder — not the requested tier (`hiLod`) and not the distance target. So a raster source
19653
+ * smaller than its requested tier (e.g. 666px requested at 2048) tints by what the GPU truly holds.
19192
19654
  */
19193
19655
  private applyDebugLODColors;
19194
19656
  /**
@@ -19199,10 +19661,19 @@ declare class ImageSystem extends PubSub<{
19199
19661
  currentImageScreenBBoxes: Rectangle[];
19200
19662
  private viewProjectionMatrix;
19201
19663
  private lastLODUpdateTime;
19664
+ /**
19665
+ * Reconciles a material's map to the effective resident texture (`hi ?? base`) for an asset.
19666
+ * This is the single per-frame resync point: it swaps in a deferred upgrade once it lands and
19667
+ * keeps materials sharing an asset consistent. Hot path — no allocation. Returns whether a
19668
+ * texture is resident.
19669
+ * @param material - The mesh material to reconcile
19670
+ * @param cacheKey - The asset cache key
19671
+ * @returns True if an effective texture is resident (mesh can be shown)
19672
+ */
19673
+ private reconcileMaterialTexture;
19202
19674
  update(cameraRotationRadians: number, isCameraMoving: boolean, cameraStoppedTime: number): void;
19203
19675
  /**
19204
- * Disposes all cached textures and clears the cache.
19205
- * Called when the renderer is destroyed to prevent GPU memory leaks.
19676
+ * Disposes all cached textures and clears state. Called on renderer destroy to prevent GPU leaks.
19206
19677
  */
19207
19678
  destroy(): void;
19208
19679
  updateImageScreenBBoxes(meshComponent: MeshComponent | ImageComponent): void;
@@ -19671,11 +20142,23 @@ declare class ClippingPlaneSystem {
19671
20142
  update(): void;
19672
20143
  private process;
19673
20144
  /**
19674
- * Creates the stencil geometry for hole fill detection
19675
- * @param modelGeometry - The merged model geometry for counting passes
19676
- * @param planeGeometry - The plane geometry for bias pass (covers entire hole fill area)
19677
- * @param plane - The clipping plane
19678
- * @param renderOrder - Base render order for the meshes
20145
+ * Creates the stencil counting passes that mark cross-section pixels.
20146
+ *
20147
+ * Two passes operate on a single reserved stencil bit (CLIPPING_BIT = 0x80),
20148
+ * which is guaranteed to be 0 in every mask ID, so the clipping system and the
20149
+ * masking system never overwrite each other's stencil state:
20150
+ *
20151
+ * - mesh0 (back faces below clip): toggles bit 7 via InvertStencilOp.
20152
+ * - mesh1 (front faces below clip): toggles bit 7 via InvertStencilOp.
20153
+ *
20154
+ * For closed manifold meshes from a camera outside the model, each balanced
20155
+ * back/front pair toggles bit 7 twice (returning it to 0), while each unpaired
20156
+ * back face above the clip leaves bit 7 = 1. The cap then renders where
20157
+ * bit 7 == 1 and immediately clears bit 7 again with ZeroStencilOp.
20158
+ *
20159
+ * @param modelGeometry - The merged model geometry used for both passes
20160
+ * @param plane - The user-defined clipping plane
20161
+ * @param renderOrder - Base render order for the passes
19679
20162
  */
19680
20163
  private createHoleFillGeometry;
19681
20164
  }
@@ -20309,11 +20792,25 @@ type Systems = {
20309
20792
  pluginSystem: PluginSystem;
20310
20793
  shadowsSystem?: ShadowsSystem;
20311
20794
  };
20795
+ /**
20796
+ * Top-level state for the MapView, exposing global hover colors that apply
20797
+ * to all interactive elements. Returned by state APIs and consumed by extensions.
20798
+ */
20312
20799
  type MapViewState$1 = {
20313
20800
  readonly type: 'map-view';
20314
20801
  hoverColor: string;
20315
20802
  text3dHoverColor: string;
20316
20803
  };
20804
+ /**
20805
+ * Style accepted by {@link Core.addFeatureCollection}: the GeoJSON-shape-specific
20806
+ * paint/line style plus `focusable`, which enrolls the resulting mesh in the
20807
+ * dynamic-focus system. To set `interactive` (including `'pass-through'`), cascade
20808
+ * it via `setState` on the FC id after creation; that path already handles all
20809
+ * the per-leaf bookkeeping.
20810
+ */
20811
+ type FCFeatureStyle<T$1 extends FeatureCollection<Polygon | MultiPolygon | LineString, any>> = (T$1 extends FeatureCollection<LineString, any> ? LineStyle$2 : PaintStyle$2) & {
20812
+ focusable?: boolean;
20813
+ };
20317
20814
  declare class Core extends PubSub<MapEvent> {
20318
20815
  #private;
20319
20816
  options: Omit<RendererCoreOptions$2, 'outdoorView'>;
@@ -20367,6 +20864,11 @@ declare class Core extends PubSub<MapEvent> {
20367
20864
  addGroupContainer(id: string, options?: {
20368
20865
  visible?: boolean;
20369
20866
  altitude?: number;
20867
+ /**
20868
+ * Group containers do not accept `'pass-through'` (they have no mesh
20869
+ * of their own to skip). Mark individual descendants as
20870
+ * `interactive: 'pass-through'` instead.
20871
+ */
20370
20872
  interactive?: boolean;
20371
20873
  focusable?: boolean;
20372
20874
  preloadGeometry?: boolean;
@@ -20398,7 +20900,7 @@ declare class Core extends PubSub<MapEvent> {
20398
20900
  * The only collection-level concern honored at creation time is the optional
20399
20901
  * mask — read from `style(features[0])`.
20400
20902
  */
20401
- addFeatureCollection<T$1 extends FeatureCollection<Polygon | MultiPolygon | LineString, any>>(id: string, geometry: T$1, style?: ((feature: Feature<Polygon | MultiPolygon | LineString, any>) => T$1 extends FeatureCollection<LineString, any> ? LineStyle$2 : PaintStyle$2) | (T$1 extends FeatureCollection<LineString, any> ? LineStyle$2 : PaintStyle$2), fcState?: {
20903
+ addFeatureCollection<T$1 extends FeatureCollection<Polygon | MultiPolygon | LineString, any>>(id: string, geometry: T$1, style?: ((feature: Feature<Polygon | MultiPolygon | LineString, any>) => FCFeatureStyle<T$1>) | FCFeatureStyle<T$1>, fcState?: {
20402
20904
  altitude?: number;
20403
20905
  visible?: boolean;
20404
20906
  }, parent?: EntityId$1<GroupContainerState$1> | string | number | null): EntityId$1<FeatureCollectionState>;
@@ -20705,6 +21207,21 @@ type GroupContainerState$1 = {
20705
21207
  * The altitude of the group container above the ground in meters
20706
21208
  */
20707
21209
  altitude: number;
21210
+ /**
21211
+ * Controls whether the group container itself fires hover and click events.
21212
+ *
21213
+ * - `true`: container-level hover and click handlers fire when the user
21214
+ * interacts with any descendant. The container appears in the
21215
+ * `groupContainers` array of the event payload.
21216
+ * - `false` (default): no container-level handler fires. Descendants still
21217
+ * capture the raycast independently based on their own `interactive`
21218
+ * state.
21219
+ *
21220
+ * `'pass-through'` is intentionally not supported on group containers —
21221
+ * group containers have no mesh of their own to skip. Mark individual
21222
+ * descendant geometries / shapes / feature collections as
21223
+ * `interactive: 'pass-through'` instead.
21224
+ */
20708
21225
  interactive: boolean;
20709
21226
  /**
20710
21227
  * The opacity of the group container, which sets the opacity of all its children
@@ -20744,6 +21261,7 @@ declare class GroupContainerObject3D extends Object3D {
20744
21261
  setVisible(visible: boolean): void;
20745
21262
  setAltitude(altitude: number): void;
20746
21263
  set2DGeometryChildrenPositionDirty(): void;
21264
+ liftFocusableCaches(dz: number): void;
20747
21265
  get altitude(): number;
20748
21266
  setOpacity(opacity: number): void;
20749
21267
  get opacity(): number;
@@ -20820,7 +21338,16 @@ declare class Geometry2D {
20820
21338
  type Position$2 = [lon: number, lat: number] | [lon: number, lat: number, alt: number];
20821
21339
  //#endregion
20822
21340
  //#region ../renderer-three/src/types/options.d.ts
21341
+ /**
21342
+ * Selects which environment map is used for image-based lighting.
21343
+ * `'basic'` enables a default environment map, `false` disables environment lighting.
21344
+ */
20823
21345
  type EnvMapOptions$2 = 'basic' | false;
21346
+ /**
21347
+ * Low-level options consumed by `RendererCore` to configure rendering, camera
21348
+ * defaults, outdoor view integration, and visual effects. Most consumers
21349
+ * should use `TShow3DMapOptions` instead, which is converted into this shape internally.
21350
+ */
20824
21351
  type RendererCoreOptions$2 = Partial<{
20825
21352
  center?: Position$2;
20826
21353
  zoomLevel?: number;
@@ -20995,6 +21522,25 @@ declare class EntityMesh<T$1> extends Mesh<any> {
20995
21522
  entity: T$1;
20996
21523
  };
20997
21524
  }
21525
+ /**
21526
+ * Controls how an entity participates in pointer-event raycasting.
21527
+ *
21528
+ * In all three modes the geometry is rendered identically — the difference is
21529
+ * purely about how pointer events are routed.
21530
+ *
21531
+ * - `true`: the entity opts in to events. Hover and click handlers registered
21532
+ * on the map view fire when the user interacts with this entity.
21533
+ * - `false` (default): the entity captures the raycast — pointer events land
21534
+ * on it and stop there — but no hover or click handler fires. This is the
21535
+ * right choice for static, non-clickable decoration that should still
21536
+ * shield whatever is rendered behind it (for example a wall in front of an
21537
+ * interactive space). Anything behind the entity will not receive events.
21538
+ * - `'pass-through'`: raycasts skip the entity entirely, so pointer events
21539
+ * fall through to whatever is rendered behind it. Useful for invisible
21540
+ * helper geometry that must never block clicks on the real content beneath
21541
+ * it (for example a per-floor focus footprint).
21542
+ */
21543
+ type InteractiveMode = boolean | 'pass-through';
20998
21544
  /**
20999
21545
  * Options for configuring bevel effects on extruded geometry.
21000
21546
  */
@@ -21024,9 +21570,14 @@ type BevelState = {
21024
21570
  */
21025
21571
  segments?: number;
21026
21572
  };
21573
+ /**
21574
+ * Visual styling for filled (polygon-based) geometry such as spaces and shapes.
21575
+ * Controls color, opacity, height, textures, bevel, shading and outlines.
21576
+ */
21027
21577
  type PaintStyle$2 = {
21028
21578
  color: string;
21029
21579
  topColor?: string;
21580
+ hoverColor?: string;
21030
21581
  height?: number;
21031
21582
  altitude?: number;
21032
21583
  opacity?: number;
@@ -21065,14 +21616,23 @@ type PaintStyle$2 = {
21065
21616
  */
21066
21617
  __EXPERIMENTAL_maskEnabled?: boolean;
21067
21618
  };
21619
+ /**
21620
+ * Configures the vertical shading gradient applied to extruded geometry to give
21621
+ * walls and shapes a sense of depth. `start` and `end` are normalized heights.
21622
+ */
21068
21623
  type Shading$1 = {
21069
21624
  start?: number;
21070
21625
  end?: number;
21071
21626
  intensity?: number;
21072
21627
  };
21628
+ /**
21629
+ * Visual styling for line-based geometry such as paths and connection lines.
21630
+ * Controls color, width, caps/joins, shading and outlines.
21631
+ */
21073
21632
  type LineStyle$2 = {
21074
21633
  color: string;
21075
21634
  topColor?: string;
21635
+ hoverColor?: string;
21076
21636
  width: number;
21077
21637
  opacity?: number;
21078
21638
  height?: number;
@@ -21111,6 +21671,10 @@ type ModelProperties = {
21111
21671
  */
21112
21672
  visibleThroughGeometry?: boolean;
21113
21673
  };
21674
+ /**
21675
+ * Padding applied to the camera's visible area so map content stays clear of
21676
+ * UI overlays such as headers, sidebars and bottom sheets.
21677
+ */
21114
21678
  type InsetPadding$2 = {
21115
21679
  top: number;
21116
21680
  left: number;
@@ -21268,6 +21832,11 @@ type MapEvent = {
21268
21832
  * All entities in 3D
21269
21833
  */
21270
21834
  type All3DTypes = Geometry3DTypes | FeatureCollectionObject3D | GroupContainerObject3D;
21835
+ /**
21836
+ * Snapshot of the renderer's internal state passed to {@link ISystemPlugin}
21837
+ * instances on every frame. Exposes the Three.js scene, camera and geometry
21838
+ * registries so plugins can inspect or augment the render pipeline.
21839
+ */
21271
21840
  type RendererState = {
21272
21841
  /**
21273
21842
  * A map of all 3D geometries in the world.
@@ -21483,7 +22052,16 @@ declare class MapLibreOverlay<T$1> extends PubSub<T$1> implements IControl {
21483
22052
  private handleMove;
21484
22053
  private handleMoveEnd;
21485
22054
  private handleError;
22055
+ /**
22056
+ * Called by MapLibre when this overlay is added to a map as an IControl.
22057
+ * @param map - The MapLibre map this overlay is being attached to.
22058
+ * @returns The DOM element rendered by this overlay.
22059
+ */
21486
22060
  onAdd(map: Map$1): HTMLDivElement;
22061
+ /**
22062
+ * Called by MapLibre when this overlay is removed from a map. Detaches all
22063
+ * map listeners, removes the custom layer, and destroys the underlying renderer.
22064
+ */
21487
22065
  onRemove(): void;
21488
22066
  }
21489
22067
  //#endregion
@@ -21498,12 +22076,21 @@ declare const MAPPEDIN_COLORS: {
21498
22076
  };
21499
22077
  //#endregion
21500
22078
  //#region ../packages/common/Mappedin.Logger.d.ts
22079
+ /**
22080
+ * SDK logging verbosity. Ordered from most verbose to least — selecting a level
22081
+ * enables that level plus every level after it.
22082
+ */
21501
22083
  declare enum E_SDK_LOG_LEVEL {
21502
22084
  LOG = 0,
21503
22085
  WARN = 1,
21504
22086
  ERROR = 2,
21505
22087
  SILENT = 3,
21506
22088
  }
22089
+ /**
22090
+ * Set the SDK's global log verbosity. Lower levels include all higher-numbered levels;
22091
+ * `SILENT` suppresses all output.
22092
+ * @param level - The desired verbosity from {@link E_SDK_LOG_LEVEL}.
22093
+ */
21507
22094
  declare function setLoggerLevel(level: E_SDK_LOG_LEVEL): void;
21508
22095
  //#endregion
21509
22096
  //#region src/utils/convert-renderer-core-options.d.ts
@@ -21515,6 +22102,11 @@ declare function setLoggerLevel(level: E_SDK_LOG_LEVEL): void;
21515
22102
  declare function convertToRendererCoreOptions(options: TShow3DMapOptions | undefined): Partial<RendererCoreOptions$1> | undefined;
21516
22103
  //#endregion
21517
22104
  //#region src/api-geojson/multi-floor.d.ts
22105
+ /**
22106
+ * Multi-floor visibility state returned by {@link getMultiFloorState}, describing
22107
+ * the outdoor opacity and per-floor state used when rendering a stacked view of
22108
+ * multiple floors at once.
22109
+ */
21518
22110
  type VisibilityState = {
21519
22111
  outdoorOpacity: number | 'initial';
21520
22112
  floorStates: {
@@ -21522,6 +22114,11 @@ type VisibilityState = {
21522
22114
  state: TFloorState;
21523
22115
  }[];
21524
22116
  };
22117
+ /**
22118
+ * Configuration for the footprint rendered beneath stacked floors in multi-floor
22119
+ * view, controlling its color, opacity, outlines, and the visual treatment of
22120
+ * spaces open to the floor below.
22121
+ */
21525
22122
  type FootprintConfig = {
21526
22123
  /**
21527
22124
  * The color of the footprint.
@@ -21981,6 +22578,23 @@ declare const checkWorkerUrls: () => Promise<false | {
21981
22578
  collision: boolean;
21982
22579
  maplibre: boolean;
21983
22580
  }>;
22581
+ /**
22582
+ * Render a Mappedin map into the given DOM container and return its {@link MapView}.
22583
+ *
22584
+ * This is the main entry point for Mappedin JS. Combine with {@link getMapData}
22585
+ * to load venue data and render an interactive 3D map.
22586
+ *
22587
+ * @param el - The container element to render the map into. Must be attached to the DOM and have non-zero size.
22588
+ * @param mapData - Venue data, typically obtained from {@link getMapData}.
22589
+ * @param options - Optional {@link TShow3DMapOptions} to customize the initial state, UI, and behavior of the map.
22590
+ * @returns A promise that resolves to a {@link MapView} once the map has been initialized.
22591
+ *
22592
+ * @example
22593
+ * ```ts
22594
+ * const mapData = await getMapData({ key: '...', secret: '...', mapId: '...' });
22595
+ * const mapView = await show3dMap(document.getElementById('mappedin-map')!, mapData);
22596
+ * ```
22597
+ */
21984
22598
  declare const show3dMap: (el: HTMLElement, mapData: MapData, options?: TShow3DMapOptions) => Promise<MapView>;
21985
22599
  /**
21986
22600
  * Returns the package version of the SDK.